
CÂU L NH SQLỆ
SQL là ngôn ng truy v n d a trên đ i s quan h . Câu l nh c a SQL dùng đ rút trích dữ ấ ự ạ ố ệ ệ ủ ể ữ
li u c a m t m t hay nhi u quan h . K t qu c a m t câu l nh SQL (truy v n) là m t quanệ ủ ộ ộ ề ệ ế ả ủ ộ ệ ấ ộ
h . Đ đ n gi n trong cách trình bày, ta xem quan h mà câu truy v n s d ng đ t o ra quanệ ể ơ ả ệ ấ ử ụ ể ạ
h khác g i là quan h ngu n, quan h k t qu c a truy v n là quan h đích.ệ ọ ệ ồ ệ ế ả ủ ấ ệ
I. Truy v n đ nh nghĩa d li u (data definition query)ấ ị ữ ệ
T o l c đ quan h rSV:ạ ượ ồ ệ
+ Create Table rSV (MASV Text (10) CONSTRAINT khoaChinh PRIMARY
KEY,HOTEN Text (30), NU YesNo, NGAYSINH Date, MALOP Text (10),
Thumbs up Các truy v n c b n và nâng cao trong qu n lý sinh viên - SQLấ ơ ả ả
Code này t p h p t t c các truy v n c b n và nâng cao trong qu n lý sinh viên, bài t pậ ơ ấ ả ấ ơ ả ả ậ
r t chi ti t ,đ y đ chia thành t ng ph n :ấ ế ầ ủ ừ ầ
- Truy v n c b nấ ơ ả
- Truy v n nâng caoấ
- Truy v n th ng kêấ ố
Tài li u này r t hay và khá đ y đ , mình đã Test qua, r t thích h p cho b n nào mu nệ ấ ầ ủ ấ ợ ạ ố
nghiên c u v SQL. Mã ngu n kèm theo v i bài t p c th .ứ ề ồ ớ ậ ụ ể
N i dung c a các ph n nh sau :ộ ủ ầ ư
Truy v n c b n:ấ ơ ả
I.Truy v n ch n (Select):ấ ọ
1. Cho bi t danh sách các môn h c, g m các thông tin sau: Mã môn h c, Tên môn h c, Sế ọ ồ ọ ọ ố
ti t,s p x p tăng d n theo s ti tế ắ ế ầ ố ế
2. Li t kê danh sách sinh viên, g m các thông tin sau: Mã sinh viên, H sinh viên, Tên sinhệ ồ ọ
viên, H c b ng. S p x p tăng d n theo MaKH,gi m d n theo h c b ngọ ổ ắ ế ầ ả ầ ọ ổ
3.Danh sách các môn h c có tên b t đ u b ng ch T, g m các thông tin: Mã môn,Tên môn,ọ ắ ầ ằ ữ ồ
S ti tố ế
4. Li t kê danh sách nh ng sinh viên có ch cái cu i cùng trong tên là I, g m các thông tin:ệ ữ ữ ố ồ
H tên sinh viên, Ngày sinh, Phái,TenKHọ
5. Danh sách nh ng khoa có ký t th hai c a tên khoa có ch a ch N, g m các thông tin:ữ ự ứ ủ ứ ữ ồ
Mã khoa, Tên khoa
6. Li t kê nh ng sinh viên mà h có ch a ch Thệ ữ ọ ứ ữ ị
7. Cho bi t danh sách nh ng sinh viên ký t đ u tiên c a tên n m trong kho ng t a đ n m,ế ữ ự ầ ủ ằ ả ừ ế
g m các thông tin: Mã sinh viên, H tên sinh viên, Phái, H c b ng.ồ ọ ọ ổ
8. Li t kê nh ng sinh viên nam c a khoa Anh văn, g m các thông tin: Mã sinh viên, H tênệ ữ ủ ồ ọ
sinh viên ,TenKH
9.Li t kê các sinh viên có h c b ng l n h n 100,000 và sinh Tp HCM, g m các thông tin:ệ ọ ổ ớ ơ ở ồ
H tên sinh viên, Mã khoa, N i sinh, H c b ngọ ơ ọ ổ
II. Thêm d li u vào c s d li u:ữ ệ ơ ở ữ ệ

TINH Text (50), HOCBONG Double )
T o l c đ quan h rKQ:ạ ượ ồ ệ
+ Create Table rKQ (MASV text (10),MAMH Text (10), DIEMTHI
Double,CONSTRAINT khoaChinh PRIMARY KEY (MASV,MAMH) )
Chú ý: Hai cách t o trên cho ta th y hai cách t o khóa: khóa ch g m m t thu c tính và khóaạ ấ ạ ỉ ồ ộ ộ
có nhi u thu c tínhề ộ
Thêm c t DTHOAI có ki u d li u text 20 ký t vào l c đ quan h rSV:ộ ể ữ ệ ự ượ ồ ệ
+ Alter Table rSV Add Column DTHOAI Text (20)
S a ki u ki u d li u c a m t c t:ử ể ể ữ ệ ủ ộ ộ
+ Alter Table rSV Alter Column DTHOAI double
Xóa c t c a m t l c đ đã có:ộ ủ ộ ượ ồ
+ Alter Table rSv Drop Column DTHOAI
Xóa ràng bu c khóa chính:ộ
+ Alter Table rSv Drop Constraint khoaChinh
Thêm ràng bu c khóa chính:ộ
+ Alter Table rSv Add Constraint khoaChinh Primary Key (MASV)
Thêm ràng bu c mi n giá tr :ộ ề ị
+ ALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK
(column_a > 1)
II. Truy v n ch n (select query)ấ ọ
Khi có nhu c u th hi n các dòng d li u c a m t quan h hay c a nhi u quan h d i d ngầ ể ệ ữ ệ ủ ộ ệ ủ ề ệ ướ ạ
m t quan h có s c t và s dòng theo ý mu n nh b ng đi m c a sinh viên, danh sách sinhộ ệ ố ộ ố ố ư ả ể ủ
viên thì ta s d ng truy v n ch n.ử ụ ấ ọ
Đ truy v n ch n ta s d ng câu l nh SQL sau:ể ấ ọ ử ụ ệ
Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]]
From table1 [Inner Join table2 On table1.field1 table2.field2] ...
[Where dieuKien]
[Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]];
Distinct: lo i b các b trùng trong quan h đíchạ ỏ ộ ệ
Top n[%]: Ch n n hay n% m u tin đ u tiên.ọ ẫ ầ
table: Tên table hay query ch a d li u.ứ ữ ệ
field: Tên field hay m t bi u th c.ộ ể ứ
Alias: Tr ng h p field là m t bi u th c thì <Alias> là m t tên m i c a bi u th c.ườ ợ ộ ể ứ ộ ớ ủ ể ứ
Inner Join: m i m u tin c a table1 n i v i b t kỳ m u tin nào c a table2 có d li u c a field1ỗ ẫ ủ ố ớ ấ ẫ ủ ữ ệ ủ
th a mãn đi u ki n so sánh v i d li u c a field2 t o thành m u tin c a query.ỏ ề ệ ớ ữ ệ ủ ạ ẫ ủ
đi u ki n: Bi u th c mà d li u m u tin ph i th a mãnề ệ ể ứ ữ ệ ẫ ả ỏ
Chú ý:
Khi nêu rõ thu c tính đó thu c v quan h nào ta vi t theo cú pháp tênQuanH .tênThu cTính.ộ ộ ề ệ ế ệ ộ
Ví d : L p danh sách sinh viên g m MASV,HOTEN,HOCBONGụ ậ ồ
SELECT MASV,HOTEN,HOCBONG
FROM Sv;

Ví d : L p danh sách sinh viên n , có h c b ng thu c có mã l p là “CĐTH2B”.ụ ậ ữ ọ ổ ộ ớ
SELECT MASV,HOTEN,HOCBONG
FROM Sv
WHERE NU And MALOP='CĐTH2B' And HOCBONG>0;
Ví d : L p danh sách sinh viên g m MASV,HOTEN,HOCBONG trong đó h c b ng đ c s pụ ậ ồ ọ ổ ượ ắ
gi m d nả ầ
SELECT MASV,HOTEN,HOCBONG
FROM Sv
Thumbs up Các truy v n c b n và nâng cao trong qu n lý sinh viên - SQLấ ơ ả ả
Code này t p h p t t c các truy v n c b n và nâng cao trong qu n lý sinh viên, bài t pậ ơ ấ ả ấ ơ ả ả ậ
r t chi ti t ,đ y đ chia thành t ng ph n :ấ ế ầ ủ ừ ầ
- Truy v n c b nấ ơ ả
- Truy v n nâng caoấ
- Truy v n th ng kêấ ố
Tài li u này r t hay và khá đ y đ , mình đã Test qua, r t thích h p cho b n nào mu nệ ấ ầ ủ ấ ợ ạ ố
nghiên c u v SQL. Mã ngu n kèm theo v i bài t p c th .ứ ề ồ ớ ậ ụ ể
N i dung c a các ph n nh sau :ộ ủ ầ ư
Truy v n c b n:ấ ơ ả
I.Truy v n ch n (Select):ấ ọ
1. Cho bi t danh sách các môn h c, g m các thông tin sau: Mã môn h c, Tên môn h c, Sế ọ ồ ọ ọ ố
ti t,s p x p tăng d n theo s ti tế ắ ế ầ ố ế
2. Li t kê danh sách sinh viên, g m các thông tin sau: Mã sinh viên, H sinh viên, Tên sinhệ ồ ọ
viên, H c b ng. S p x p tăng d n theo MaKH,gi m d n theo h c b ngọ ổ ắ ế ầ ả ầ ọ ổ
3.Danh sách các môn h c có tên b t đ u b ng ch T, g m các thông tin: Mã môn,Tên môn,ọ ắ ầ ằ ữ ồ
S ti tố ế
4. Li t kê danh sách nh ng sinh viên có ch cái cu i cùng trong tên là I, g m các thông tin:ệ ữ ữ ố ồ
H tên sinh viên, Ngày sinh, Phái,TenKHọ
5. Danh sách nh ng khoa có ký t th hai c a tên khoa có ch a ch N, g m các thông tin:ữ ự ứ ủ ứ ữ ồ
Mã khoa, Tên khoa
6. Li t kê nh ng sinh viên mà h có ch a ch Thệ ữ ọ ứ ữ ị
7. Cho bi t danh sách nh ng sinh viên ký t đ u tiên c a tên n m trong kho ng t a đ n m,ế ữ ự ầ ủ ằ ả ừ ế
g m các thông tin: Mã sinh viên, H tên sinh viên, Phái, H c b ng.ồ ọ ọ ổ
8. Li t kê nh ng sinh viên nam c a khoa Anh văn, g m các thông tin: Mã sinh viên, H tênệ ữ ủ ồ ọ
sinh viên ,TenKH
9.Li t kê các sinh viên có h c b ng l n h n 100,000 và sinh Tp HCM, g m các thông tin:ệ ọ ổ ớ ơ ở ồ
H tên sinh viên, Mã khoa, N i sinh, H c b ngọ ơ ọ ổ
II. Thêm d li u vào c s d li u:ữ ệ ơ ở ữ ệ

ORDER BY HOCBONG DESC;
Ví du : L p danh sách sinh viên g m MASV,HOTEN,TENLOPậ ồ
SELECT MASV,HOTEN,TENLOP
FROM Sv Inner Join Lop On Sv.MALOP=Kh.LOP;
Ví d : L p danh sách sinh viên có MASV,HOTEN,NU,NGAYSINH,DIEMTHI v i đi m thiụ ậ ớ ể
môn ‘CSDL’ >= 8
SELECT Kq.MASV,HOTEN,NU,NGAYSINH,DIEMTHI
FROM Kq Inner Sv On Kq.MASV = Sv.MaSV
WHERE MAMH='CSDL' AND DIEMTHI>=8;
Ví d : L p danh sách sinh viên có ho là “NGUYEN”ụ ậ
SELECT *
FROM Sv
WHERE HOTEN Like “NGUYEN*”;
III. Truy v n nhóm d li u (Select query có group by)ấ ữ ệ
Khi có nhu c u chia các b theo t ng nhóm r i tính toán trên t ng nhóm này nh tính đi mầ ộ ừ ồ ừ ư ể
trung bình c a t t c các môn h c c a t ng sinh viên, hay là c n tính s l ng sinh viên c aủ ấ ả ọ ủ ừ ầ ố ượ ủ
m i l p , hay là c n bi t t ng s môn mà m t sinh viên đã đăng ký h c thì ta s d ng truy v nỗ ớ ầ ế ổ ố ộ ọ ử ụ ấ
theo nhóm.
Đ truy v n c ng nhóm ta s d ng câu l nh SQL sau:ể ấ ộ ử ụ ệ
Select [Distinct|Top n[%]] field1 [As alias1][,field2 [As alias2][,...]]
From table1 [Inner Join table2 On table1.field1 table2.field2] ...
[Where dieuKienLocMauTinNguon]
[Group By fieldGroupBy[,fieldGroupBy[,...]]
[Having dieuKienLocMauTinTongHop]
[Order By field1[Asc|Desc][,field2[Asc|Desc]][,...]]];
đi uKi nL cM uTinNgu n: đi u ki n mà các m u tin ngu n ph i th a mãn (phép ch n)ề ệ ọ ẫ ồ ề ệ ẫ ồ ả ỏ ọ
fieldGroupBy: tên field mà các m u tin có d li u gi ng nhau trên y đ c x p vào cùngẫ ữ ệ ố ấ ượ ế
nhóm. đi uKi nL cM uTinT ngH p: đi u ki n mà các m u tin t ng h p ph i th a mãnề ệ ọ ẫ ổ ợ ề ệ ẫ ổ ợ ả ỏ
(phép ch n)ọ
Ví du: L p danh sách sinh viên có đăng ký ít nh t là ba môn h cậ ấ ọ
SELECT Kq.MASV,HOTEN,NU,NGAYSINH,COUNT(MAMH) As SLMH
FROM Sv Inner Join Kq On Sv.MASV = Kq.MASV
GROUP BY Kq.MASV,HOTEN,NU,NGAYSINH
HAVING COUNT(MAMH)>=3;
Ví du: Đ m s l ng sinh viên n c a m i khoaế ố ượ ữ ủ ỗ
SELECT Kh.MAKHOA,TENKHOA,COUNT(Kh.MAKHOA) AS SOLUONG
FROM (Sv Inner Join Lop On Sv.MALOP = LOP.MALOP)
INNER JOIN Kh On Lop.MAKHOA=Kh.MAKHOA
WHERE NU
GROUP BY Kh.MAKHOA,TENKHOA;

IV. Truy v n l ng nhau (nested query, sub query)ấ ồ
Là nh ng câu l nh truy v n mà trong thành ph n WHERE hay HAVING có ch a thêm m t câuữ ệ ấ ầ ứ ộ
l nh Select khác. Câu l nh select khác này g i là subquery. Ta l ng câu Select vào ph n Whereệ ệ ọ ồ ầ
hay Having theo cú pháp sau:
o bieuthuc toanTuSoSanh [ANY | ALL | SOME] (cauLenhSQL)
ANY, SOME là b t kỳ, ALL là t t c Các m u tin c a query chính th a mãn toán t so sánhấ ấ ả ẫ ủ ỏ ử
v i b t kỳ/ t t c m u tin nào c a subqueryớ ấ ấ ả ẫ ủ
o bieuThuc [NOT] IN (cauLenhSQL) Các m u tin c a query chính có giá tr b ng v i m t giáẫ ủ ị ằ ớ ộ
tr trong subqueryị
Thumbs up Các truy v n c b n và nâng cao trong qu n lý sinh viên - SQLấ ơ ả ả
Code này t p h p t t c các truy v n c b n và nâng cao trong qu n lý sinh viên, bài t pậ ơ ấ ả ấ ơ ả ả ậ
r t chi ti t ,đ y đ chia thành t ng ph n :ấ ế ầ ủ ừ ầ
- Truy v n c b nấ ơ ả
- Truy v n nâng caoấ
- Truy v n th ng kêấ ố
Tài li u này r t hay và khá đ y đ , mình đã Test qua, r t thích h p cho b n nào mu nệ ấ ầ ủ ấ ợ ạ ố
nghiên c u v SQL. Mã ngu n kèm theo v i bài t p c th .ứ ề ồ ớ ậ ụ ể
N i dung c a các ph n nh sau :ộ ủ ầ ư
Truy v n c b n:ấ ơ ả
I.Truy v n ch n (Select):ấ ọ
1. Cho bi t danh sách các môn h c, g m các thông tin sau: Mã môn h c, Tên môn h c, Sế ọ ồ ọ ọ ố
ti t,s p x p tăng d n theo s ti tế ắ ế ầ ố ế
2. Li t kê danh sách sinh viên, g m các thông tin sau: Mã sinh viên, H sinh viên, Tên sinhệ ồ ọ
viên, H c b ng. S p x p tăng d n theo MaKH,gi m d n theo h c b ngọ ổ ắ ế ầ ả ầ ọ ổ
3.Danh sách các môn h c có tên b t đ u b ng ch T, g m các thông tin: Mã môn,Tên môn,ọ ắ ầ ằ ữ ồ
S ti tố ế
4. Li t kê danh sách nh ng sinh viên có ch cái cu i cùng trong tên là I, g m các thông tin:ệ ữ ữ ố ồ
H tên sinh viên, Ngày sinh, Phái,TenKHọ
5. Danh sách nh ng khoa có ký t th hai c a tên khoa có ch a ch N, g m các thông tin:ữ ự ứ ủ ứ ữ ồ
Mã khoa, Tên khoa
6. Li t kê nh ng sinh viên mà h có ch a ch Thệ ữ ọ ứ ữ ị
7. Cho bi t danh sách nh ng sinh viên ký t đ u tiên c a tên n m trong kho ng t a đ n m,ế ữ ự ầ ủ ằ ả ừ ế
g m các thông tin: Mã sinh viên, H tên sinh viên, Phái, H c b ng.ồ ọ ọ ổ
8. Li t kê nh ng sinh viên nam c a khoa Anh văn, g m các thông tin: Mã sinh viên, H tênệ ữ ủ ồ ọ
sinh viên ,TenKH
9.Li t kê các sinh viên có h c b ng l n h n 100,000 và sinh Tp HCM, g m các thông tin:ệ ọ ổ ớ ơ ở ồ
H tên sinh viên, Mã khoa, N i sinh, H c b ngọ ơ ọ ổ
II. Thêm d li u vào c s d li u:ữ ệ ơ ở ữ ệ