Trang 1 1CHƯƠNG 4CƠ SỞ DỮ LIỆU QUAN HỆNGƠN NGỮ SQL2NỘI DUNGGiới thiệu ngơn ngữ con dữ liệu SQL Ngôn ngữ định nghĩa dữ liệuNgôn ngữ thao tác dữ liệuCập nhật dữ liệuTruy vấn dữ liệu Tìm ki
Trang 1CH ƯƠ NG 4
2
NỘI DUNG
Giới thiệu ngôn ngữ con dữ liệu SQL Ngôn ngữ định nghĩa dữ liệu
Ngôn ngữ thao tác dữ liệu
Cập nhật dữ liệu Truy vấn dữ liệu (Tìm kiếm dữ liệu)
Chỉ mục (Index) Khung nhìn (View) Bảo mật và an toàn dữ liệu SQL nhúng
NGÔN NG Ữ CON D Ữ LI Ệ U SQL
Đặ c đ i ể m:
Là ngôn ngữ có cấu trúc, phi thủ tục
Vừa đóng vai trò là ngôn ngữ con cá thể thao tác độc lập cho
người sử dùng cuối, đồng thời có thể nhúng trong ngôn ngữ lập
trình.
Ch ứ c n ă ng c ủ a SQL
Hỏi dữ liệu (Truy vấn)
Định nghĩa dữ liệu
Cập nhật dữ liệu
Bảo mật và an toàn dữ liệu
NGÔN NG Ữ CON D Ữ LI Ệ U SQL
SQL (Structure English Query Language)
Tên g ọ i c ũ là SEQUEL Đượ c ANSI và ISO th ừ a nh ậ n là ngôn ng ữ chu ẩ n v ề
d ữ li ệ u; là ph ươ ng ti ệ n giao ti ế p c ủ a nhi ề u h ệ
th ố ng thông tin qu ả n lý.
Ra đờ i n ă m 1976 t ạ i phòng thí nghi ệ m Chamberlin; SQL-86 hay SQL1(ANSI 1986) →SQL-92 hay SQL2 →
SQL−99 hay SQL3.
Trang 2NGÔN NG Ữ CON D Ữ LI Ệ U SQL
Thu ậ t ng ữ
Quan hệ (Relation) Bảng (Table) Thuộc tính (Attribute) Cột (Column)
Không quan trọng thứ tự các cột và thứ tự các hàng !
6
SQL Data Definition Language
DDL là m ộ t thành ph ầ n trong SQL, ch ứ a các câu l ệ nh
t ạ o/xoá b ả ng, đị nh ngh ĩ a indexes, thi ế t l ậ p các ràng
bu ộ c quan h ệ Các câu l ệ nh DDL quan tr ọ ng:
CREATE TABLE – tạo bảng mới ALTER TABLE – thay đổi cấu trúc bảng DROP TABLE – xoá bảng
CREATE INDEX – lập chỉ mục (index) DROP INDEX – xoá chỉ mục
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U TRONG SQL
Tạo bảng
CREATE TABLE < tên b ả ng>
(<tên c ộ t 1> <ki ể u dl> [NOT NULL] [DEFAULT <gt m ặ c đị nh>,
<tên c ộ t 2> <ki ể u dl> [NOT NULL] [DEFAULT <gt m ặ c đị nh>,
….
<tên c ộ t n> <ki ể u dl> [NOT NULL] [DEFAULT <gt m ặ c đị nh>
[, PRIMARY KEY (<tên các c ộ t tham gia vào khóa chính>)]
[, UNIQUE (<tên các c ộ t tham gia vào khóa duy nh ấ t>)]
[, FOREIGN KEY (<tên c ộ t là khóa ngo ạ i lai>) REFERENCES <tên
b ả ng> (<tên c ộ t liên k ế t>) [, FOREIGN KEY…… ]] );
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U TRONG SQL
Ki ể u d ữ li ệ u
CHAR (n), VARCHAR(n) BOOLEAN
INT hoặc INTEGER,….
FLOAT hay REAL hay DECIMAL(n,d) DATE, TIME
Trang 3NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
Ví dụ Xét CSDL g ồ m 3 b ả ng:
SV (MASV, HOTEN, GT, NS, QUE, LOP)
HP (MAHP, TENHP, SOTC)
KQHT (MASV, MAHP, DIEM)
Đặ t tên các ràng bu ộ c: b ổ sung thêm thành ph ầ n
sau vào câu l ệ nh t ạ o b ả ng, đặ t tr ướ c m ỗ i ph ầ n khai
báo ràng bu ộ c:
CONSTRAINT <tên ràng bu ộ c>
10
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
CREATE TABLE SV (MASV CHAR(7) , HOTEN VARCHAR(30) NOT NULL,
GT CHAR(3),
NS DATE, QUE VARCHAR(20), LOP CHAR(10), PRIMARY KEY (MASV));
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
CREATE TABLE HP
(MAHP CHAR(5),
TENHP VARCHAR(20) NOT NULL,
SOTC SMALLINT NOT NULL,
PRIMARY KEY (MAHP),
CONSTRAINT TEN_DUY_NHAT
UNIQUE (TENHP));
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
CREATE TABLE KQHT (MASV CHAR(7), MAHP CHAR(5), DIEM DECIMAL(4,1) DEFAULT 0, PRIMARY KEY (MASV, MAHP),
FOREIGN KEY (MASV) REFERENCES SV(MASV), FOREIGN KEY (MAHP) REFERENCES HP(MAHP));
Trang 4NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
Thayđổi cấu trúc bảng
Thêm một cột mới cho bảng
ALTER TABLE <tên b ả ng>
ADD COLUMN <tên c ộ t> <ki ể u d ữ li ệ u> [NOT NULL] [DEFFAULT
<giá tr ị >];
Xóa một cột của bảng
ALTER TABLE <tên b ả ng>
DROP COLUMN <tên c ộ t> [CASCADE];
Thay đổi kiểu dữ liệu của một cột trong bảng
ALTER TABLE <tên b ả ng>
CHANGE COLUMN <tên c ộ t> <ki ể u d ữ li ệ u m ớ i>;
14
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
Quy đị nh DEFAULT cho m ộ t c ộ t
Thêm quy định DEFAULT
ALTER TABLE <tên b ả ng>
ALTER <tên c ộ t> SET DEFAULT <giá tr ị >;
Xóa quy định DEFAULT
ALTER TABLE <tên bảng>
ALTER <tên cột> DROP DEFAULT;
NGÔN NG Ữ ĐỊ NH NGH Ĩ A D Ữ LI Ệ U
Thay đổ i các ràng bu ộ c trên b ả ng
Xóa ràng buộc
ALTER TABLE <tên b ả ng>
DROP CONSTRAINT<tên ràng bu ộ c>;
Thêm ràng buộc
ALTER TABLE <tên b ả ng>
ADD ( CONSTRAINT <tên ràng bu ộ c> PRIMARY KEY…| UNIQUE…|
FOREIGN KEY… );
Xóa b ả ng
DROP < tên bảng> [CASCADE];
SQL Data Manipulation Language
Là cú phép để b ổ sung, xoá, s ử a ch ữ a các hàng trong b ả ng và tìm ki ế m d ữ li ệ u.
Các câu l ệ nh trong DML
SELECT trích rút dữ liệu từ các bảng csdl UPDATE sửa chữa dữ liệu trong bảng DELETE xoá dữ liệu trong bảng INSERT INTO chèn thêm dữ liệu mới vào bảng
NGÔN NG Ữ THAO TÁC D Ữ LI Ệ U
Trang 5C Ậ P NH Ậ T D Ữ LI Ệ U CHO B Ả NG
B ổ sung thêm m ộ t hàng cho b ả ng
INSERT INTO <tên b ả ng> [(<danh sách các c ộ t>)]
VALUES (<danh sách các giá tr ị t ươ ng ứ ng>)
|<câu truy v ấ n >;
Ví d ụ
INSERT INTO HP VALUES (‘M4’, ‘Toán r ờ i r ạ c’,4);
Ho ặ c
INSERT INTO HP (TENHP, MAHP, SOTC)
VALUES (‘Toán r ờ i r ạ c’, ‘M4’, 4);
INSERT INTO SV(MASV, HOTEN) VALUES (‘20091005’,’Hoa’);
18
C Ậ P NH Ậ T D Ữ LI Ệ U CHO B Ả NG
Xóa các hàng trong b ả ng
DELETE FROM <tên b ả ng>
[WHERE <bi ể u th ứ c đ i ề u ki ệ n>];
Thay đổ i giá tr ị cho các c ộ t trong b ả ng
UPDATE <tên b ả ng>
SET <tên c ộ t 1> = <bi ể u th ứ c>
[, <tên c ộ t2> = <bi ể u th ứ c>,…]
[WHERE <bi ể u th ứ c đ i ề u ki ệ n>];
TÌM KI Ế M D Ữ LI Ệ U
SELECT [DISTINCT] <danh sách chi ế u>
FROM <danh sách tên b ả ng|tên view>
[WHERE [NOT] <bi ể u th ứ c đ i ề u ki ệ n>]
[GROUP BY <danh sách c ộ t | bi ể u th ứ c>
[HAVING [NOT] <bi ể u th ứ c đ i ề u ki ệ n>]]
[ORDER BY < danh sách tên c ộ t| s ố th ứ t ự các c ộ t
trong danh sách chi ế u|bi ể u th ứ c> [ASC|DESC]];
TÌM KI Ế M D Ữ LI Ệ U
Biểu thức
Một biểu thứcđược tạo nên từcác hằng, các tên cột và các hàm, được liên kết với nhau bởi các phép tính sốhọc ( +, -,
*, / )
• Danh sách chiếu:
Danh sách các tên cột (hoặc biểu thức) cần có trong bảng
kết quả Khi danh sách chiếu là dấu *, có nghĩa danh sách chiếu là toàn bộcác cột của tất cảcác bảng (hoặc view)
được chỉra sau FROM
Trang 6TÌM KI Ế M D Ữ LI Ệ U
Biểu thức điều kiện
(a) bi ể u th ứ c logic tạo nên từ các hằng, các tên cột và các hàm, được nối
với nhau bởi các phép toán số học so sánh (>, >=, <, <=, !=) và logic
(and, or, not)
(b) tân t ừ ở các dạng sau:
(b1) <tên cột> IS [NOT] NULL
(b2) <tên cột> [NOT] LIKE <xâu kí tự>
(b3) <biểu thức >[NOT] BETWEEN <biểu thức 1>
AND <biểu thức2>
(b4) <tên cột> [NOT] IN (<danh sách các giá trị | truy
vấn con>) (b5) <tên cột θ ANY | ALL (truy vấn con)
(b6) EXISTS (truy vấn con)
(c) bi ể u th ứ c logic k ế t h ợ p v ớ i tân t ừ bởi các phép toán logic
22
TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m đơ n gi ả n
Ví d ụ 1: Cho bi ế t danh sách t ấ t c ả các sinh viên
SELECT * FROM SV;
Ví d ụ 2: Cho bi ế t mã s ố nh ữ ng sinh viên đ ã có ít nh ấ t m ộ t đ i ể m thi
SELECT DISTINCT MASV FROM KQHT;
Biểu thức quan hệtươngđương
7 M2
20091001
4 M1
20091000
6 M1
20091001
5 M3
20091001
DIEM MAHP
MASV
20091001
20091000
20091001
20091001
MASV
20091000 20091001 MASV
SELECT MASV
FROM KQHT;
SELECT DISTINCT MASV FROM KQHT;
Bảng
KQHT
TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m v ớ i bi ể u th ứ c logic d ạ ng (a)
Ví d ụ 3: Cho bi ế t mã s ố , tên và ngày sinh c ủ a các sinh viên n ữ quê
ở Hà N ộ i
SELECT MASV, HOTEN, NS FROM SV
WHERE GT=’n ữ ’ and QUE=’Hà N ộ i’;
Biểu thức quan hệtương đương
) ( (
,
∏ MASV HOTEN NS σ GT = Nu ∧ QUE = HaNoi SV
Trang 7TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng (b1)
Ví d ụ 4: Cho bi ế t danh sách mã s ố và tên nh ữ ng sinh
viên ch ư a rõ quê quán
SELECT MASV, HOTEN
FROM SV
WHERE QUE IS NULL;
Ví d ụ 5: Cho bi ế t thông tin v ề nh ữ ng sinh viên có h ọ
‘Nguy ễ n’
26
TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng (b2)
Khi dùng LIKE < xâu kí t ự >, trong xâu kí tự có th ể
ch ứ a các kí t ự thay th ế :
‘%’ thay th ế cho m ộ t xâu kí t ự
‘_’ thay th ế cho m ộ t kí t ự
FROM SV
TÌM KI Ế M D Ữ LI Ệ U
S ử d ụ ng d ữ li ệ u ki ể u ngày tháng
Ví d ụ 6: Cho bi ế t thông tin v ề nh ữ ng sinh viên sinh vào
tháng 12 n ă m 1979
SELECT * FROM SV
WHERE ‘01/01/1980’ - NS <= 31 AND
‘01/01/1980’ - NS > 0;
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng b3)
’31/12/1979’;
TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng (b3) và (c)
Ví d ụ 7: Cho bi ế t mã s ố , h ọ tên và ngày sinh c ủ a
nh ữ ng sinh viên l ớ p ‘Toán 1’ sinh vào tháng 12 n ă m 1979
SELECT MASV, HOTEN, NS FROM SV
‘01/12/1979’ AND ’31/12/1979’;
NS BETWEEN ‘01/12/1979’ AND ’31/12/1979 t ươ ng đươ ng:
NS >=‘ 01/12/1979’ AND NS <= ’31/12/1979’
Trang 8TÌM KI Ế M D Ữ LI Ệ U
Bi ể u di ễ n phép k ế t n ố i
mô tả biểu thức kết nối trong mệnh đề WHERE
dùng phép JOIN trong mệnh đề FROM
Lưu ý: Khi một cột A trong danh sách chiếu cùng xuất hiện
trong nhiều bảng được chỉ ra sau mệnh đề FROM, để tránh sự
nhập nhằng, phải ghi rõ T.A, có nghĩa cột A của bảng T
K ế t n ố i (R ⋈A A θθθ BBS )(E)[A, B, C, …]
SELECT A, B, C,… FROM R, S
WHERE E AND A A θθθ B;B;
? Bi ể u th ứ c đạ i s ố quan h ệ nào t ươ ng đươ ng v ớ i:
SELECT * FROM S, R WHERE E;
30
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
S ơ đồ chung: K ế t n ố i t ự nhiên R, S d ự a trên c ộ t A
Đạ i s ố quan h ệ: (R*S)(E)[A, B,…]
FROM R, S
WHERE E;
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
Ví d ụ 8: Cho bi ế t mã s ố và tên nh ữ ng sinh viên thi
h ọ c ph ầ n mã s ố ‘m1’ đạ t đ i ể m >=5
Cách vi ế t 1
SELECT SV.MASV, HOTEN
FROM SV, KQHT
WHERE SV.MASV=KQHT.MASV AND MAHP =’m1’
AND DIEM >= 5;
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
Cách vi ế t 2
SELECT SV.MASV, HOTEN FROM (SV JOIN KQHT ON SV.MASV = KQHT.MASV) WHERE MAHP = ’m1’ AND DIEM >= 5;
Cách vi ế t 3
SELECT SV.MASV, HOTEN FROM (SV NATURAL JOIN KQHT) WHERE MAHP = ’m1’ AND DIEM >= 5;
Trang 9TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
INNER JOIN
R INNER JOIN S: Kết quả chỉ bao gồm những hàng tạo bởi từ
những hàng của R và những hàng của S mà kết nối được với nhau
(JOIN mặc định là INNER JOIN).
OUTER JOIN
LEFT OUTER JOIN,
RIGHT OUTER JOIN,
FULL OUTER JOIN
34
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
những hàng tạo bởi từ những hàng của R và những hàng của S
mà kết nối được với nhau, những hàng của R và các cột còn lại mang giá trị NULL nếu không
có hàng nào trong S kết nối được với những hàng này
R RIGHT OUTER JOIN S
R FULL OUTER JOIN S
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
Ví dụ9: Cho biết mã số, tên sinh viên, mã học phần vàđiểm
thi của tất cảcác sinh viên Với những sinh viên chưa có
điểm thi học phần nào thì giá trịtrên cột MAHP và DIEM là
NULL
SELECT SV.MASV, HOTEN, MAHP, DIEM
FROM (SV OUTER JOIN KQHT ON SV.MASV =
KQHT.MASV);
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
SV [LEFT] OUTER JOIN KQHT
3/3/1985
Lê Ph ươ ng Nam 20091002
2/2/1986
Tr ầ n Mai Ly 20091001
1/1/1985 Nguy ễ n Minh Đứ c
20091000
NS HOTEN
MASV
7 M2
20091001
4 M1
20091000
6 M2
20091000
DIEM MAHP
MASV
4 M1
Nguy ễ n Minh Đứ c 20091000
NULL 7 6 DIEM
NULL
Lê Ph ươ ng Nam 20091002
M2
Tr ầ n Mai Ly 20091001
M2 Nguy ễ n Minh Đứ c
20091000
MAHP HOTEN
n ố i ngoài
Trang 10TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
• Ví d ụ 10 Cho bi ế t mã s ố , h ọ tên và đ i ể m thi c ủ a nh ữ ng
sinh viên thi h ọ c ph ầ n ‘C ơ s ở d ữ li ệ u’ đạ t đ i ể m >=5.
SELECT SV.MASV, HOTEN, DIEM
FROM SV, KQHT, HP
WHERE SV.MASV = KQHT.MASV AND KQHT.MAHP
DIEM>=5;
38
TÌM KI Ế M D Ữ LI Ệ U − Phép k ế t n ố i
Ho ặ c
SELECT SV.MASV, HOTEN, DIEM FROM ((SV NATURAL JOIN KQHT) NATURAL JOIN HP)
SELECT SV.MASV, HOTEN, DIEM FROM ((SV JOIN KQHT ON SV.MASV = KQHT.MASV) JOIN HP ON KQHT.MAHP = HP.MAHP) )
LUY Ệ N T Ậ P − Phép k ế t n ố i
1) Lập bảngđiểm học phần CSDL của lớp “Toán 1” (gồm các
cột MASV, HOTEN, DIEM)
2) Cho biếtđiểm học phần Cơ sở dữliệu của sinh viên
“20091000”
3) Lập bảngđiểm của sinh viên “20091000” (gồm MAHP,
TENHP, SOTC, diem)
TÌM KI Ế M D Ữ LI Ệ U − Truy v ấ n con
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng (b4)
Ví d ụ 11: Cho bi ế t mã s ố c ủ a nh ữ ng sinh viên có đ i ể m
<4 ít nh ấ t là m ộ t trong 3 h ọ c ph ầ n m1, m2, m3
SELECT DISTINCT MASV FROM KQHT
MAHP IN (‘m1’, ‘m2’, ‘m3’);
Trang 11TÌM KI Ế M D Ữ LI Ệ U − Truy v ấ n con
Tìm kiếm với biểu thứcđiều kiện dạng (b5)
Ví dụ12 Cho biết mã sốnhững sinh viên phải thi lại ít nhất
một học phần có sốtín chỉ>=4
SELECT DISTINCT MASV
FROM KQHT
FROM HP WHERE SOTC >=4);
Hãy vi ế t câu truy v ấ n trên b ằ ng cách s ử d ụ ng phép k ế t n ố i
42
TÌM KI Ế M D Ữ LI Ệ U − Truy v ấ n con
Ví dụ13: Cho biết mã sốvà tên những sinh viên cóđiểm
<5 ởít nhất một học phần có sốtín chỉ<= 2
Ví dụ14: Cho biết mã sốvà tên những sinh viên không có
điểm học phần nào < 4
TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng (b6)
A θθθθ ANY S = true, n ế u∃∃∃∃X ∈S: A θθθθX
false, n ế u ng ượ c l ạ i
A θθθθ ALL S = true, n ế u ∀X ∈S: A θθθθX
false, n ế u ng ượ c l ạ i
θθθθlà phép toán so sánh: =, <> (! =) >, >=, <, <=
TÌM KI Ế M D Ữ LI Ệ U
Ví d ụ 15: Cho bi ế t mã s ố nh ữ ng sinh viên đạ t đ i ể m cao nh ấ t h ọ c ph ầ n ‘M1’.
SELECT MASV FROM KQHT
AND DIEM >= ALL (SELECT DIEM
FROM KQHT WHERE MAHP = ’M1’);
Trang 12TÌM KI Ế M D Ữ LI Ệ U
9 M1
20091003
8 M1
20091002
4 M1
20091000
DIEM MAHP
MASV
5 M2
20091004
9 M1
20091003
6 M3
20091003
8 M1
20091002
7 M2
20091001
4 M1
20091000
6 M2
20091000
DIEM MAHP
MASV
SELECT DIEM FROM KQHT
WHERE MAHP = ’M1’);
9 8 4 DIEM
46
TÌM KI Ế M D Ữ LI Ệ U
N ế u k ế t qu ả c ủ a truy v ấ n con là m ộ t h ằ ng thì không c ầ n
s ử d ụ ng t ừ khóa ANY, ALL trong đ i ề u ki ệ n
Ví d ụ 16: Cho bi ế t mã s ố và tên c ủ a nh ữ ng sinh viên
có cùng ngày sinh v ớ i sinh viên có mã s ố
‘20091000’
SELECT MASV, HOTEN FROM SV
TÌM KI Ế M D Ữ LI Ệ U
Tìm ki ế m v ớ i bi ể u th ứ c đ i ề u ki ệ n d ạ ng (b7)
EXISTS < truy vấn con> = true, nếu kết quả của
truy vấn con ≠ ∅ false, nếu ngược lại
Ví d ụ 17: Cho bi ế t mã s ố và tên c ủ a nh ữ ng sinh viên
không ph ả i h ọ c l ạ i h ọ c ph ầ n nào.
SELECT MASV, HOTEN
FROM SV WHERE NOT EXISTS
(SELECT * FROM KQHT WHERE MASV = SV MASV AND DIEM <4);
TÌM KI Ế M D Ữ LI Ệ U
Đặ t bí danh cho c ộ t, b ả ng
SELECT <tên c ộ t> [AS] <bí danh>,…
FROM <tên b ả ng> AS <bí danh>,…
Ví d ụ 18:
SELECT MASV FROM KQHT AS T WHERE MAHP = ’M1’ AND NOT EXISTS (SELECT * FROM KQHT
WHERE MAHP = ’M1’ AND DIEM > T.DIEM);
Trang 13Hàm th ư vi ệ n trong danh sách chi ế u
COUNT(<tên cột>)
MAX(<tên cột>| <biểu thức>)
MIN(<tên cột>| <biểu thức>)
SUM(<tên cột>| <biểu thức số>)
AVG(<tên cột>| <biểu thức số>)
TÌM KI Ế M D Ữ LI Ệ U
50
TÌM KI Ế M D Ữ LI Ệ U
S ử d ụ ng hàm th ư vi ệ n trong danh sách chi ế u
Ví dụ19: Cho biết tổng sốsinh viên phải học lại ít nhất
một học phần nàođó
SELECT COUNT (DISTINCT MASV) TSSV_thilai FROM KQHT
WHERE DIEM <4;
Ví dụ20:
SELECT MASV FROM KQHT WHERE MAHP = ’m1’ AND DIEM = ( SELECT MAX(DIEM) FROM KQHT
WHERE MAHP = ’m1’);
TÌM KI Ế M D Ữ LI Ệ U - Mệ nh đề Order by
S ử d ụ ng m ệ nh đề ORDER BY
Ví d ụ 21:
SELECT MASV, MAHP, DIEM FROM KQHT
ORDER BY MASV, DIEM DESC;
Ghi chú:
Chiều sắp xếp luôn mặc định là ASC
Mệnh đề ORDER BY có thể viết:
ORDER BY 1, 3 DESC
Khi sắp xếp dựa trên giá trị của nhiều cột thì thứ tự ưu tiên là từ
trái sang phải
TÌM KI Ế M D Ữ LI Ệ U - Mệ nh đề Group by
Ví dụ 22: Đối với mỗi sinh viên, cho biết số học phần đã thi
SELECT MASV, COUNT(MAHP) FROM KQHT
GROUP BY MASV;
3 M2 20091004
7 M2 20091001
2 M2 20091000
9 M1 20091003
4 M1 20091000
8 M1 20091002
DIEM MAHP
MASV
9 M1 20091003
6 M3 20091003
8 M1 20091002
7 M2 20091001
4 M1 20091000
2 M2 20091000
DIEM MAHP MASV
1 20091004
2 20091003
1 20091002
1 20091001
2 20091000
count(MAHP)
MASV