Cơ sở dữ liệu 1
Chương 6: Ngôn ngữ truy
vấn có cấu trúc (SQL)
Giảng viên: Nguyễn Công Thương
Nội dung
Truy vấn từ một bảng
Mệnh đề SELECT và FROM
Mệnh đề WHERE
Mệnh đề GROUP BY + HAVING
Thứ tự thực thi câu truy vấn
Truy vấn từ nhiều bảng
Kết theta
Kết nội
Kết ngoại
Truy vấn lồng nhau
2
3
Ngôn ngữ truy vấn có cấu trúc
Structured Query Language (SQL)
FROM table_name
[WHERE row_conditions];
VD: Truy vấn ngày sinh và địa chỉ của những người
có tên ‘Nguyen Bao Hung’:
SELECT NgSinh, DChi
FROM NHANVIEN
WHERE HoNV = ‘Nguyen’ AND Tenlot = ‘Bao’
AND TenNV = ‘Hung’;
6
LIKE và NOT LIKE
Cấu trúc:
[NOT] LIKE ‘string’
Ký tự đại diện
‘_’: Một ký tự bất kỳ
‘%’: Số lượng ký tự bất kỳ
[a-d]: một ký tự trong khoảng
Ví dụ:
SELECT MaNV, TenNV
FROM NHANVIEN
WHERE TenNV LIKE ‘H%’;
7
BETWEEN và NOT BETWEEN
FROM NHANVIEN;
10
Hàm gộp (Aggregate function)
Ghi chú: hàm COUNT(*) trả về số dòng kết quả
11
Mệnh đề GROUP BY
SELECT list_of_expressions
FROM table_name
[WHERE row_conditions]
[GROUP BY list_of_columns];
Ví dụ:
SELECT Phong, COUNT (MaNV), AVG (Luong)
FROM NHANVIEN
GROUP BY Phong;
12
Mệnh đề HAVING
Điều kiện trên hàm gộp:
SELECT list_of_expressions
FROM table_name
[WHERE row_conditions]
[GROUP BY list_of_columns
[HAVING aggregate_conditions]];
13
Mệnh đề HAVING (2)
Ví dụ: Tìm Phòng có số lượng nhân viên
nhiều hơn 2:
[HAVING aggregate_conditions]]
[ORDER BY list_of_columns [ASC/DESC]];
16
Mệnh đề ORDER BY (2)
Ví dụ
SELECT MaNV, HoNV, Tenlot, TenNV, NgSinh
FROM NHANVIEN
WHERE Phong = 5
ORDER BY TenNV, HoNV, NgSinh DESC;
17
Thứ tự thực thi câu truy vấn
18
Truy vấn nhiều bảng
Kết theta
Kết tự nhiên (kết nội)
Kết ngoại
Truy vấn lồng nhau (truy vấn con)
Truy vấn con có tương quan
19
Kết theta
Cấu trúc:
SELECT list_of_expressions
FROM table_names
[ORDER BY list_of_columns];
22
Kết nội (2)
Ví dụ: Tìm MaNV, Họ tên và tên phòng ban của tất cả
nhân viên
SELECT MaNV, HoNV, Tenlot, TenNV, TenPB
FROM NHANVIEN INNER JOIN PHONGBAN
ON NHANVIEN.Phong=PHONGBAN.MaPB;
Ví dụ: Tìm MaNV, Họ tên và tên phòng ban của những
nhân viên làm việc cho phòng “Nghiên cuu”
SELECT MaNV, HoNV, Tenlot, TenNV, TenPB
FROM NHANVIEN INNER JOIN PHONGBAN
ON NHANVIEN.Phong=PHONGBAN.MaPB
WHERE TenPB=‘Nghien cuu’;
23
Kết ngoại
Cấu trúc:
SELECT list_of_expressions
FROM R LEFT/RIGHT/FULL OUTER JOIN S
ON R.A = S.B
[WHERE row_conditions]
[GROUP BY list_of_columns
[HAVING aggregate_conditions]];
[ORDER BY list_of_columns];
24
Kết ngoại (2)