Lý thuy t v câu l nh SQLế
by nguyenduc on 1/1/2010, 18:14
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), 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ì 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ên QuanH .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
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 n L 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)
field GroupBy: 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
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
o [NOT] EXISTS (cauLenhSQL).
Các m u tin c a query chính th a mãn khi subquery có m u tin
Ví du: L p danh sách sinh viên có h c b ng cao nh t
SELECT *
FROM Sv
WHERE HOCBONG>=ALL(SELECT HOCBONG FROM SV);
Ví du: L p danh sách
sinh viên có đi m thi môn CSDL cao nh t
SELECT SV.MASV,HOTEN,NU,NGAYSINH,DIEMTHI
FROM sv Inner Join kq On Sv.MASV = Kq.MASV
WHERE MAMH='CSDL' AND DIEMTHI >= ALL
(SELECT DIEMTHI FROM KQ WHERE MAMH='CSDL');
Hi u và v n d ng t t l nh truy v n d li u là m t vi c làm c c kỳ c n thi t đ t o ra các ế
k t qu cho báo cáo, th ng kê s li u. ế
V. Truy v n c p nh t d li u (action query, data modification query)
Cú pháp: Update table Set field1 = bi uTh c1, field2 = bi uTh c2 Where đi uKi n
Cú pháp: Delete From table Where đi uKi n
vi Truy v n h p (union query)
Khi có nhu c u th c hi n truy v n có k t qu nh toán t h p, ta s d ng câu l nh SQL sau: ế ư
Select .....Union Select ....
Ví du: L nh sau đây g p đôi danh sách sinh viên
SELECT MASV,HOTEN,NGAYSINH UNION SELECT MASV,HOTEN,NGAYSINH
Mô hình thác n cướ (ti ng Anhế: waterfall model) là m t mô hình c a quy trình phát tri n ph n m m ,
trong đó quy trình phát tri n trông gi ng nh m t dòng ch y, v i các pha đ c th c hi n theo tr t t ư ượ
nghiêm ng t và không có s quay lui hay nh y v t pha là: phân tích yêu c u, thi t k , tri n khai th c ượ ế ế
hi n, ki m th , liên k t và b o trì. Ng i ta th ng d n bài báo đ c ế ườ ườ ượ Winston W. Royce xu t b n vào
năm 1970 đ gi i thích ngu n g c cho tên g i "thác n c"; nh ng có đi u thú v là chính Royce đã ướ ư
dùng mô hình phát tri n l p ch không h dùng thu t ng "mô hình thác n c". ướ
Vào năm 1970 trong bài báo c a mình, Royce đã mô t d ng khái ni m cái mà ngày nay đ c công ượ
nh n v i tên g i "mô hình thác n c", đã bàn lu n v nh ng nh c đi m c a mô hình này. Trong đó ông ướ ượ
cũng ch ra r ng mô hình này có th s đ c tu s a thành mô hình l p. ượ
Mô hình Royce nguyên g c có các pha theo đúng th t sau:
1. Xác đ nh yêu c u
2. Thi t kế ế
3. Xây d ng (hay "tri n khai", "mã hóa", "vi t mã") ế
4. Liên k tế
5. Ki m th và Ch nh s a (hay «ki m nghi m»)
6. Cài đ t
7. B o t
Theo mô hình thác n c, ng i phát tri n ph i th c hi n t ng giai đo n theo th t nghiêm ng t. Tr cướ ườ ướ
h t, giai đo n "xác đ nh yêu c u" ph i đ c hoàn t t, k t qu nh n đ c s là danh sách các yêu c uế ượ ế ượ
đ i v i ph n m m. Sau khi các yêu c u đã hoàn toàn đ c xác đ nh, s chuy n sang pha thi t k , pha ượ ế ế
này ng i ta s t o ra các tài li u dành choườ l p trình viên, trong đó mô t chi ti t các ph ng pháp và k ế ươ ế
ho ch th c hi n các yêu c u đã đ c làm rõ pha tr c. Sau khi pha thi t k hoàn t t, l p trình viên s ượ ướ ế ế
tri n khai th c hi n (mã hóa, vi t mã) đ án h nh n đ c. Giai đo n ti p theo là liên k t các thành ế ượ ế ế
ph n riêng l đã đ c nh ng đ i l p trình viên khác nhau th c hi n thành m t s n ph m hoàn ch nh. ượ
Sau khi pha tri n khai và pha liên k t hoàn t t, s di n ra pha ki m th và ch nh s a s n ph m; giai ế
đo n này nh ng khi m khuy t các giai đo n tr c đó s b lo i b . Sau đó, s n ph m ph n m m s ế ế ướ
đ c đ a vào s d ng; ph n b o trì ph n m m cũng s đ c b o đ m b ng cách b sung ch c năngượ ư ượ
m i và lo i tr các l i.
Nh v y, mô hình thác n c ng ý r ng, vi c chuy n t pha phát tri n này sang pha khác s di n ra chư ướ
sau khi các pha tr c đó đã k t thúc hoàn toàn thành công, và không th quay lui v pha tr c đó hayướ ế ướ
nh y v t pha. ượ
[Tôi đã t ng h p kinh nghi m và tìm t li u trên m ng] ư
Phân tích yêu c u: là quá trình xác đ nh nh ng đòi h i gì t h th ng, các yêu c u ch c
năng và phi ch c năng. Là giai đo n s k t h p tham gia tích c c c a khách hàng. K t ế ế
thúc là m t h s đ c t v h th ng…. ơ