1. Trang chủ
  2. » Công Nghệ Thông Tin

Quản trị cơ sở dữ liệu Oracle 02 data type – function – subquery

36 213 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 129,52 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

– Kiểu dữ liệu data type– Hàm functions – Mệnh đề Group by group By clause – Truy vấn con sub-queries... Hàm Ngày tháng tt• CURRENT_DATE trả về ngày tháng hiện tại nơi mà người dùng đang

Trang 1

Data type – Function – Subquery

Trang 2

– Kiểu dữ liệu (data type)

– Hàm (functions)

– Mệnh đề Group by (group By clause)

– Truy vấn con (sub-queries)

Trang 3

Kiểu dữ liệu (data type)

VARCHAR2(n) Dữ liệu kiểu ký tự, n<=4000

CHAR(n) Dữ liệu kiểu ký tự, kích thước cố đinh, n<=2000

NUMBER Kiểu số nguyên, số ký số tối đa là 38 ký số

NUMBER(p) Kiểu số nguyên, với số ký số tối đa là p

NUMBER(p,s) Kiểu số thực, tối đa p ký số, s số thập phân p≤38, -84 ≤ s ≤ 127.Ví dụ: số 7456123, khai báo kiểu number (7, -2)

= 7456100 DATE Kiểu ngày, lưu ngày từ 1/1/4712 BC -> 31/12/9999

LONG Kiểu ký tự (Do not create tables with LONG columns Use LOB columns (CLOB, NCLOB) instead LONG

columns are supported only for backward compatibility.) RAW Chuỗi nhị phân dài tối đa 2000 bytes

LONG RAW Chuỗi nhị phân dài tối đa 2GB

BLOB (Bynary Large Object) có độ dài ≤ 4GB

CLOB (Character Large Object) có độ dài ≤ 4GB

BFILE Chứa con trỏ chỉ đến một tập tin nhị phân ở ngoài DB

Trang 4

Hàm

Trang 5

Hàm chuyển đổi chữ hoa, chữ thường

Trang 6

Ví dụ: Hàm chuyển đổi chữ hoa, thường

SELECT last_name, job_id, salary

Trang 8

Chỉ lấy đến vị trí thứ 2 sau dấu chấm

Trang 9

Ví dụ: TRUNC

Kết quả: 45 (zero decimal places)

• Ghi chú: DUAL là một table giả, được dùng để xem kết quả từ một hàm hoặc từ

một tính toán nào đó

SELECT TRUNC(45.923)

Trang 10

Hàm Ngày tháng

• ADD_MONTHS (date, integer)

– trả về ngày tháng đã cộng với một số nguyên (integer) vào tháng.

– Ví dụ

• add_months('01-Aug-03', 3) = 01-Nov-03

• add_months('01-Aug-03', -3) = 01-MAY-03

• add_months('31-Jan-03', 1) = 28-FEB-03

• MONTHS_BETWEEN (date1, date2)

– Trả về số tháng giữa date1 và date2

– Ví dụ: months_between('02-Feb-1995', '01-Jan-1995’) = 1.03225806

Trang 11

Hàm Ngày tháng (tt)

• ROUND(date [, fmt ]): trả về ngày tháng đã được làm tròn đến hàng đơn vị được xác định bởi định dạng ngày tháng (fmt)

– Ví dụ

• ROUND (TO_DATE ('27-OCT-00'),'YEAR') = 01-JAN-01

• ROUND(TO_DATE('13-OCT-06'), 'MONTH') = 01-OCT-06.

Trang 12

Hàm Ngày tháng (tt)

• CURRENT_DATE trả về ngày tháng hiện tại nơi mà người dùng đang truy vấn

• NEXT_DAY (date, char)

– Trả về ngày của tuần đầu tiên được xác định bởi char, và phải sau date.

– Ví dụ:

• NEXT_DAY('02-FEB-2001','TUESDAY') = 06-FEB-2001

Trang 14

Hàm Ngày tháng (tt)

EXTRACT( {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } FROM datetime_value_expression)

• Ví dụ:

– EXTRACT(YEAR FROM DATE '1998-03-07') = 1998

• TO_CHAR (date, fmt): chuyển đổi ngày tháng thành chuỗi có kiểu dữ liệu varchar2 theo định dạng fmt

Trang 15

Hàm Ngày tháng (tt)

• TO_DATE (char, fmt): chuyển đổi một chuỗi sang kiểu ngày tháng theo định dạng fmt

• Ví dụ:

– TO_DATE('2003/07/09', 'yyyy/dd/mm') = 09-JUL-03

– TO_DATE('070903', 'MMDDYY') = 09-JUL-03

– TO_DATE('20020315', 'yyyymmdd') = 15-MAR-02

Trang 16

Hàm NVL

• Hàm NVL dùng để chuyển đổi giá trị null thành một giá trị cụ thể nào đó

• Kiểu dữ liệu được chuyển đổi phải phù hợp với kiểu dữ liệu ban đầu

– NVL(commision_pct, 0)

– NVL(hire_date, ’01-Jan-09’)

– NVL(job_title, ‘No Job Yet’)

Trang 18

Hàm gom nhóm với giá trị null

• Hàm gom nhóm bỏ qua giá trị null trong cột

• Hàm NVL giúp hàm gom nhóm tính toán cả những giá trị null

employees

Trang 21

Truy vấn không hợp lệ với hàm GROUP

SELECT department_id, job_id, COUNT(name)

Trang 22

Truy vấn không hợp lệ với hàm GROUP (tt)

• Không được sử dụng mệnh đề WHERE để lọc dữ liệu trong nhóm

Dùng mệnh đề HAVING để lọc dữ liệu trong nhóm

SELECT department_id, AVG(salary) FROM employees

WHERE AVG(salary) > 8000 GROUP BY department_id;

SELECT department_id, AVG(salary) FROM employees

GROUP BY department_id HAVING AVG(salary) > 8000

Trang 23

Hàm gom nhóm lồng nhau

• Hiển thị lương trung bình cao nhất:

• Ghi chú: mệnh đề GROUP BY là bắt buộc khi dùng hàm gom nhóm lồng nhau

SELECT MAX(AVG(salary))

FROM employees

GROUP BY department_id

Trang 24

Truy vấn con

Trang 25

Truy vấn con (Nested SELECT)

• Truy vấn con (subquery) thực thi trước truy vấn chính (main query)

• Kết quả của truy vấn con được dùng bởi main query

SELECT select_list FROM table

WHERE expr operator

Trang 27

Sư dụng hàm gom nhóm trong một truy vấn con

• Truy vấn con trả về một giá trị, và được truy vấn ngoài (main query) sử dụng

SELECT last_name, job_id, salary FROM employees

WHERE salary =

(SELECT MIN(salary) FROM employees);

Trang 28

Truy vấn sau sai ở đâu?

• Truy vấn co trả về nhiều giá trị, mỗi giá trị cho một nhóm Toán tử bằng (=) là toán tử so sánh một dòng (single-row), nó chỉ chấp nhận một giá trị

SELECT last_name, salary FROM employees

WHERE salary =

(SELECT MIN(salary) FROM employees GROUP BY department_id);

Trang 29

Truy vấn con trả về nhiều dòng

Trang 30

Toán tử BETWEEN

• Sử dụng toán tử BETWEEN để hiển thị dữ liệu dựa trên phạm vi các giá trị

SELECT last_name, salary

FROM employees

WHERE salary BETWEEN 2500 AND 3500;

Trang 31

Toán tử IN

• Dùng toán tử IN để kiểm tra giá trị trong một danh sách

SELECT last_name, salary, manager_id FROM employees

WHERE manager_id IN (100, 101, 201);

Trang 32

Sử dụng điều kiện NULL

Kiểm tra null với toán tử IS NULL

Note: không được sử dụng =

– null không dùng để so sánh bằng (=) hoặc không bằng (<>) với bất kỳ giá trị nào (A null is not equal, or unequal to any value)

SELECT last_name, manager_id FROM employees

WHERE manager_id IS NULL;

Trang 33

Mệnh đề ORDER BY

• Sắp xếp những dòng dữ liệu được lấy ra sử dụng mệnh đề ORDER BY

– ASC: sắp xếp theo thứ tự tăng dần (mặc định)

– DESC: sắp xếp theo thứ tự giảm dần

• Mệnh đề ORDER BY được thực hiện cuối cùng trong câu lệnh SELECT

SELECT last_name, department_id, hire_date FROM employees

ORDER BY hire_date;

Trang 34

Sắp xếp

• Sắp xếp theo thứ tự giảm dần

• Sắp xếp theo bí danh của cột (column alias)

SELECT last_name, department_id, hire_date FROM employees

ORDER BY hire_date DESC;

SELECT last_name, salary*12 annsal FROM employees

ORDER BY annsal;

Trang 36

Sử dụng lệnh DEFINE

Sử dụng lệnh DEFINE để tạo và gán giá trị cho một biến (variable).

Sử dụng lệnh UNDEFINE để loại bỏ một biến

Ngày đăng: 29/08/2017, 10:15

TỪ KHÓA LIÊN QUAN