Ngôn ngữ ĐSQH
– Cách thức truy vấn dữliệu
– Khó khăn cho người sửdụng
Ngôn ngữgiao tiếp CSDL: SQL
– Ngôn ngữcấp cao
– Người sửdụng chỉcần đưa ra nội dung cần truy vấn
– Được phát triển bởi IBM (1970s)
– Ban đầu có tên là SEQUEL (Structured English Query Language)
– Được ANSI (American National Standard Institute) công
nhận và phát triển thành chuẩn:
• SQL-86 (được ISO – International Standards Organization công nhận)
• SQL-92
• SQL-99
28 trang |
Chia sẻ: Mr Hưng | Lượt xem: 1068 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Cơ sở dữ liệu - Ngôn ngữ SQL (Structured Query Language), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đại Học Sư Phạm Tp. Hồ Chí Minh
Khoa Toán – Tin Học
CƠ SỞ DỮ LIỆU
Trần Ngọc Bảo
Email: tnbao.dhsp@gmail.com
Ngôn ngữ SQL
(Structured Query Language)
• Giới thiệu về SQL
• Truy vấn dữ liệu với câu lệnh SELECT
Đại Học Sư Phạm Tp. Hồ Chí Minh
Khoa Toán – Tin Học CƠ SỞ DỮ LIỆU
Ngôn ngữ SQL
(Structured Query Language)
3TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (3) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Giới thiệu về SQL (tt)
• Ngôn ngữ ĐSQH
– Cách thức truy vấn dữ liệu
– Khó khăn cho người sử dụng
• Ngôn ngữ giao tiếp CSDL: SQL
– Ngôn ngữ cấp cao
– Người sử dụng chỉ cần đưa ra nội dung cần truy vấn
– Được phát triển bởi IBM (1970s)
– Ban đầu có tên là SEQUEL (Structured English Query Language)
– Được ANSI (American National Standard Institute) công
nhận và phát triển thành chuẩn:
• SQL-86 (được ISO – International Standards Organization công nhận)
• SQL-92
• SQL-99
4TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (4) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
• SEQUEL Æ SQL (Structured Query Language -cuối 70s) gồm:
– Định nghĩa dữ liệu (DDL)
– Thao tác dữ liệu (DML)
– Định nghĩa khung nhìn
– Ràng buộc toàn vẹn
– Phân quyền và bảo mật
– Điều khiển giao tác
• SQL sử dụng thuật ngữ
– Bảng ~ quan hệ
– Cột ~ thuộc tính
– Dòng ~ bộ
Lý thuyết : Chuẩn SQL-92
Ví dụ : SQL Server
Giới thiệu về SQL (tt)
5TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (5) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Truy vấn dữ liệu
• Là ngôn ngữ rút trích dữ liệu thỏa một số
điều kiện nào đó
• Dựa trên
• Lệnh cơ bản để rút trích thông tin từ
CSDL: SELECT
• Lệnh SELECT không hoàn toàn giống
phép chọn trong ĐSQH:
– Cho phép có nhiều dòng trùng nhau trong kết
quả truy vấn
Phép toán ĐSQH Một số bổ sung+
6TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (6) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
CÚ PHÁP CÂU LỆNH SELECT
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
7TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (7) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Truy vấn cơ bản
• Gồm 3 mệnh đề
–
• Tên các cột cần được hiển thị trong kết quả truy vấn
–
• Tên các bảng liên quan đến câu truy vấn
–
• Biểu thức boolean xác định dòng nào sẽ được rút trích
• Nối các biểu thức: AND, OR, và NOT
• Phép toán: , ≤ , ≥ , ≠ , =, LIKE và BETWEEN
SELECT
FROM
WHERE
Tương ứng phép chiếu
Tương ứng phép chọn
Tương ứng phép tích, kết
8TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (8) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Truy vấn cơ bản (tt)
SELECT
FROM
WHERE σ
π
×
SELECT L
FROM R
WHERE C
πL (σC (R))
• SQL và ĐSQH
9TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (9) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Yêu cầu truy vấn: Liệt kê danh sách sinh viên thuộc ngành
“SP101”
1. SINHVIEN (MASV, HOTEN, PHAI, NGAYSINH, MANGANH)
SP1041/4/1979NuHo Anh ThuK29.104.001
SP2014/5/1979NuTran Ngoc DungK29.201.002
SP2013/8/1979NamLy ThanhK29.201.001
SP10310/12/1979NuPham Khanh NhuK29.103.002
SP1033/2/1979NamHan Quoc VietK29.103.001
SP1011/10/1979NuPhan Anh KhanhK29.101.002
SP10110/10/1979NamNguyen Cong PhuK29.101.001
MANGANHNGAYSINHPHAIHOTENMASV
Thực hiện CHỌN các dòng trong quan hệ SinhVien thỏa
mãn điều kiện MANGANH = ‘SP101’
Phép chọn
10TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (10) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Yêu cầu truy vấn: Liệt kê danh sách sinh viên thuộc ngành
“SP101”
Phép chọn
Thực hiện CHỌN các dòng trong quan hệ SinhVien thỏa
mãn điều kiện MANGANH = ‘SP101’
σ MANGANH = ‘SP101’ (SINHVIEN) Ngôn ngữ ĐSQL
Ngôn ngữ SQL
SELECT *
FROM SINHVIEN
WHERE MANGANH = ‘SP101’
Lấy tất cả các cột của quan
hệ kết quả
11TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (11) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Yêu cầu truy vấn: Liệt kê danh sách sinh viên (MASV, HOTEN,
NGAYSINH)
1. SINHVIEN (MASV, HOTEN, PHAI, NGAYSINH, MANGANH)
SP1041/4/1979NuHo Anh ThuK29.104.001
SP2014/5/1979NuTran Ngoc DungK29.201.002
SP2013/8/1979NamLy ThanhK29.201.001
SP10310/12/1979NuPham Khanh NhuK29.103.002
SP1033/2/1979NamHan Quoc VietK29.103.001
SP1011/10/1979NuPhan Anh KhanhK29.101.002
SP10110/10/1979NamNguyen Cong PhuK29.101.001
MANGANHNGAYSINHPHAIHOTENMASV
Thực hiện CHỌN các CỘT (MASV, HOTEN, NGAYSINH) trong
quan hệ SinhVien
Phép chiếu
12TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (12) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Ngôn ngữ ĐSQL
Ngôn ngữ SQL
SELECT MASV, HOTEN, NGAYSINH
FROM SINHVIEN
Phép chiếu
Yêu cầu truy vấn: Liệt kê danh sách sinh viên (MASV, HOTEN,
NGAYSINH)
Thực hiện PHÉP CHIẾU các CỘT (MASV, HOTEN, NGAYSINH)
trong quan hệ SinhVien
π MASV, HOTEN, NGAYSINH (SINHVIEN)
13TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (13) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
SP1041/4/1979NuHo Anh ThuK29.104.001
SP2014/5/1979NuTran Ngoc DungK29.201.002
SP2013/8/1979NamLy ThanhK29.201.001
SP10310/12/1979NuPham Khanh NhuK29.103.002
SP1033/2/1979NamHan Quoc VietK29.103.001
SP1011/10/1979NuPhan Anh KhanhK29.101.002
SP10110/10/1979NamNguyen Cong PhuK29.101.001
MANGANHNGAYSINHPHAIHOTENMASV
2. Cách 2: SinhVien Nganh 7 x 1 = 7 dòng
11002Sư phạm AnhSP105
10006Sư Phạm LýSP104
1608Khoa học máy tínhCNTT
12004Sư Phạm LýSP102
15003Sư Phạm HóaSP201
10005Sư Phạm ToánSP101
8008Sư Phạm Tin họcSP103
TSSVSOCDTENNGANHMANGANH
Yêu cầu truy vấn: Liệt kê danh sách (MaSV, HoTen, NgaySinh,
TENNGANH) sinh viên
Thực hiện PHÉP KẾT thuộc tính MANGANH của quan hệ
SINHVIEN với MANGANH của quan hệ NGANH
Phép kết
14TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (14) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Yêu cầu truy vấn: Liệt kê danh sách (MaSV, HoTen, NgaySinh,
TENNGANH) sinh viên
Thực hiện PHÉP KẾT thuộc tính MANGANH của quan hệ
SINHVIEN với MANGANH của quan hệ NGANH
Phép kết
∏MASV, HOTEN, NGAYSINH, TENNGANH (SINHVIEN NGANH)
SINHVIEN.MANGANH = NGANH.MANGANH
Ngôn ngữ ĐSQL
Ngôn ngữ SQL
SELECT MASV, HOTEN, NGAYSINH, TENNGANH
FROM SINHVIEN JOIN NGANH ON
SINHVIEN.MANGANH = NGANH.MANGANH
15TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (15) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Sử dụng bí danh (Alias – AS)
TRƯỜNG HỢP CÁC THUỘC TÍNH Ở CÁC QUAN HỆ KHÁC NHAU BỊ
TRÙNG TÊN
SỬ DỤNG TÊN BÍ DANH
SELECT MASV, HOTEN, NGAYSINH, TENNGANH
FROM SINHVIEN JOIN NGANH ON
SINHVIEN.MANGANH = NGANH.MANGANH
SELECT MASV, HOTEN, NGAYSINH, TENNGANH
FROM SINHVIEN AS SV JOIN NGANH AS N ON
SV.MANGANH = N.MANGANH
16TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (16) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Kết hợp các phép toán
Liệt kê danh sách chuyên đề (MACD, TENCD, SOSVTD) cần phải
học của sinh viên ngành công nghệ phần mềm (TENNGANH =
“CÔNG NGHỆ PHẦN MỀM”)
SELECT CD.MACD, TENCD, SOSVTD
FROM (NGANH AS N JOIN CD_NGANH AS CDN ON
N.MANGANH = CDN.MANGANH ) JOIN CHUYENDE AS CD ON
CD.MACD = CDN.MACD
WHERE TENNGANH = ‘CÔNG NGHỆ PHẦN MỀM’
17TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (17) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Hàm gộp
• COUNT
– COUNT(*) đếm số dòng
– COUNT() đếm số giá trị khác
NULL của thuộc tính
– COUNT(DISTINCT ) đếm số
giá trị khác nhau và khác NULL của thuộc tính
• MIN
• MAX
• SUM
• AVG
• Các hàm kết hợp được đặt ở mệnh đề
SELECT
18TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (18) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Gom nhóm
• Cú pháp
• Sau khi gom nhóm thì kết quả là
– Nhóm các bộ có cùng giá trị tại các
thuộc tính gom nhóm
SELECT
FROM
WHERE
GROUP BY
19TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (19) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Phép gom nhóm (tt)
•Ví dụ
ISUM(C)(R)
A B
α
R
α
2
4
β
γ
2
2
C
7
7
3
10
Kết quả
ISUM(C)(R) = 27
SELECT SUM(C)
FROM R
20TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (20) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Phép gom nhóm (tt)
•Ví dụ
A B
α
R
α
2
4
β
γ
2
2
C
7
7
3
10
AISUM(C)(R) Kết quả
10γ
3β
14α
SUM(C)A
SELECT A, SUM(C)
FROM R
GROUP BY A
21TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (21) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Liệt kê danh sách tên chuyên đề (TENCD) và số lần
được mở tương ứng theo từng ngành (TENNGANH)
Phép gom nhóm
SELECT TENNGANH, TENCD, COUNT(CDM.MACD)
FROM ((NGANH AS N JOIN CD_NGANH AS CDN ON N.MANGANH =
CDN.MANGANH ) JOIN CHUYENDE AS CD ON CD.MACD = CDN.MACD)
JOIN CD_MO CDM ON CDM.MACD = CD.MACD
GROUP BY TENNGANH, TENCD
22TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (22) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Điều kiện trên nhóm
• Cú pháp
SELECT
FROM
WHERE
GROUP BY
HAVING
23TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (23) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Nhận xét
• Mệnh đề GROUP BY
– Các thuộc tính trong mệnh đề SELECT (trừ
những thuộc tính trong các hàm kết hợp) phải
xuất hiện trong mệnh đề GROUP BY
• Mệnh đề HAVING
– Sử dụng các hàm kết hợp trong mệnh đề
SELECT để kiểm tra một số điều kiện nào đó
– Chỉ kiểm tra điều kiện trên nhóm, không là điều
kiện lọc trên từng bộ
– Sau khi gom nhóm thì điều kiện trên nhóm mới
được thực hiện
24TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (24) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Nhận xét (tt)
• Thứ tự thực hiện câu truy vấn có mệnh đề
GROUP BY và HAVING
– (1) Chọn ra những dòng thỏa điều kiện trong mệnh
đề WHERE
– (2) Những dòng này sẽ được gom thành nhiều nhóm
tương ứng với mệnh đề GROUP BY
– (3) Áp dụng các hàm kết hợp cho mỗi nhóm
– (4) Bỏ qua những nhóm không thỏa điều kiện trong
mệnh đề HAVING
– (5) Rút trích các giá trị của các cột và hàm kết hợp
trong mệnh đề SELECT
25TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (25) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Với từng ngành học (MANGANH, TENNGANH), liệt
kê danh sách tên chuyên đề (TENCD) có số lần
được mở lớn hơn 3
Điều kiện gom nhóm
SELECT N.MANGANH, TENNGANH, TENCD, COUNT
(CDM.MACD)
FROM ((NGANH AS N JOIN CD_NGANH AS CDN ON
N.MANGANH = CDN.MANGANH)
JOIN CHUYENDE AS CD ON CD.MACD = CDN.MACD)
JOIN CD_MO AS CDM ON CD.MACD = CDM.MACD
GROUP BY N.MANGANH, TENNGANH, TENCD
HAVING COUNT (CDM.MACD) > 3
26TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (26) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
QUI TRÌNH XỬ LÝ CÂU LỆNH SELECT
SELECT Col1,Col2,Col3,..ColN (1)
FROM TableA, TableB, (2)
WHERE DK1 AND DK2 AND DK3 (3)
GROUP BY ColA, ColB, ColC (4)
HAVING DKG1 AND DKG2 AND (5)
ORDER BY ColX, ColY, ColZ, (6)
(2) Æ (3) Æ (4) Æ (5) Æ (6) Æ (1)
27TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (27) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
QUI TRÌNH XỬ LÝ CÂU LỆNH SELECT
CSDL
FROM
Tập kết quả 1
WHERE
Tập kết quả 3
GROUP BY
Tập kết quả 2
HAVING
ORDER BY
Tập kết quả 4
SELECT
Tập kết quả 5
KẾT QUẢ
CUỐI CÙNG
28TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (28) - I I . ( )
B
B
À
À
I
G
I
I
G
I
Ả
Ả
N
G
H
N
G
H
Ọ
Ọ
C
P
H
C
P
H
Ầ
Ầ
N
C
Ơ
S
N
C
Ơ
S
Ở
Ở
D
D
Ữ
Ữ
L
I
L
I
Ệ
Ệ
U
U
N
G
Ô
N
N
G
N
G
Ô
N
N
G
Ữ
Ữ
S
Q
L
S
Q
L
Các file đính kèm theo tài liệu này:
- tn_sql_0162.pdf