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ê
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. Tm d li u 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ê
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. Tm d li u 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ê
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. Tm d li u o c s d li u: ơ