SLIDE GIẢNG DẠY CƠ SỞ DỮ LIỆU QUAN HỆ VÀ SQL CHƯƠNG 8 SQL NÂNG CAO

39 303 0
SLIDE GIẢNG DẠY  CƠ SỞ DỮ LIỆU QUAN HỆ VÀ SQL  CHƯƠNG 8  SQL NÂNG CAO

Đ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

SQL NÂNG CAO - Lý thuyết: tiết - Thực hành: tiết Chương SQL nâng cao 8-1 SQL NÂNG CAO 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 Chương SQL nâng cao 8-2 8.1 Phép toán SET - Kết hợp kết hai hay nhiều câu truy vấn thành phần thành kết (truy vấn ghép) - Các phép toán tập hợp có cùng thứ tự ưu tiên Chương SQL nâng cao 8-3 8.1 Phép toán SET - Các phép toán tập hợp Tên phép toán Diễn giải UNION Kết hợp kết nhiều câu truy vấn với nhau, có nhiều mẫu tin trùng thì giữ lại mẫu tin UNION ALL Kết hợp kết nhiều câu truy vấn với nhau, kể các mẫu tin trùng giữ lại INTERSET Lấy phần giao các kết nhiều câu truy vấn MINUS Lấy kết có câu truy vấn thứ mà không có câu truy vấn thứ hai (sau toán tử MINUS) 8-4 Chương SQL nâng cao 8.1 Phép toán SET - Phép toán UNION Hợp nhiều câu truy vấn sau loại bỏ trùng lặp Số lượng các cột kiểu liệu phải giống các câu lệnh câu truy vấn   Thực tất các cột chọn Giá trị NULL không bỏ qua kiểm tra tính trùng lặp  Toán tử IN có thứ tự ưu tiên cao phép toán UNION   Mặc định xếp tăng dần cho cột Chương SQL nâng cao 8-5 8.1 Phép toán SET - Phép toán UNION Ví dụ: Hiển thị lịch sử công việc tất các nhân viên Mỗi nhân viên xuất lần (Job_history) SELECT Emp_id, Job_id FROM Emp UNION SELECT Emp_id, Job_id FROM Job_History SELECT Empid, Jobid FROM Emp SELECT Empid, Jobid FROM Job_History Chương SQL nâng cao 8-6 8.1 Phép toán SET - Phép toán UNION ALL Hợp từ nhiều câu truy vấn kể sự trùng lặp  Không xếp mặc định tăng dần UNION Không thể dùng từ khóa DISTINCT các câu lệnh select thành phần  Chương SQL nâng cao 8-7 8.1 Phép toán SET - Phép toán UNION ALL Ví dụ: Hiển thị lịch sử công việc tất 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 Chương SQL nâng cao 8-8 8.1 Phép toán SET - Phép toán INTERSECT Trả kết phần chung kết hai câu truy vấn thành phần Số lượng các cột kiểu liệu phải giống các câu lệnh truy vấn  Giá trị NULL không bỏ qua kiểm tra tính trùng lặp  Chương SQL nâng cao 8-9 8.1 Phép toán SET - Phép toán INTERSECT Ví dụ: Hiển thị nhân viên mà quá khứ họ làm công việc giống công việc SELECT FROM INTERSECT SELECT FROM Emp_id, Job_id emp Emp_id, Job_id job_history Chương SQL nâng cao - 10 8.3 Mệnh đề GROUP BY nâng cao 8.3.2 Hàm GROUPING Ví dụ: Tạo bảng tổng hợp lương cho các phòng ban SELECT Deptid, Jobid, Job, SUM(Salary), GROUPING(Deptid) Gdept, GROUPING(Jobid) Gjob FROM emp GROUP BY ROLLUP(Deptid, Jobid) Chương SQL nâng cao - 25 8.3 Mệnh đề GROUP BY nâng cao 8.3.3 Mệnh đề GROUPING SETS - Là sự mở rộng mệnh đề GROUP BY - Cho phép xác định nhiều nhóm liệu giúp cho việc phân tích liệu đa chiều dễ dàng - Có thể định nghĩa nhiều hàm GROUPING cùng câu truy vấn - Oracle Server tính tất các hàm GROUPING định mệnh đề GROUPING SETS kết hợp kết các hàm GROUPING riêng lẻ Chương SQL nâng cao - 26 8.3 Mệnh đề GROUP BY nâng cao 8.3.3 Mệnh đề GROUPING SETS SELECT [column,] group_function(column)… FROM table [WHERE [GROUP gr_expr] condition] BY GROUPING SETS [HAVING having_expression] [ORDER BY column] Chương SQL nâng cao - 27 8.3 Mệnh đề GROUP BY nâng cao 8.3.3 Mệnh đề GROUPING SETS Ví dụ: Tạo bảng tổng hợp lương theo hai nhóm (Deptid, Jobid) (Jobid, Managerid) SELECT Deptid, Jobid, Managerid, AVG(Salary) FROM Emp GROUP BY GROUPING SETS ((Depid, Joid), (Jobid, Managerid)) Chương SQL nâng cao - 28 8.3 Mệnh đề GROUP BY nâng cao 8.3.3 Mệnh đề GROUPING SETS Câu lệnh truy vấn ví dụ có thể viết lại sau: SELECT Deptid, Jobid, Null As ManagerId, Avg(Salary) FROM Emp GROUP BY Deptid, Jobid UNION ALL SELECT Null As Deptid, Jobid, Managerid, Avg(Salary) FROM Emp GROUP BY Jobid, managerid Chương SQL nâng cao - 29 8.3 Mệnh đề GROUP BY nâng cao 8.3.4 Cột ghép - Là tập hợp các cột, cột coi đơn vị - Nhóm các cột dấu ngoặc đơn để Oracle server xem các cột đó đơn vị quá trình tính toán với toán tử ROLLUP hay CUBE Ví dụ ROLLUP (a, (b,c) , d); (b,c) cột ghép Chương SQL nâng cao - 30 8.3 Mệnh đề GROUP BY nâng cao 8.3.4 Cột ghép Ví dụ Tạo bảng tổng hợp lương theo phòng ban, công việc người quản lý SELECT Deptid, Jobid, Managerid, SUM(Salary) FROM Emp GROUP BY ROLLUP( Deptid, (Jobid, Managerid)) Chương SQL nâng cao - 31 8.4 Câu lệnh DML and DDL mở rộng 8.4.1 Câu lệnh chèn nhiều bảng - Chèn hay nhiều hàng vào nhiều bảng - Thường sử dụng hệ thống kho liệu để chuyển liệu từ hay nhiều nguồn sang tập hợp các bảng đích - Khả cải tiến thực sở liệu Chương SQL nâng cao - 32 8.4 Câu lệnh DML and DDL mở rộng 8.4.1 Câu lệnh chèn nhiều bảng INSERT [ALL] [FIRST] [WHEN condition THEN] [insert_into values] [ELSE] [insert_into values] [insert_into values] (subquery) Chương SQL nâng cao - 33 8.4 Câu lệnh DML and DDL mở rộng 8.4.1 Câu lệnh chèn nhiều bảng - Chèn không điều kiện INSERT ALL INTO Sal_History VALUES(EmpId, hireday, salary) INTO Mgr_History VALUES(EmpId, Mgr, Salary) SELECT Empid, Hireday, Salary, ManagerId Mgr FROM Emp WHERE Empid>200 Chương SQL nâng cao - 34 8.4 Câu lệnh DML and DDL mở rộng 8.4.1 Câu lệnh chèn nhiều bảng - Chèn có điều kiện (ALL) INSERT ALL WHEN Sal>10000 THEN INTO Sal_History VALUES(EmpId, Date, sal) WHEN Mgr>200 THEN INTO Mgr_History VALUES(EmpId, Mgr, Sal) SELECT EmpId, Hireday Date, Salary Sal, Managerid Mgr FROM Emp WHERE Empid>200Chương SQL nâng cao - 35 8.4 Câu lệnh DML and DDL mở rộng 8.4.1 Câu lệnh chèn nhiều bảng - Chèn có điều kiện (FIRST) INSERT FIRST WHEN Sal>25000 THEN INTO Special_Sal VALUES(DepId, Sal) WHEN Date LIKE (‘%00%’) THEN INTO Date_His_00 VALUES(DeptId, Date) WHEN Date LIKE (‘%99%’) THEN INTO Date_His_99 VALUES(DeptId, Date) SELECT DeptId, Hireday Date, Salary Sal, ManagerId Mgr FROM Emp GROUP BY Deptid Chương SQL nâng cao - 36 8.4 Câu lệnh DML and DDL mở rộng 8.4.1 Câu lệnh chèn nhiều bảng - Chèn có điều kiện (FIRST) INSERT FIRST WHEN Sal>25000 THEN INTO Special_Sal VALUES(DepId, Sal) WHEN Date LIKE (‘%00%’) THEN INTO Date_His_00 VALUES(DeptId, Date) WHEN Date LIKE (‘%99%’) THEN INTO Date_His_99 VALUES(DeptId, Date) ELSE INTO Date_His VALUES(DeptId, Date) SELECT DeptId, Hireday Date, Salary Sal, ManagerId Mgr - 37 Chương SQL nâng cao 8.4 Câu lệnh DML and DDL mở rộng 8.4.2 Bảng - Bảng bảng cho phép đọc - Dữ liệu lưu trữ tệp tin bên sở liệu - Sử dụng câu lệnh CREATE TABLE - Có thể truy vấn liệu bằng ngôn ngữ SQL không thể sử dụng DML không tạo các mục Chương SQL nâng cao - 38 Chương SQL nâng cao - 39 .. .SQL NÂNG CAO 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 Chương SQL nâng cao 8- 2 8. 1 Phép toán SET - Kết hợp... Jobid) Chương SQL nâng cao - 25 8. 3 Mệnh đề GROUP BY nâng cao 8. 3.3 Mệnh đề GROUPING SETS - Là sự mở rộng mệnh đề GROUP BY - Cho phép xác định nhiều nhóm liệu giúp cho việc phân tích liệu. .. 20 Chương SQL nâng cao - 17 8. 3 Mệnh đề GROUP BY nâng cao 8. 3.1 Toán tử ROLLUP CUBE - Toán tử ROLLUP Đưa tập hợp kết bao gồm các hàng gộp theo nhóm giá trị tổng hợp thành phần (Subtotal) Chương

Ngày đăng: 29/06/2017, 22:45

Từ khóa liên quan

Mục lục

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan