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

Bài giảng Cơ sở dữ liệu quan hệ và SQL: Chương 8 SQL nâng cao - CĐ CNTT Hữu nghị Việt Hàn

39 15 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 39
Dung lượng 776,55 KB

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

Nội dung

Tìm hiểu kiến thức cơ sở dữ liệu với Bài giảng Cơ sở dữ liệu quan hệ và SQL: Chương 8 SQL nâng cao gồm Phép toán SET, Các hàm thời gian, Mệnh đề GROUP BY nâng cao...

Trang 1

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

Trang 2

Chương 8 SQL nâng cao 8 - 2

Trang 3

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

Trang 4

Chương 8 SQL nâng cao 8 - 4

Trang 5

Chương 8 SQL nâng cao 8 - 5

- Phép toán UNION

Hợp nhiều câu truy vấn sau khi đã loại bỏ trùng lặp.

 Số lượng các cột và kiểu dữ liệu phải giống nhau trongcác câu lệnh trong câu truy vấn

 Thực hiện trên tất cả các cột được chọn

 Giá trị NULL không được bỏ qua khi kiểm tra tính trùnglặp

 Toán tử IN có thứ tự ưu tiên cao hơn phép toán UNION

 Mặc định sắp xếp tăng dần cho cột đầu tiên trong mệnh

đề SELECT

8.1 Phép toán SET

Trang 6

Chương 8 SQL nâng cao 8 - 6

Trang 7

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

Trang 8

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

Trang 9

Chương 8 SQL nâng cao 8 - 9

Trang 10

Chương 8 SQL nâng cao 8 - 10

Trang 11

Chương 8 SQL nâng cao 8 - 11

- Phép toán MINUS

Trả về kết quả trong câu truy vấn thứ nhất mà

không có trong câu truy vấn thứ hai.

 Số lượng các cột và kiểu dữ liệu phải giống nhau trongcá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

Trang 12

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_idFROM emp

MINUS

SELECT Emp_idFROM job_history

8.1 Phép toán SET

Trang 13

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

8.1 Phép toán SET

Trang 14

Chương 8 SQL nâng cao 8 - 14

- Hàm CURRENT_DATE

Trả về ngày hiện tại trong phần thời gian khu vực

CURRENT_DATE

- Biểu thức EXTRACT

Trả về giá trị của trường ngày tháng từ một biểu

thức ngày tháng hay giá trị khoảng thời gian

EXTRACT(expr)

8.2 Các hàm thời gian

Trang 15

Chương 8 SQL nâng cao 8 - 15

- Biểu thức EXTRACT

Ví dụ: Lấy giá trị tháng trong cột Hiredate

SELECT firstname, Hireday,

EXTRACT(MONTH FROM Hireday)FROM emp

WHERE Manager_id = 100

8.2 Các hàm thời gian

Trang 16

Chương 8 SQL nâng cao 8 - 16

Trang 17

Chương 8 SQL nâng cao 8 - 17

WHERE Dept_id = 20

8.2 Các hàm thời gian

Trang 18

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

Trang 19

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) .

Trang 20

Chương 8 SQL nâng cao 8 - 20

8.3.1 Toán tử ROLLUP và CUBE

- Toán tử ROLLUP

Ví dụ: Tạo bảng tổng hợp lương mỗi nhóm công việc trongmột phòng ban và tất cả các phòng ban

SELECT Deptid, Jobid, SUM(Salary)FROM Emp

GROUP BY ROLLUP(Deptid, Jobid)

8.3 Mệnh đề GROUP BY nâng cao

Trang 21

Chương 8 SQL nâng cao 8 - 21

8.3.1 Toán tử ROLLUP và CUBE

- Toán tử CUBE

Đưa ra bảng giá trị tổng hợp dạng bảng báo cáo SELECT [column,] group_function(column) FROM table

Trang 22

Chương 8 SQL nâng cao 8 - 22

8.3.1 Toán tử ROLLUP và CUBE

- Toán tử CUBE

Ví dụ: Tạo bảng tổng hợp lương dạng bảng báo cáo

SELECT Dept_id, Job_id, SUM(Salary)FROM Emp

GROUP BY CUBE(Dept_id, Job_id)

8.3 Mệnh đề GROUP BY nâng cao

Trang 23

Chương 8 SQL nâng cao 8 - 23

8.3.2 Hàm GROUPING

- 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ạora

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

Trang 24

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

Trang 25

Chương 8 SQL nâng cao 8 - 25

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) GjobFROM emp

GROUP BY ROLLUP(Deptid, Jobid)

8.3 Mệnh đề GROUP BY nâng cao

Trang 26

Chương 8 SQL nâng cao 8 - 26

8.3.3 Mệnh đề GROUPING SETS

- Là sự mở rộng của mệnh đề GROUP BY.

- Cho phép xác định nhiều nhóm dư˜ liệu giúp cho

việc phân tích dư˜ liệu đa chiều dê˜ dàng hơn.

- Có thể định nghĩa nhiều hàm GROUPING trong

cùng một câu truy vấn

- Oracle Server tính tất cả các hàm GROUPING chỉ

định trong mệnh đề GROUPING SETS và kết hợp kết quả của các hàm GROUPING riêng lẻ với phép toán UNION ALL

8.3 Mệnh đề GROUP BY nâng cao

Trang 27

Chương 8 SQL nâng cao 8 - 27

8.3.3 Mệnh đề GROUPING SETS

SELECT [column,] group_function(column)…

FROM table [WHERE condition]

[GROUP BY GROUPING SETS gr_expr]

[HAVING having_expression]

[ORDER BY column]

8.3 Mệnh đề GROUP BY nâng cao

Trang 28

Chương 8 SQL nâng cao 8 - 28

8.3.3 Mệnh đề GROUPING SETS

Ví dụ: Tạo bảng tổng hợp lương theo hai nhóm là (Deptid,

Jobid) và (Jobid, Managerid)

SELECT Deptid, Jobid, Managerid, AVG(Salary)FROM Emp

GROUP BY GROUPING SETS ((Depid, Joid), (Jobid, Managerid))

8.3 Mệnh đề GROUP BY nâng cao

Trang 29

Chương 8 SQL nâng cao 8 - 29

8.3.3 Mệnh đề GROUPING SETS

Câu lệnh truy vấn trong ví dụ trên có thể được viết lại như 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

8.3 Mệnh đề GROUP BY nâng cao

Trang 30

Chương 8 SQL nâng cao 8 - 30

8.3.4 Cột ghép

- Là một tập hợp các cột, mỗi cột coi như một đơn vị.

- Nhóm các cột trong dấu ngoặc đơn để Oracle server xem các cột đó như một đơn vị trong quá trình tính

toán với toán tử ROLLUP hay CUBE

Ví dụ ROLLUP (a, (b,c) , d); (b,c) là một cột ghép

8.3 Mệnh đề GROUP BY nâng cao

Trang 31

Chương 8 SQL nâng cao 8 - 31

GROUP BY ROLLUP( Deptid, (Jobid, Managerid))

8.3 Mệnh đề GROUP BY nâng cao

Trang 32

Chương 8 SQL nâng cao 8 - 32

8.4.1 Câu lệnh chèn nhiều bảng

- Chèn một hay nhiều hàng vào trong nhiều bảng.

- Thường được sử dụng trong hệ thống kho dư˜ liệu để chuyển dư˜ liệu từ một hay nhiều nguồn sang một tập hợp các bảng đích

- Khả năng cải tiến thực hiện trong cơ sở dư˜ liệu.

8.4 Câu lệnh DML and DDL mở rộng

Trang 33

Chương 8 SQL nâng cao 8 - 33

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)

8.4 Câu lệnh DML and DDL mở rộng

Trang 34

Chương 8 SQL nâng cao 8 - 34

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

8.4 Câu lệnh DML and DDL mở rộng

Trang 35

Chương 8 SQL nâng cao 8 - 35

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 THENINTO 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 EmpWHERE Empid>200

8.4 Câu lệnh DML and DDL mở rộng

Trang 36

Chương 8 SQL nâng cao 8 - 36

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 THENINTO 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 EmpGROUP BY Deptid

8.4 Câu lệnh DML and DDL mở rộng

Trang 37

Chương 8 SQL nâng cao 8 - 37

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 THENINTO 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

FROM Emp

8.4 Câu lệnh DML and DDL mở rộng

Trang 38

Chương 8 SQL nâng cao 8 - 38

8.4.2 Bảng ngoài

- Bảng ngoài là những bảng chỉ cho phép đọc

- Dữ liệu được lưu trữ trong một tệp tin bên ngoài cơ sở

dữ liệu.

- Sử dụng câu lệnh CREATE TABLE

- Có thể truy vấn dữ liệu bằng ngôn ngữ SQL nhưng không thể sử dụng DML và không tạo được các chỉ

mục

8.4 Câu lệnh DML and DDL mở rộng

Trang 39

Chương 8 SQL nâng cao 8 - 39

Ngày đăng: 11/05/2021, 00:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w