Ệ
KHOA CÔNG NGH THÔNG TIN
ươ ươCh Ch Ữ Ệ Ữ Ệ
Ữ Ữ
ng 3 ng 3 NGÔN NG THAO TÁC D LI U NGÔN NG THAO TÁC D LI U
LOGO
Ệ
I. CÂU L NH
SELECT
Ứ
ấ ữ ệ ừ ộ ể ề ụ : 1. ng d ng ệ Câu l nh Select dùng đ truy xu t d li u t m t hay nhi u
ả b ng.
ớ
ệ ộ ề ệ
ộ ế 2. Cú pháp:
SELECT [ALL | DISTINCT][TOP n]
ộ ừ ể ữ ệ ồ ả Hi n th danh sách c t t các b ng d li u g m các dong tin
ỏ ệ ị ề th a mãn đi u ki n.
ộ
ệ
2. Danh sách c t trong câu l nh SELECT
ở ấ ứ ể ộ ộ ộ Danh sách c t: là dãy các c t/ bi u th c c t cách nhau b i d u
ph y.ẩ
Ví d :ụ
ế ế ộ Tham chi u đ n c t ủ ả KHÓA c a b ng DMLOP
ể ị ộ ố ộ m tộ b ngả
ộ t c các c t trong m tộ b ngả
ị ộ ố ộ ể ệ ả nhi uề b ng quan h
1. Hi n th m t s c t trong SELECT MaLop,TenLop,NamNhapHoc,Khoahoc FROM DMLOP ị ấ ả ể 2. Hi n th t SELECT * FROM DMLOP 3. Hi n th m t s c t trong SELECT MaLop, TenLop, DMLOP.MaKhoa,TenKhoa FROM DMLOP, DMKHOA WHERE DMLOP.MaKhoa = DMKHOA.MaKhoa
ệ ừ ế ỏ ề Khi th c hi n l nh s ki m tra đi u ki n t ng dòng, n u th a mãn
ể ệ ệ ự ả ị ế thì hi n th k t qu . ẽ ể
ổ
ớ ớ ọ
ọ
ằ
ố
ề ộ 4. Thay đ i tiêu đ c t SELECT MaLop AS 'Mã l p', TenLop AS 'Tên l p’, Khoahoc AS 'Khóa h c’. FROM DMLOP Ho cặ ớ ớ SELECT 'Mã l p'= MaLop, 'Tên l p‘=TenLop,'Khóa h c‘=Khoahoc FROM DMLOP ứ ộ ể 5. H ng và Bi u th c c t SELECT TenMonhoc, Sodvht*15 AS ‘S tiêt’ FROM DMMOHOC
ọ ị ớ ữ ể Ví d : Hi n th Mã sinh viên, H , Tên, Gi i tính 0: N ; 1: Nam; Null
ụ không có.
ấ
ứ
ế ế
ả ả
ị ị
ị
C u trúc r nhánh CASE
ẽ
ể
CASE
WHEN THEN
[WHEN THEN
…
ELSE
END
ớ i tính’
SELECT Masv, Ho+Ten, CASE Gioitinh WHEN 1 THEN 'Nam’ WHEN 0 THEN N'N 'ữ ELSE N‘Không có’ END AS ‘Gi FROM SINHVIEN
ụ ể ạ ồ ị ọ Ví d : Hi n th danh sách g m H Tên, Ngày sinh d ng ‘dd/mm/yyyy’
ử ụ
S d ng hàm Convert ể ể ể
ể CONVERT(ki u_d _li u, bi u_th c [,ki u_chuy n_đ i]) ị ủ ữ ệ ổ ổ ữ ệ ứ ể ứ ể ể ượ Hàm có ch c năng chuy n đ i giá tr c a bi u th c sang ki u d li u đ c
ỉ ứ ị ch đ nh.
ạ ị ị ể ữ ổ là m t ộ giá tr sị ố nh m qui đ nh đ nh d ng d ằ
ể ể ượ ư ệ li u hi n th và đ
ể ị
ị ặ Tham s <ố ki u_chuy n_đ i> ị ị c qui đ nh nh sau: ạ ữ ệ Đ nh d ng d li u hi n th ị M c đ nh
Ki u ngày ể 0 (100) 101 (1) mm/dd/yyyy (mm/dd/yy) 102 (2) yyyymmdd (yymmdd) 103 (3) dd/mm/yyyy (dd/mm/yy)
SELECT HoTen,CONVERT(char(10),NgaySinh,101) AS 'Ngày Sinh'
FROM SINHVIEN
ụ ế ổ ệ ả ố Ví d : Cho bi t t ng s sinh viên hi n có trong b ng SINHVIEN
ử ụ S d ng Hàm Sum, Count, AVG
Select Count(MaSV) From SINHVIEN
ấ ả ế ng dòng trong k t qu truy v n ớ ạ ố ượ i h n s l
ầ ẫ ấ
ẫ ấ
6. Gi TOP n: truy v n n m u tin đ u tiên ầ TOP N%: Truy v n n% m u tin đ u tiên. ạ ỏ ữ ị DISTINT: Lo i b nh ng giá tr trùng nhau trong danh sách.
Ví d :ụ SELECT TOP 5 Ho,Ten,Ngaysinh FROM SINHVIEN
ể ớ ị
ọ Ví du: Hi n th các Khoa có l p h c SELECT DISTINCT MaKhoa FROM DMLOP
ệ
ề
ệ
2. Đi u ki n trong câu l nh SELECT
ộ ằ ệ ệ ừ khóa WHERE, là m t WHERE <Đi u ki n>: Đi u ki n n m sau t
ề ứ
ề ệ
ộ ậ ử
ề ồ ể bi u th c Logic g m các phép toán sau: ử ế ợ 1. Các toán t k t h p đi u ki n:AND, OR ử so sánh: >,<,>=,<=,<>,!<,!>, = 2. Các toán t ữ ệ ớ ạ ể ủ i h n c a d li u: BETWEEN/NOT BETWEEN 3. Ki m tra gi ợ ợ ộ ậ Toán t thu c t p h p, không thu c t p h p: 4. ấ IN (dãy giá tr | truy v n Select|…), NOT IN ()
ạ ể
ự ạ ệ đ i di n>
ớ
ự
ạ ạ ự
ự ự ư ỉ ị ị
ữ ệ
1. Ki m tra khuôn d ng d li u:
LIKE /NOT LIKE [dãy ký t
[ABC] ự ự ơ ự ỉ ị [^dãy ký t ]: ký t ằ
đ n KHÔNG n m trong dãy ký t ch đ nh ủ ể ụ Ví d : Hi n th danh sách g m MaSV, HoTen, Malop, c a
ồ ớ ữ ị
nh ng sinh viên l p ‘CT11’
SELECT MaSV, Ho, Ten, MaLop
FROM DMLOP
WHERE MaLop=‘CT11’ ủ ụ ể ị Ví d : Hi n th danh sách g m MaSV, HoTen, Malop c a
ồ ữ ớ nh ng sinh viên l p ‘CT11’, CT12’ SELECT MaSV, Ho, Ten, MaLop
FROM DMLOP
WHERE MaLop IN (‘CT11’, ‘CT12’ ) SELECT MaSV, Ho, Ten, MaLop
FROM DMLOP
WHERE
MaLop=‘CT11’ OR MaLop=‘CT12’ SELECT Ho,Ten FROM SINHVIEN
WHERE Ho LIKE 'Lê%‘ ụ ọ ể ị Ví d : Hi n th danh sách sinh viên có h là Lê ư ể ẫ ộ ỏ ị V n câu h i đó nh ng hi n th thêm c t TenLop Bài t pậ : ữ ồ Danh sách sinh viên g m: MaSV, Ho, Ten, GioiTinh (Nam,N ), Ngày sinh (dd/mm/yyyy) ằ ế ữ ọ ắ ầ t nh ng sinh viên có h b t đ u b ng N,L,T ị ể ữ ớ ị ể ở ớ ổ ấ ị ị ố ượ ọ ớ ướ ữ ị c năm 1995 ể ị ộ ỏ ể ẫ ị Cho bi
Hi n th danh sách sinh viên n l p CT11 và CT12.
Hi n th danh sách sinh viên không
l p CT11.
Hi n th danh sách 5 sinh viên có tu i cao nh t.
ể
Hi n th s l
ể
ng sinh viên h c l p CT11.
Hi n th danh sách sinh viên n có sinh tr
ể
Hi n th danh sách sinh viên có DiemMH <5
V n câu h i trên nh ng hi n th thêm c t Khoahoc
ư ộ ổ ể ư ế ố m t nhóm nh : đ m s sinh viên m i ỗ l pớ , ủ ỗ sinh viên, … ộ ố ộ ổ ủ ị ứ ế ố ị Dùng đ tính t ng theo
Tính ĐTB c a m i
M t s hàm g p
ứ
ị
ể
1. SUM([ALL | DISTINCT] bi u_th c): Tính t ng các giá tr .
ứ
ể
2. AVG([ALL | DISTINCT] bi u_th c): Tính trung bình c a các giá tr
ể
3. COUNT([ALL | DISTINCT] bi u_th c): Đ m s các giá tr trong ứ ể bi u th c. ượ ố ọ ể
ể ỏ ế
4. COUNT(*): Đ m s các dòng đ
c ch n.
ị ớ
ứ
ấ
5. MAX(bi u_th c): Tính giá tr l n nh t
ấ
ị
ứ
6. MIN(bi u_th c): Tính giá tr nh nh t ố ượ ỗ ớ ng ủ
sinh viên c a m i l p ử ụ Ví d : Đ m s l
ụ ế
ộ ả
S d ng m t b ng SINHVIEN ổ Vùng phân nhóm là Malop, Vùng tính t ng là MASV Select MaLop, Count(MaSV) AS Siso
From SINHVIEN
Group by MaLop ể ị ở ả Hi n th thêm vùng TenLop b ng DMLOP. SELECT DMLOP.MaLop,TenLop,COUNT(MaSV) AS Siso
FROM DMLOP, SINHVIEN
WHERE DMLOP.MaLop=SINHVIEN.MaLop
GROUP BY DMLOP.MaLop,TenLop ừ ề ệ khóa HAVING <Đi u ki n nhóm>
ữ ổ ố ớ Thêm t
ư
ụ
Ví d : Đ a ra danh sách nh ng l p có t ng s sinh viên >10 SELECT DMLOP.MaLop,TenLop,COUNT(MaSV) AS Siso
FROM DMLOP, SINHVIEN
WHERE DMLOP.MaLop=SINHVIEN.MaLop
GROUP BY DMLOP.MaLop,TenLop
HAVING COUNT(Masv)>10 ừ ụ ọ ỳ Ví d : Tính Đi m Trung bình chung h c k theo t ng sinh viên. Xu t d
ấ ữ ệ ả ể
ớ li u ra b ng m i có tên DIEMTBC ử ụ ứ ể ả
S d ng b ng DIEMTHI
Vùng phân nhóm là: MaSV,Hocky
ổ
Bi u th c tính t ng là (cid:0) (DiemMH*Sodvht)/(cid:0) (Sodvht) SELECT
MaSV, Hocky,Sum(DiemMH*Sodvht)/Sum(Sodvht) AS DTBC
INTO DIEMTBC
FROM DIEMTHI,DMMON
WHERE DMMON.MaMon=DIEMTHI.MaMonhoc
GROUP BY Masv,H ckyọ ừ Tính Đi m trung bình chung c a các h c k cho t ng sinh viên. ữ ỳ
ị ọ ủ Bài t pậ
1.
2. Cho bi ế thi u đi m trên 25 (sinh viên i l p) ở ạ ớ ữ ọ i l p). ữ ủ ớ
ữ ủ ừ ế
ế ể
ọ
ủ
ố ơ
ế
ổ
t nh ng sinh viên có t ng s đ n v h c trình c a các môn
ở ạ ớ
ể
l
ế
ể
t nh ng sinh viên có Đi m TK các môn h c <3 ( l
ố
ố
ế ớ
ọ ạ ấ ả ổ 3. Cho bi
4. Đ m s sinh viên Nam, N c a l p CT11
5. Đ m s sinh viên Nam, N c a t ng l p.
6. Cho bi t giáo viên d y ít nh t 2 môn h c. B sung thêm b ng GIAOVIEN(MaGV, HoTen, Dienthoai, MonGDay) ế ạ ấ ọ 7. Cho bi ữ ế ấ ạ ủ ừ ổ ố ọ
t giáo viên d y ít nh t 2 môn h c ‘001’ và ‘002’. (L c ra
ố ố
ộ
nh ng giáo viên d y ít nh t m t môn ‘001 và ‘002’, Đ m s s
ớ
môn d y c a t ng giáo viên v i đk t ng s môn d y =2) ọ ạ
ố t MaSV h c t ọ ấ ả
ổ ố ượ ố ượ ổ ọ
t c các môn h c. (Đ m s môn h c
ằ
ng ế
ng b ng t ng s l c a t ng sinh viên, có t ng s l
ọ
c a các môn h c) ế ọ ấ ạ
ế
8. Cho bi
ủ ừ
ủ
9. Cho bi t Tên sinh viên có ít nh t 2 môn h c có DiemMH <5 ứ ệ ể ể ộ ự
ộ ấ ậ ợ ử ư Khi c n th c hi n phép ki m tra giá tr c a m t bi u th c có thu c hay
ể
ị ủ
không thu c trong t p h p các giá tr c a truy v n con hay không, ta có th
ử ụ
s d ng toán t IN (NOT IN) nh sau: ứ ể ệ SELECT …
WHERE ế ớ t Tên l p có sinh viên tên Hoa Ví d :ụ
Cho bi Select TenLop
From DMLOP
Where MaLop IN ( Select Malop
From SINHVIEN
Where Ten=N’Hoa’) ụ ế ế ể ọ Ví d 2: Cho bi t Tên Môn h c không có sinh viên thi u đi m MH Select TenMonhoc
From DMMONHOC
Where MaMonhoc NOT IN ( Select Mamonhoc From DIEMTHI
Where DiemMH<5) ừ ề ơ ị ượ
4.2 L
Trong tr ộ ng t
ườ
ả ợ
ừ ướ
tr ng t ấ
ng h p t p h p các giá tr trong truy v n con nhi u h n
ấ
c (Truy v n con đó)
ố ơ
ọ ớ m t thì ta ph i thêm l
Ví d : Cho bi
ế
ụ
ố ơ
ằ ị ọ ủ ặ ơ Exists, All, Any
ợ ậ
ượ
t danh sách các môn h c có s đ n v h c trình l n
ọ
Đ a l c t p h p ị ọ
h n ho c b ng s đ n v h c trình c a môn h c có mã là 001
ợ
ừ ướ ậ
ư ượ
ng t
tr
ị
Ộ
ơ
ề
có nhi u h n M T giá tr SELECT *
FROM DMMONHOC
WHERE SoDvht>= (SELECT SoDvht
FROM DMMONHOC
WHERE MaMonhoc='001') ượ
ng t
ể ừ
ALL
ứ ộ L
ụ ớ ớ ằ ặ ủ ậ t c các giá tr đi m c a t p ấ
ế
t Mã sinh viên có DiemMH l n nh t
Ví d : Cho bi
ị ể
ấ ả
ơ
Nghĩa là l n h n ho c b ng t
DiemMH Select MaSV
From DIEMTHI
Where DiemMH >=ALL (Select DiemMH
From DIEMTHI) ụ ớ ấ
t Tên sinh viên có DiemMH l n nh t ế
Ví d : Cho bi
Select Ho, Ten
From DIEMTHI,SINHVIEN
Where (DiemMH >=ALL(Select DiemMH from DIEMTHI)
AND SINHVIEN.MaSV=DIEMTHI.Masv ng t Any ừ
ứ ộ ệ ấ ỳ ể ớ ơ ế L
ượ
ể
ọ ủ h c c a sinh viên có Mã là ‘001’ Select MaSV, Mamonhoc From DIEMTHI ANY (Select DiemMonhoc Where DiemMH >= From DIEMTHI Where MaSV=‘001’) ượ ừ EXISTS L ng T ấ ấ ế ừ EXISTS tr v giá tr True n u k t qu c a truy v n con có ít [NOT] EXISTS (truy_v n_con)
ả ủ
ị ị
ế
ượ ạ ở ề i tr v giá tr False c l ự ượ
ấ
ươ ả ề
ỗ
NOT EXISTS ọ ọ
t thông tin môn h c có sinh viên h c ng t
L
ộ
nh t m t dòng (khác r ng), ng
ng t
T
ế
ụ
Ví d : Cho bi
Select * From DMMONHOC
Where Exists (Select * From DIEMTHI Where DMONHOC.MaMon=DIEMTHI.MaMon) ể ư ệ t h tên c a nh ng sinh viên hi n ch a có đi m ủ ủ
ọ ? Ví dụ: Cho bi
ữ
ế ọ
ấ ỳ ộ
thi c a b t k m t môn h c nào
SELECT Ho, Ten
FROM SINHVIEN
WHERE NOT EXISTS(SELECT Masv FROM DIEMTHI WHERE DIEMTHI.Masv=SINHVIEN.Masv) ặ ả ẽ ị ạ ỏ ậ ố ậ ả ả Union (h p)ợ
Except (Hi u)ệ
Intersect (Giao)
ể :
Đ c đi m
ế
Các dòng gi ng nhau trong t p k t qu s b lo i b
ả ợ
Các t p h p tham gia trong phép toán ph i kh h p nghĩa là ph i ợ
ộ
ữ ừ ậ
cùng t p các c t.
ữ ạ
l ố
i nh ng dòng gi ng nhau thêm t khóa ALL Gi
Union All, Except All, Intersect All
Cú pháp ] ệ
Câu_l nh_1
{UNION | EXCEPT | INTERSET} [ALL]
ệ
Câu_l nh_2
[{UNION | EXCEPT | INTERSET} [ALL]
ệ
Câu_l nh_3
...
[{UNION | EXCEPT | INTERSET} [ALL]
ệ
Câu l nh_n] ộ ậ ấ ả ị ủ ề ấ ợ H p c a 2 hay nhi u truy v n Select là m t t p t ộ
t c các b giá tr c a ủ
ấ các truy v n đó. ế ọ ộ Vidu: Cho bi ấ
t mã sinh viên đã h c ít nh t m t môn có mã là “001”, “002” Select Masv From DIEMTHI
Where Mamon=‘001’
Union
(Select Masv From DIEMTHI
Where Mamon=‘002’) ủ ộ ộ ị t c các b giá tr thu c ộ ậ ấ ả
ấ ệ
ấ ư ộ ấ
Hi u c a 2 truy v n A và B là m t t p t
truy v n A nh ng không thu c truy v n B. ụ ọ ế ư
t Mã sinh viên ch a h c môn nào
ả ở ả Ví d : Cho bi
ữ
Là nh ng sinh viên có trong b ng SINHVIEN mà không b ng DIEMTHI Select MaSV from SINHVIEN
Except
(select MaSV from DIEMTHI) ộ ậ ấ ồ ộ ị
Giao c a 2 hay nhi u truy v n Select là m t t p g m các b giá tr ủ
ộ ề
ấ thu c các truy v n đó. ụ ế ả ọ Ví d : Cho bi t Mã sinh viên h c c hai môn có mã ‘001’ và ‘002’ Select Masv from DIEMTHI Where MAMONHOC='001'
Intersect
(Select Masv from DIEMTHI where MAMONHOC='002') ư
ư ượ
ượ ọ
c h c
ọ
c h c. ả
ả ế
ế
ế
ế
ế ạ
ạ
ạ ố ơ ị ọ ọ
t Mã môn h c mà ch a đ
ọ
t Tên môn h c mà ch a đ
t Mã giáo viên d y c hai môn có mã ‘001’ và ‘002’
t Tên giáo viên d y c hai môn có mã ‘001’ và ‘002’.
ọ
t Mã giáo viên d y môn h c có s đ n v h c trình ế ộ ọ ọ ấ 1. Cho bi
2. Cho bi
3. Cho bi
4. Cho bi
5. Cho bi
>=5.
6. Cho bi t Masv h c ít nh t m t h c do giáo viên mã ‘001’. ệ
ệ
ệ
ệ L nh INSERT
L nh UPDATE
L nh DELETE
6.1 L nh INSERT ữ ệ ộ ả
Dùng đ b sung thêm các dòng d li u vào m t b ng ữ ệ ổ ể ổ
ừ B sung t ng dòng d li u Cú pháp l nhệ
INSERT INTO tên_b ngả [(danh_sách_c tộ )]
VALUES(danh_sách_trị) ấ ữ ệ ừ ữ ệ ổ ằ B sung nhi u dòng d li u b ng cách truy xu t d li u t ề
ữ ệ ệ ả
các b ng d li u khác.
Cú pháp l nhệ
INSERT INTO tên_b ngả [(danh_sách_c tộ )]
Câu l nh Select ớ ộ ộ ả ị Ví d : B sung m t dòng vào b ng DMKHOA v i b giá tr sau ụ ổ
ế
(‘KT’, ‘K toán’) ế
ấ ả ộ ả t c các c t trong b ng INSERT INTO KHOA(Makhoa, TenKhoa)
WITH (‘KT’, ‘K toán’)
B sung t
ổ
INSERT INTO KHOA ế
WITH (‘KT’, ‘K toán’,NULL) ệ 6.2 L nh UPDATE ề ể ậ ậ ữ ệ ộ ả Dùng đ c p nh t d li u cho nhi u c t trong b ng
Cú pháp
UPDATE tên_b ngả
SET Tên_c t 1 = bi u_th c 1,
Tên_ c t 2 = bi u th c 2 ể
ể
ể ứ
ứ
ứ [, ..., Tên_c t_k = bi u_th c_k] ề ệ ộ
ộ
ộ
[FROM Danh dách b ng]ả
[WHERE đi u_ki n] ỉ ậ ỏ ề ệ Where: ch c p nh t c t có dòng th a mãn đi u ki n ữ ệ ớ ề ả ậ ộ
ậ ậ
From: D li u c p nh t liên qua t i nhi u b ng. ậ ữ ệ ộ ế ụ ậ ạ ả Ví d : Thêm c t X p lo i trong b ng DIEMTBC, C p nh t d li u ầ ộ ỏ ượ ạ
i
c l
ượ ạ
i
c l ế
ế
ế ế cho c t đó theo yêu c u sau:
ế
ạ
i, ng
N u DiemTBC >=8 thì x p lo i Gi
ạ
ế
N u DiemTBC >=7 thì x p lo i Khá, ng
ạ
ế
N u DiemTBC >=5 thì x p lo i Trung bình
Ng i là y u ượ ạ
c l Alter Table DIEMTBC
ADD Xeploai nvarchar(10) NULL Update DIEMTBC
Set Xeploai = Case i'ỏ
When DTBC>=8 then N'Gi
When DTBC>=7 then N'Khá'
When DTBC>=5 then N'Trung bình'
Else N'Y u'ế
END ệ ộ ả ể 6.3 L nh DELETE
ữ ệ
Đ xoá các dòng d li u trong m t b ng
Cú pháp ệ ề DELETE FROM tên_b ngả
[FROM danh_sách_b ng]ả
[WHERE đi u_ki n] ế ấ ả N u không có Where thì xóa t t c các dòng ỏ ả ữ ơ ạ Ví d : Xoá kh i b ng SINHVIEN nh ng sinh viên có n i sinh t i ụ
Huế DELETE FROM sinhvien
WHERE noisinh LIKE ‘%Hu %’ế ụ ỏ ả ữ ớ Ví d : Xóa kh i b ng DMLOP nh ng l p không có sinh viên nào
DELETE FROM DMLOP
WHERE Malop NOT IN (SELECT DISTINCT Malop
FROM sinhvien) ữ ị ả ớ ấ ả t c các dòng c a hai b ng. ế ố ồ ủ
ị INNER JOIN: Là phép k t n i g m nh ng dòng có giá tr so
ế ố ồ
ả
kh p nhau trên c hai b ng.
FULL JOIN: Phép k t n i g m t
ả
ế ố ồ
RIGHT JION: Phép k t n i g m các dòng có giá tr so kh p
ớ
Ả ủ ộ ả ả ả nhau trên c hai b ng và các dòng thu c b ng bên PH I c a
liên k tế ớ ị LEFT JION: Phép k t n i g m các dòng có giá tr so kh p ả ộ ủ ả ế ố ồ
ả nhau trên c hai b ng và các dòng thu c b ng bên TRÁI c a
liên k t.ế
Cú pháp l nh:ệ
SELECT … ử ổ ả (Tham kh o trên c a s View) ố ị Ví d :ụ
ể
1.Hi n th danh sách sinh viên g m: MaSV, Ho, Ten, Malop, Tenlop, Gioitinh. (INNER JOIN) ế ứ ư ị
2.Hi n th MaLop, TenLop ch a có sinh viên nào (ch a giá tr ị
NULL) (LEFT/RIGHT JOIN) ị ấ ả ể
3.Hi n th t ả
t c các thông tin trên 2 b ng SINHVIEN và DMLOP. ộ ộ ả ư M t khung nhìn (view) có th đ ơ ở ữ ệ ộ ị ả
c xem nh là m t b ng “ o”
ượ
c đ nh nghĩa thông qua ộ ệ ấ ể ượ
trong c s d li u có n i dung đ
m t truy v n (câu l nh SELECT) ạ ằ
ả ạ ố ượ
i đ i t ng View ẩ ả Cách t o View
C1: Thao tác b ng chu t
ộ
(cid:0) Click ph i t
(cid:0) Ch n New View
ọ
(cid:0) Đ y các b ng ế Th t
ư Ghi đi u ề
ắ
ế
1. Ch a các b ng liên k t
ệ ọ
ki n l c ứ ự
sx
ả
u tiên ề ộ
ọ ộ Tiêu đ c t Ch n c t S p x p
ị
ứ
ể
Hi n th
ộ
c t hay
không ự ố 2. Xây d ng các tham s cho view ươ ệ
3. Câu l nh SQL t ứ
ng ng ả
ế
4. K t qu ồ ể Ví d :ụ
1. Hi n th danh sách sinh viên g m MaSV, Ho,Ten, Ngaysinh, ị
Gioitinh TenLop. ể ị Ví d : Hi n th danh sách sinh viên g m MaSV, Ho,Ten, Ngaysinh, ồ
ữ ọ ớ ụ
Gioitinh TenLop c a ủ sinh viên n h c l p ‘CT11’,’CT12’ ố ượ ỗ ớ Ví d : Đ m s l
ụ ế ng sinh viên m i l p ỏ ể ấ ồ ể ả ờ ạ i các d ng Câu h i ki m tra 15 phút:
Câu s 1ố :
1.Phép toán NOT IN () trong c u trúc l ng nhau đ tr l
ỏ ụ câu h i nào cho ví d
ể ữ ọ ị ớ
2.Hi n th danh sách sinh viên g m Masv, H Tên, gi
ữ ớ ủ ữ ồ
i tính (nam,n ),
Ngày sinh (dd/mm/yyyy), Malop c a nh ng sinh viên n l p CT11 và CT12. ẽ ả ờ ạ ỏ ụ i cho các d ng câu h i nào, cho ví d ừ
ể ị ớ ọ Câu s 2ố :
1.T khóa Group by s tr l
2.Hi n th danh sách sinh viên g m Masv, H Tên, gi ắ ầ ữ ủ ằ ữ ữ
ồ
i tính (nam,n ),
Ngày sinh (dd/mm/yyyy), Malop c a nh ng sinh viên có tên b t đ u b ng
ch L,N,H ắ ươ t ch ng 3 ể ả ờ ấ ỏ ạ i các d ng câu h i ừ ề ệ ế ả ỏ
ừ
t ả ờ
1.T khóa Where tr l
ữ
ấ
ỏ
l y d
2.Câu h i ệ ọ
i câu h i có đi u ki n l c
ệ
li u
thì ườ ủ ế ế ế ả ớ ộ ẫ
ng d n t ừ 3.T khóa Group by s tr l
ỏ ừ
ề ư
ế ạ
ị ể ấ ề
ố
thêm đi u ki n k t n i
2 b ng
(SINHVIEN.Malop=DMLOP.Malop, DIEMTHI.MaMH=DMMON.MaMH, …) khi đó đ ể
ả
tham chi u đ n c t liên k t thì ph i thêm đ
i b ng c a nó
(SINHVIEN.Malop, DIEMTHI.Malop)
ẽ ả ờ
ít nh tấ 2,3, … giá tr hay t ỏ
ấ ả
ể ậ ợ ọ ọ ổ
i cho các d ng câu h i nh : tính t ng theo t ng
t c (thi u đi m ít nh t 2 môn
t c môn h c). Tuy nhiên ta có th dùng phép toán t p h p ệ
nhóm, đi u ki n th a mãn
ọ
ấ ả
h c, 3 môn h c, …, t
ứ ạ
Intersect (ph c t p)
ậ ợ ữ ạ ỏ ừ ư ữ 4.Phép toán t p h p Except tr l i nh ng d ng câu h i có t “ch a ” (Nh ng ả ờ
Ư ọ l p ớ CH AƯ có sv nào, sinh viên CH A h c môn nào) ượ ể ể ế ả ấ ị ị Exists đ ki m tra k t qu truy v n có giá tr tr hay không ườ ừ
ng t
ậ (th ể ả ờ ấ ồ ạ ỏ 5.Dùng l
ng dùng trong l p trình)
6.Phép toán NOT IN () trong c u trúc l ng nhau đ tr l ủ
i các d ng câu h i ph ị đ nh (KHÔNG thi u môn h c nào, KHÔNG …) ả ờ ượ ừ ỏ ạ Ấ Ấ ỏ ế
ALL th ọ
ng tr l 7.L ớ
i cho các câu h i d ng l n NH T, nh NH T. (>= ườ
ng t
ặ
ALL(…) ho c <=ALL(…))
ấ ướ ề Chú ý: trong các c u trúc ph c t p thông th ườ
ng ta ph i quy v tìm MÃ tr
ồ ứ ạ
ử ụ ả
ể ắ ầ ế ằ c
ấ
(masv, malop, MaMH, …) sau đó s d ng c u trúc l ng nhu đ tìm các tông tin khác
(Tên sv thi u 2, Tên sv b t đ u b ng ‘N’, …) :
Tóm t
Dùng câu trúc truy v n Select đ tr l
sau: ừ ượ ừ ử ụ t các t khóa, l ng t , phép toán s d ng ỏ ế
Hãy cho bi
trong các câu h i sau:ữ ệ
ố
ớ
3. Th ng kê d li u v i GROUP BY
ữ
ọ
ấ
t nh ng sinh viên có ít nh t 2 môn h c có DiemMH <5
ế
ữ
c h t: L c ra nh ng sinh viên có DiemMH các môn <5
Ví d : Cho bi
ế
ụ
Tr
ọ
ướ
ế
ố
ọ ủ ừ
ớ
ọ
ố
ề
ệ
Đ m s môn h c c a t ng sinh viên v i đi u ki n s môn h c >=2
ử ụ
ử ự
ử ụ
S d ng B ng DIEMTHI
ả
S d ng T khóa WHERE
ừ
S d ng GROUP BY có HAVING
Select MaSV, Count(MaMonhoc) AS Soluong
From DIEMTHI
Where DTB<5
Group By MaSV Having Count(MaMonhoc) >=2
Thêm vùng: Ho, Ten, Lop.
Ứ Ạ
ồ
Ấ
4. CÁC C U TRÚC PH C T P
ề ệ
(G m nhi u l nh Select)
ấ
ồ
4.1 S d ng c u trúc l ng nhau: (truy v n con)
ộ
ử ụ
ầ
ấ
ị ủ
Ậ Ợ
5. PHÉP TOÁN T P H P
ợ
5.1. Phép h p (Union)
ệ
5.2 Phép hi u (Except)
5.3 Phép giao (Intersect)
Bài t pậ
Ữ Ệ
Ổ
Ậ
Ậ
6. B SUNG, C P NH T, XÓA D LI U
Ố
Ạ
7. CÁC LO I PHÉP N I
II . KHUNG NHÌN (WIEW)
ữ ỗ ớ
ố
ế
Ví du: Đ m s sinh viên n m i l p
ế ớ
Ví d : Cho bi
ụ
ư
t L p nào ch a có sinh viên
ữ ớ
ữ ớ
ố
ố
ế
ế
1.
2.
Đ m s sinh viên n l p CT11
Đ m s sinh viên nam, n l p CT11
ế
ắ ầ
ữ
ọ
ằ
3.
Cho bi
t nh ng sinh viên có h không b t đ u b ng N,L,T
ở ớ
ể
ị
4.
Hi n th danh sách sinh viên không
l p CT11.
ổ
ấ
ể
ị
5.
Hi n th danh sách 5 sinh viên có tu i cao nh t.
ớ
ổ
ố
ế
ế
ọ
ữ
ữ
6.
7.
Cho bi
Cho bi
t nh ng l p có t ng s sv >7
ấ
t nh ng sinh viên có ít nh t 2 môn h c có DiemMH <5
ế
ữ
ị ọ
ủ
8.
i l p)
ữ
ở ạ ớ
i l p).
l
ọ
ọ
ọ Ấ
ọ
ấ
ể
ấ
ế
ế
ế
ế
ế
ế
ọ
Cho bi
ế
thi u đi m trên 25 (sinh viên
9.
Cho bi
10. Cho bi
11. Cho bi
12. Cho bi
13. Cho bi
14. Cho bi
ổ
ố ơ
t nh ng sinh viên có t ng s đ n v h c trình c a các môn
ở ạ ớ
ể
l
ọ
ể
t nh ng sinh viên có Đi m TK các môn h c <3 (
ế
t tên sinh viên KHÔNG thi u môn h c nào
Ả
t tên sinh viên h c T T C các môn h c
t tên sinh viên h c ít nh t hai môn có mã ‘001’ và ‘002’
t tên sinh viên có đi m môn ‘001’ cao nh t.
ọ
ư
t Tên môn h c mà ch a có sinh viên nào h c