Chương 8. SQL nâng cao
8 - 1
Chương 8 SQL NÂNG CAO
- Lý thuyết: 2 tiết
- Thực hành: 2 tiết
Chương 8. SQL nâng cao
8 - 2
8.1 Phép toán SET
8.2 Các hàm thời gian
8.3 Mệnh đề GROUP BY nâng cao
8.4 Câu lệnh DML and DDL mở rộng
SQL NÂNG CAO
Chương 8. SQL nâng cao
8 - 3
- Kết hợp kết quả hai hay nhiều câu truy vấn thành
phần thành một kết quả duy nhất (truy vấn ghép).
- Các phép toán tập hợp có cùng thứ tự ưu tiên
8.1 Phép toán SET
Chương 8. SQL nâng cao
8 - 4
- Các phép toán tập hợp
8.1 Phép toán SET
Lấy kết quả có trong câu truy vấn thứ nhất mà
không có trong câu truy vấn thứ hai (sau toán
tử MINUS).
MINUS
Lấy phần giao giữa các kết quả của nhiều câu
truy vấn.
INTERSET
Kết hợp kết quả của nhiều câu truy vấn với
nhau, kể cả các mẫu tin trùng nhau cũng
SELECT Emp_id, Job_id
FROM Emp
UNION
SELECT Emp_id, Job_id
FROM Job_History
8.1 Phép toán SET
SELECT Empid, Jobid
FROM Job_History
SELECT Empid, Jobid
FROM Emp
Chương 8. SQL nâng cao
8 - 7
- Phép toán UNION ALL
Hợp từ nhiều câu truy vấn kể cả sự trùng lặp.
Không sắp xếp mặc định tăng dần như UNION.
Không thể dùng từ khóa DISTINCT trong các câu lệnh
select thành phần.
8.1 Phép toán SET
Chương 8. SQL nâng cao
8 - 8
- Phép toán UNION ALL
Ví dụ: Hiển thị lịch sử công việc của tất cả các nhân viên.
SELECT Emp_id, Job_id, Dept_id
FROM Emp
UNION ALL
SELECT Emp_id, Job_id, Dept_id
FROM Job_History
ORDER BY Emp_id
Số lượng các cột và kiểu dữ liệu phải giống nhau trong
các câu lệnh truy vấn.
Tất cả các cột trong mệnh đề WHERE phải có trong
mệnh đề SELECT
8.1 Phép toán SET
Chương 8. SQL nâng cao
8 - 12
- Phép toán MINUS
Ví dụ: Hiển thị những nhân viên chưa bao giờ thay đổi
công việc.
SELECT Emp_id
FROM emp
MINUS
SELECT Emp_id
FROM job_history
8.1 Phép toán SET
Chương 8. SQL nâng cao
8 - 13
- Một số nguyên tắc chung trên các phép toán tập
hợp
Các biểu thức trong mệnh đề SELECT phải cùng số
lượng và kiểu dữ liệu.
Dùng dấu ngoặc đơn để thay đổi trình tự (ưu tiên) thực
hiện.
Mệnh đề ORDER BY có thể xuất hiện chỉ cuối câu lệnh.
Ví dụ: Lấy thông tin cột Hireday và Hireday cộng thêm 1 năm 2
tháng.
SELECT Hireday, Hireday + TO_YMINTERVAL('01-02')
AS HIRE_DATE_YMININTERVAL
FROM EMP
WHERE Dept_id = 20
8.2 Các hàm thời gian
Chương 8. SQL nâng cao
8 - 18
8.3.1 Toán tử ROLLUP và CUBE
- Toán tử ROLLUP
Đưa ra một tập hợp kết quả bao gồm các hàng được
gộp theo nhóm và những giá trị tổng hợp thành phần
(Subtotal)
8.3 Mệnh đề GROUP BY nâng cao
Chương 8. SQL nâng cao
8 - 19
8.3.1 Toán tử ROLLUP và CUBE
- Toán tử ROLLUP
SELECT [column,] group_function(column). . .
FROM table
[WHERE condition]
[GROUP BY [ROLLUP] group_by_expression]
[HAVING having_expression]
[ORDER BY column]
8.3 Mệnh đề GROUP BY nâng cao
Chương 8. SQL nâng cao
8 - 20
8.3.1 Toán tử ROLLUP và CUBE
- Toán tử ROLLUP
- Xác định mức tổng hợp của một tổng hợp thành phần.
- Nhận biết một giá trị NULL trong biểu thức của một hàng kết
quả là từ bảng cơ sở hay là do toán tử ROLLUP(CUBE) tạo
ra.
SELECT [column,] group_function(column) . .,
GROUPING(expr)
FROM table
[WHERE condition]
[GROUP BY [ROLLUP][CUBE] groupbyexpr]
[HAVING having_expression]
[ORDER BY column]
8.3 Mệnh đề GROUP BY nâng cao
Chương 8. SQL nâng cao
8 - 24
8.3.2 Hàm GROUPING
- Có thể được dùng với toán tử CUBE hoặc ROLLUP
- Có thể tạo ra kết quả tổng hợp trong hàng.
-
Trả về giá trị 0 hoặc 1giúp cho chúng ta hiểu được một giá trị
tổng hợp đa˜ đạt được như thế nào.
Giá trị 0 có nghĩa là biểu thức được sử dụng để tính giá
trị tổng hợp và giá trị NULL là từ bảng cơ sở.
Giá trị 1 có nghĩa là biểu thức không được sử dụng để
tính giá trị tổng hợp và giá trị NULL là do toán tử
ROLLUP hoặc CUBE tạo ra.
8.3 Mệnh đề GROUP BY nâng cao
Chương 8. SQL nâng cao
8 - 25