Tải bản đầy đủ (.ppt) (44 trang)

Cơ sở dữ liệu 1_Chương 6: Ngôn ngữ truy vấn có cấu trúc (SQL) docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (325.28 KB, 44 trang )

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)


Tên ban đầu là SEQUEL (Structured English QUEry
Language)

Các thành phần:

DDL: Create, Drop, Alter …

DML: Select, Insert, Delete, Update …

DCL: Grant, Revoke, …

Được sử dụng trong các DBMS thông dụng

Mỗi DBMS có thể có một số khác biệt
Lược đồ CSDL
4
5
Truy vấn từ một bảng

Cấu trúc:
SELECT list_of_expressions
FROM table_name;

VD:
SELECT MaNV, TenNV, NgSinh
FROM NHANVIEN;
Mệnh đề WHERE

Cấu trúc:
SELECT list_of_expressions

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


Cấu trúc:
[NOT] BETWEEN min_value AND max_value

Ví dụ: Tìm MaNV, TenNV của những nhân viên có
lương từ 30000 đến 50000
SELECT MaNV, TenNV
FROM NHANVIEN
WHERE Luong BETWEEN 30000 AND 50000;
8
ALL/DISTINCT
SELECT [ALL/DISTINCT] list_of_expressions
FROM table_name
[WHERE row_conditions];

Ví dụ:
SELECT DISTINCT Luong
FROM NHANVIEN;
9
Hàm gộp (Aggregate function)
SELECT list_of_expressions
FROM table_name
[WHERE row_conditions]

Ví dụ:
SELECT COUNT (MaNV), AVG (Luong)
FROM NHANVIEN;

Ví dụ:
SELECT COUNT (MaNV) AS SoLuongNV, AVG
(Luong) AS LuongTB

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:

SELECT Phong, COUNT (MaNV) AS SLNV
FROM NHANVIEN
GROUP BY Phong
HAVING COUNT(MaNV) > 2;
14
Một số ràng buộc đối với mệnh
đề GROUP BY và HAVING

Thuộc tính xuất hiện trong mệnh đề SELECT:

Phải được tính hàm gộp, hoặc

Phải có trong mệnh đề GROUP BY

Thuộc tính có trong mệnh đề GROUP BY không bắt
buộc có trong mệnh đề SELECT

Phải có mệnh đề GROUP BY mới được có mệnh đề
HAVING

Phải có ít nhất một hàm gộp trong mệnh đề SELECT
hoặc mệnh đề HAVING
15
Mệnh đề ORDER BY

Sắp xếp kết quả theo một hoặc nhiều cột:
SELECT list_of_expressions
FROM table_name
[WHERE row_conditions]
[GROUP BY list_of_columns

[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

[WHERE conditions]
[GROUP BY list_of_columns
[HAVING aggregate_conditions]]
[ORDER BY list_of_columns];

Điều kiện kết đặt trong mệnh đề WHERE
20
Kết theta (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, PHONGBAN
WHERE 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, PHONGBAN
WHERE TenPB = ‘Nghien cuu’
AND NHANVIEN.Phong=PHONGBAN.MaPB;
21
Kết nội (kết tự nhiên)

Cấu trúc:
SELECT list_of_expressions
FROM R INNER JOIN S ON R.A = S.B
[WHERE row_conditions]
[GROUP BY list_of_columns
[HAVING aggregate_conditions]]

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


Ví dụ:
SELECT MaNV, HoNV, Tenlot, TenNV, TenPB
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN
ON NHANVIEN.MaNV=PHONGBAN.TrPhong;
25

×