Bài giảng Hệ quản trị cơ sở dữ liệu SQL Server - Chương 3: Transact-SQL & Truy vấn dữ liệu - Nguyễn Thị Mỹ Dung

Chương 3: Transact-SQL  
GVPT: NGUYỄN THỊ MỸ DUNG  
SỐ TC: 2  
SỐ TIẾT: LT: 20; TH: 20  
1
Biên soạn: Nguyễn Thị Mỹ Dung  
Chương 1: Tổng quan về SQL Server (LT: 2)  
Chương 2: Tạo và quản trị CSDL (LT: 6; TH: 6)  
Chương 3: Transact-SQL và truy vấn dữ liệu  
(LT: 6: TH: 8)  
Chương 4: Lập trì nh với Transact-SQL (LT: 4:  
TH: 4)  
Chương 5: Bảo Mật và Phâ n Quyền (LT: 2; TH:  
2)  
Chương 6: Kết nối CSDL (Tự học)  
2
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
1
Chương 3: Transact-SQL  
I. Ngôn ngữ xử lý dữ liệu (DML - Data Manipu-  
lation Language): thêm, sửa, xóa  
II. Tìm kiếm trên một bảng  
III. Tìm kiếm trên nhiều bảng  
IV. Truy vấn con lồng nhau  
V. Sắp xếp  
VI. Nhóm dữ liệu và thống kê  
Bài tập chương 3  
3
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Thêm dữ liệu vào bảng  
Dạng 1: Thêm 1 dò ng dữ liệu  
INSERT INTO <Tên_bảng> [(ds_thuộc_tính)]  
VALUES (<gt1>, <gt2>, …, <gtn>)  
Dạng 2: Thêm nhiều dò ng dữ liệu  
INSERT INTO <Tên_bảng> [(ds_thuộc_tính)]  
SELECT <th_tí nh_1>, …, <th_tí nh_n>  
FROM <ds_bảng>  
[WHERE <đ_kiện>]  
4
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
2
Chương 3: Transact-SQL  
Ví dụ 1:  
INSERT INTO SV_DT (Masv, MaDT, KQ)  
VALUES (‘SV001’, ‘DT08’, 8)  
Ví dụ 2: Thêm dữ liệu sinh viên SV005 thực hiện tất  
cả đề tài.  
INSERT INTO SV_DT  
SELECT ‘SV005’,MADT, N‘Đồng Tháp’, 8  
FROM DETAI  
5
Biên soạn: Nguyễn Thị Mỹ Dung  
Nhận xé t:  
- Thứ tự cá c giá trị phải trùng với thứ tự cá c cột,  
- Có thể thêm giá trị NULL ở những thuộc tí nh  
khô ng là khó a chí nh hoặc NOT NULL,  
- Cá c giá trị thuộc tí nh khó a khô ng được trùng,  
- Câ u lệnh INSERT sẽ gặp lỗi nếu vi phạm  
RBTV (Khó a chí nh, tham chiếu, trùng tên,…), cá c  
thuộc tí nh có ràng buộc NOT NULL bắt buộc phải có  
giá trị.  
6
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
3
Chương 3: Transact-SQL  
2. Cập nhật (Sửa) dữ liệu  
UPDATE <Tên_bảng>  
SET <thuộc_tính1> = <giá_trị_mới1>,…,  
<thuộc_tính_n> = <giá_trị_mới_n>,  
[FROM <Ds_bảng>]  
[WHERE <Điều_kiện>]  
Ví dụ 21::  
UPUDPADTAETEDES_ITNAHIVIEN  
SESTEKTINHHOPCHLIUC= K=IN6H.2P,HNIA+MS2INH = 1991  
WHERE MASV = ‘SV006’  
7
Biên soạn: Nguyễn Thị Mỹ Dung  
3. Xó a dữ liệu bảng  
Dạng 1: Xó a một số bộ từ bảng  
DELETE FROM <Tên_bảng>  
-- Nếu đk có trong bảng khá c  
[FROM <Tên_bảng_n>]  
[WHERE <Điều_kiện>]  
Dạng 2: Xó a tất cả cá c bộ từ bảng  
TRUNCATE TABLE <Tên_bảng>  
VD1: Xó a những mô n học dưới 20 tiết  
DELETE FROM MON  
WHERE SOTIET < 20  
8
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
4
Chương 3: Transact-SQL  
VD2: Xó a bảng điểm của sinh viên khoa Tin học  
có điểm bé hơn 2  
DELETE FROM KETQUA  
FROM SINHVIEN S INNER JOIN KHOA K ON  
S.MAKH = K.MAKH  
WHERE S.MASV = KETQUA.MASV AND  
TENKH LIKE N'TIN HỌC' AND DIEM = 4  
VD3: Xó a tất cả kết quả của sinh viên  
TRUNCATE TABLE KETQUA  
9
Biên soạn: Nguyễn Thị Mỹ Dung  
VD4: Xó a tất cả những sinh viên chưa tham gia  
học tập mô n học nào.  
DELETE FROM SINHVIEN  
WHERE MASV NOT IN (SELECT MASV  
FROM SV_DT)  
Lưu ý:  
- Câ u lệnh Delete sẽ xó a tất cả dữ liệu trên  
bảng FROM gần nó nhất.  
- Nếu có nhiều FROM trong câ u lệnh Delete  
thì Bảng tại FROM gần Delete khô ng được đặt bí  
danh.  
10  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
5
Chương 3: Transact-SQL  
Nhận xé t:  
- Cá c lệnh UPDATE, DELETE có thể gâ y ra  
vi phạm RBTV (khô ng cho sửa, xó a, hoặc xó a  
luô n cá c dò ng dữ liệu tham chiếu hoặc dữ liệu  
tham chiếu sẽ là Null).  
- Điều kiện trong mệnh đề WHERE sẽ được  
thực hiện cho cá c dò ng thỏa điều kiện, nếu khô ng  
có mệnh đề WHERE toàn bộ bảng sẽ có ảnh  
hưởng.  
- Trá nh vi phạm RBTV khi xó a, nên xó a cá c  
dữ liệu bảng nhiều trước, sau đó xó a bảng một.  
11  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Select khô ng có điều kiện  
SELECT * | <Col1,Col2, …, Coln>  
FROM <Tên_bảng>  
Ví dụ 1: In ra thô ng tin chi tiết của tất cả sviên  
SELECT  
*
FROM sinhvien  
Ví dụ 2: In ra mã số, họ tên của tất cả sinh viên  
SELECT masv, hoten  
FROM sinhvien  
12  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
6
Chương 3: Transact-SQL  
2/ Select có điều kiện  
SELECT * | <danh_sách_trường>  
FROM <Tên_bảng>  
WHERE <Điều_kiện>[;]  
[HAVING <Điềukiện>]  
Ví dụ: In ra mã số, họ tên của tất cả sinh viên từ  
21 tuổi trở lên.  
SELECT MASV, HOTEN, NAMSINH  
FROM SINHVIEN  
WHERE (YEAR(GETDATE())-NAMSINH)>21  
13  
Biên soạn: Nguyễn Thị Mỹ Dung  
3. Select với Distinct | All  
- Distinct: loại bỏ phần tử trùng nhau  
-ALL: lấy tất cả cá c bộ kể cả phần tử trùng  
SELECT DISTINCT | All <danh_sách_cột>  
FROM <Tên_bảng>  
[WHERE <Điều_kiện>];  
VD1: in ra mã đề tài của cá c sinh viên thực hiện  
SELECTALL MADT  
FROM SV_DT  
VD2: in ra mã đề tài có nơi á p dụng là ‘Dong Thap’  
SELECTDISTINCT MADT  
FROM SV_DT  
WHERE NOIA_D = 'DONG THAP'  
Biên soạn: Nguyễn Thị Mỹ Dung  
14  
BG_SQL_SERVER  
7
Chương 3: Transact-SQL  
Ghi chú:  
- Mệnh đề WHERE kết hợp với cá c toá n tử:  
AND, OR: kết hợp nhiều điều kiện  
[NOT] LIKE: so sá nh chuỗi  
BETWEEN …AND…: so sá nh trong khoảng  
IS [NOT] NULL: tì m cá c bộ là (khô ng) rỗng.  
[NOT] IN: tì m trong/ ngoài danh sá ch  
- Cá c ký tự so sá nh đại diện đối với chuỗi: ‘%’  
(nhiều ký tự), ‘_’ (một ký tự).  
- Khi so sá nh cá c ký tự có dấu, đặt ‘N’ trước  
chuỗi so sá nh: N‘chuỗi’  
15  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Select nhiều bảng  
SELECT * | <Danhsáchtrường>  
FROM <Tênbảng1> [bí danh1] <loạikếtnối>  
<Tênbảng2> [bí danh2] ON <điềukiệnkếtnối>  
[WHERE<điềukiệnkếtnối>[AND|OR<điềukiệnchọn>]  
Trong đó <loạikếtnối>:  
INNER JOIN:  
LEFT[OUTER] JOIN:  
RIGHT [OUTER] JOIN: kết phải  
FULL [OUTER] JOIN: kết đầy đủ  
CROSS JOIN:  
kết trong (thường sử dụng)  
kết trá i  
kết liên bảng cho phé p kết tất  
cả cá c bộ có thể có (tương tự phé p kết tí ch đề-cá c),  
khi đó khô ng cần bất kỳ điều kiện kết nối nào.  
16  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
8
Chương 3: Transact-SQL  
Ví dụ 1: Tì m họ tên sinh viên thực hiện tên đề tài, kết  
quả từ 9 trở lên  
Cá ch 1:  
SELECT HOTENSV, TENDT,KETQUA  
FROM SINHVIEN S,DETAI D, SV_DT SD  
WHERES.MASV = SD.MASV AND SD.MADT= D.MADT  
AND KETQUA >= 9;  
Cá ch 2:  
SELECTHOTENSV, TENDT,KETQUA  
FROM ((SINHVIEN S INNER JOIN SV_DT SD ON  
S.MASV = SD.MASV) INNER JOIN DETAI D  
ON SD.MADT = D.MADT)  
WHEREKETQUA >= 9;  
17  
Biên soạn: Nguyễn Thị Mỹ Dung  
Ví dụ 2: Tì m họ tên của tất cả sinh viên thực hiện đề  
tài (có thể có sinh viên khô ng thực hiện đề tài) gồm,  
họ tên sinh viên, mã đề tài, kết quả  
SELECTHOTENSV, MADT, KETQUA  
FROM SINHVIEN S LEFT JOIN SV_DT SD ON  
S.MASV = SD.MASV  
Hoặc:  
SELECTHOTENSV, MADT, KETQUA  
FROM SINHVIEN S FULL JOIN SV_DT SD ON  
S.MASV = SD.MASV  
Ghi chú: SV thực hiện phé p kết Right Join, Inner  
Join, Cross Join để so sá nh kết quả hiển thị bằng SQL  
18  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
9
Chương 3: Transact-SQL  
2. SELECT với INTO  
INTO tạo ra bảng mới với thuộc tí nh được chọn  
từ SELECT…. FROM….  
SELECT<col1>,.. , <col_n>  
INTO <Tênbảngmới>  
FROM <danh_sách_bảng>  
[WHERE <Điều_kiện>]  
VD: Tạo bảng SV với cá c thô ng tin MaSV, HotenSV,  
hocluc từ bảng SINHVIEN và ketqua thực hiện đề tài  
từ bảng SV_DT  
SELECTMASV, HOTENSV, HOCLUC, KQ  
INTO SV  
FROM SINHVIEN S INNER JOIN SV_DT SD  
ON S.MASV = SD.MASV  
19  
Biên soạn: Nguyễn Thị Mỹ Dung  
3. Cá c phé p toá n tập  
hợp  
Ví dụ: Tì m tất cả họ tên  
chủ nhiệm và sinh viên  
USE QLDETAISV  
SELECTCHUNHIEM  
FROM DE_TAI  
Union [ALL]()  
SELECT<ds_trường>  
FROM <ds_bảng>  
[WHERE <điều_kiện>]  
UNION  
UNION  
SELECT<ds_trường>  
FROM <ds_bảng>  
[WHERE <điều_kiện>]  
SELECTHOTENSV  
FROM SINHVIEN  
20  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
10  
Chương 3: Transact-SQL  
Intersect [ALL] ()  
SELECT<ds_trường>  
FROM <ds_bảng>  
[WHERE <điều_kiện>]  
INTERSECT  
Ví dụ: Tì m MASV có  
quê quá n cùng với nơi á p  
dụng đề tài  
USE QLDETAISV  
SELECTMASV, QUEQUAN  
FROM SINHVIEN  
INTERSECT  
SELECT<ds_trường>  
FROM <ds_bảng>  
[WHERE <điều_kiện]  
SELECTMASV, NOIA_D  
FROM SV_DT  
21  
Biên soạn: Nguyễn Thị Mỹ Dung  
Except [ALL](-)  
SELECT<ds_trường>  
FROM <ds_bảng>  
[WHERE <điều_kiện>]  
EXCEPT  
Ví dụ: Tì m tất cả MASV  
có quê quá n khá c với nơi  
á p dụng đề tài  
USE QLDETAISV  
SELECTMASV, QUEQUAN  
FROM SINHVIEN  
EXCEPT  
SELECT<ds_trường>  
FROM <ds_bảng>  
[WHERE <điều_kiện>]  
SELECTMASV, NOIA_D  
FROM SV_DT  
22  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
11  
Chương 3: Transact-SQL  
Lưu ý 1: Phé p giao rs có thể viết theo nhiều cá ch  
như sau:  
Cá ch 1:  
SELECT* FROM r  
INTERSECT  
SELECT* FROM s  
Cá ch 2:  
SELECT* FROM r  
WHERE r.c IN (SELECT s.c FROM s)  
Cá ch 3:  
SELECT* FROM r  
WHERE EXISTS (SELECT * FROM s  
WHERE s.c=r.c)  
23  
Biên soạn: Nguyễn Thị Mỹ Dung  
Lưu ý 2: Phé p trừ r-s có thể viết theo nhiều cá ch như  
sau:  
Cá ch 1:  
SELECT* FROM r  
EXCEPT  
SELECT* FROM s  
Cá ch 2:  
SELECT* FROM r  
WHEREr.c NOT IN (SELECTs.c FROM s)  
Cá ch3:  
SELECT* FROM r  
WHERE NOT EXISTS (SELECT* FROM s  
WHEREs.c=r.c)  
24  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
12  
Chương 3: Transact-SQL  
Truy vấn con là một câ u lệnh SELECT được lồng  
vào bên trong một câ u lệnh SELECT, INSERT,  
UPDATE, DELETE hoặc bên trong một truy vấn khá c.  
Cú phá p:  
SELECT[ALL | DISTINCT] <danhsáchtrường>  
FROM <danhsáchbảng>  
WHERE <điềukiện> AND | OR <têntrường>  
<phé pSS>  
(SELECT<têntrường> FROM <Tên_bảng>  
[WHERE <điềukiện_s>])  
25  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Sử dụng truy vấn con với toá n tử IN  
Khi cần thực hiện phé p kiểm tra giá trị của một  
biểu thức có xuất hiện (khô ng xuất hiện) trong tập cá c  
giá trị của truy vấn con, ta có thể sử dụng toá n tử IN  
(NOT IN) như sau:  
WHERE <biểu_thức> [NOT] IN (<truy_vấn_con>)  
Ví dụ: Tì m những sinh viên khô ng thực hiện đề tài  
SELECTHOTENSV, HOCLUC  
FROM SINHVIEN  
WHERE MASV NOTIN  
(SELECTMASV FROM SV_DT)  
26  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
13  
Chương 3: Transact-SQL  
2. Truy vấn con với EXISTS  
Lượng từ EXISTS (NOT EXISTS) để kiểm tra  
xem một truy vấn con có trả về dò ng kết quả nào hay  
khô ng được sử dụng trong truy vấn con dưới dạng:  
WHERE [NOT] EXISTS (<truy_vấn_con>)  
Ví dụ: cho biết họ tên của những sinh viên hiện  
chưa có điểm thi của bất kỳ một mô n học nào  
SELECT hosv,tensv  
FROM sinhvien  
WHERE NOT EXISTS (SELECT masv  
FROM ketqua  
WHERE ketqua.masv=sinhvien.masv)  
27  
Biên soạn: Nguyễn Thị Mỹ Dung  
3. Truy vấn con với mệnh đề HAVING  
Một truy vấn con có thể được sử dụng trong  
mệnh đề HAVING của một truy vấn khá c. Kết quả của  
truy vấn con được sử dụng để tạo điều kiện đối với  
cá c hàm gộp.  
Ví dụ: Cho biết mã , tên và trung bì nh điểm thi của  
cá c mô n học có trung bì nh lớn hơn trung bì nh điểm  
của tất cả cá c mô n học.  
SELECTKETQUA.MAMH,TENMH, AVG(DIEM)  
FROM KETQUA,MONHOC  
WHERE KETQUA.MAMH = MON.MAMH  
GROUP BY KETQUA.MAMH,TENMH  
HAVING AVG(DIEM) >  
(SELECTAVG(DIEM) FROM KETQUA)  
28  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
14  
Chương 3: Transact-SQL  
4. Thực hiện phé p chia với truy vấn lồng  
nhau  
Sử dụng toá n tử NOT EXISTS để thực hiện:  
Cú phá p:  
SELECT *  
FROM R  
WHERE NOT EXISTS (SELECT *  
FROM S  
WHERE NOT EXISTS (SELECT *  
FROM R_S  
WHERE R_S.C1 = S.C1 AND  
R_S.C2 = R.C2))  
29  
Biên soạn: Nguyễn Thị Mỹ Dung  
Ví dụ: Tì m thô ng tin sinh viên thực hiện tất cả cá c đề  
tài  
SELECT*  
FROM SINHVIEN  
WHERE NOT EXISTS (SELECT *  
FROM DETAI  
WHERE NOT EXISTS (SELECT *  
FROM SV_DT  
WHERE SV_DT.MADT = DETAI.MADT  
AND  
SV_DT.MASV = SINHVIEN.MASV))  
30  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
15  
Chương 3: Transact-SQL  
Cho phé p sắp xếp cá c dò ng trong kết quả câ u  
truy vấn theo thứ tự tăng dần (hoặc giảm dần) dựa  
trên một hoặc nhiều trường làm tiêu chí  
Cú phá p:  
SELECT <DS trường>  
FROM <DS table>  
[WHERE <ĐK>]  
[GROUP BY <DS trường>]  
ORDER BY <DS trường> ASC|DESC  
. ASC: giá trị mặc nhiên, sắp xếp kết quả theo  
thứ tự tăng dần.  
. DESC: sắp xếp kết quả theo thứ tự giảm dần  
31  
Biên soạn: Nguyễn Thị Mỹ Dung  
Ví dụ: In ra thô ng tin gồm mã số, họ tên và kết  
quả tương ứng của sinh viên thực hiện cá c đề tài  
có nơi á p dụng ở Đồng Thá p. Danh sá ch được  
sắp thứ tự giảm dần theo kết quả thực hiện.  
SELECT Sinhvien.MaSV, Hoten, KQ  
FROM Sinhvien INNER JOIN SV_DT  
ON Sinhvien.MaSV = SV_DT.MaSV  
WHERE NoiA_D = N‘Đồng Thá p’  
ORDER BY KQ DESC  
32  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
16  
Chương 3: Transact-SQL  
Sử dụng ORDER BY với TOP  
Mệnh đề TOP dùng để hạn chế số bộ trong truy  
vấn. Cú phá p:  
SELECT TOP <số_lượng> <ds_trường>  
FROM <danh_sách_bảng>  
WHERE <điều_kiện>  
ORDER BY <danh_sách_trường> ASC|DESC  
Ví dụ: Tì m những đề tài có kinh phí cao nhất và nhì .  
SELECTTOP 2 MADT  
FROM SV_DT  
ORDER BY kinhphi DESC  
33  
Biên soạn: Nguyễn Thị Mỹ Dung  
Sử dụng ORDER BY với hàm RANK()  
Hàm RANK() dùng để xếp hạng theo ORDER  
BY. Cú phá p:  
SELECT RANK() OVER (ORDER BY <COL>  
[ASC | DESC]) AS <tên_trường>, <ds_trường>  
FROM <danh_sách_bảng>  
[WHERE <điều_kiện>]  
Ví dụ: Xếp hạng sinh viên theo kết quả thực hiện đề  
tài từ cao đến thấp.  
SELECTRANK() OVER (ORDER BY KQ DESC) AS  
XEPHANG, HOTENSV, KQ  
FROM SINHVIEN S INNER JOIN SV_DT SD ON  
S.MASV = SD.MASV  
34  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
17  
Chương 3: Transact-SQL  
Sử dụng ORDER BY với hàm ROW_NUMBER()  
Hàm ROW_NUMBER() dùng để đánh số thứ tự  
dò ng theo ORDER BY. Cú phá p:  
SELECT ROW_NUMBER() OVER (ORDER BY  
(SELECT<col>)) AS <tên_trường>, <ds_trường>  
FROM <danh_sách_bảng>  
[WHERE <điều_kiện>]  
Ví dụ: Thêm cột số thứ tự cho truy vấn.  
SELECTROW_NUMBER() OVER (ORDER BY  
(SELECT1)) AS STT, HOTENSV, KQ  
FROM SINHVIEN S INNER JOIN SV_DT SD ON  
S.MASV = SD.MASV  
35  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Thống kê với các hàm kết tập  
Cú phá p:  
SELECT[<DS trường>,] <Hàm kết tập>  
FROM <DS_bảng>  
[WHERE <Điều_Kiện>]  
[GROUP BY <DS_trường>]  
[HAVING <ĐK trên nhóm>]  
Cá c hàm kết tập bao gồm: SUM, MAX, MIN, AVG  
và COUNT.  
Đặt lại tên trường: Trong một số trường hợp tên  
trường của kết quả truy vấn khô ng phù hợp ta cần đặt  
lại tên trường  
Cú phá p:<Tên_trường_cũ> AS <Tên_trường_mới>  
36  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
18  
Chương 3: Transact-SQL  
Cá ch sử dụng cá c hàm:  
a. Hàm SUM (<Tên_trường>): Trả về tổng giá  
trị của tất cả cá c dò ng của một trường kiểu số  
Ví dụ: Tí nh tổng kinh phí của tất cả cá c đề tài  
SELECT SUM (Kinhphi) as Tong_KP  
FROM Detai;  
b. Hàm MAX (<Tên trường>): Trả về giá trị lớn  
nhất trong tất cả cá c dò ng của một trường  
Ví dụ: Tì m kinh phí lớn nhất của tất cả cá c đề tài  
SELECT MAX(Kinhphi) AS KP_MAX  
FROM Detai  
37  
Biên soạn: Nguyễn Thị Mỹ Dung  
c. Hàm MIN (<Tên trường>): Trả về giá trị nhỏ  
nhất trong tất cả cá c dò ng của một trường  
Ví dụ: Tì m kinh phí nhỏ nhất của tất cả cá c đề  
tài  
SELECT MIN(Kinhphi) AS KP_MIN  
FROM Detai  
d. Hàm AVG (<Tên_trường>): Trả về giá trị  
trung bì nh cộng của tất cả cá c dò ng một trường  
kiểu số  
Ví dụ: Tí nh trung bì nh cộng kinh phí của tất cả  
cá c đề tài  
SELECT AVG(Kinhphi) AS TBC_KP  
FROM Detai  
38  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
19  
Chương 3: Transact-SQL  
e. Hàm COUNT (<Tên trường>): Đếm cá c dò ng  
trong bảng theo một hoặc một số trường nào đó  
Ví dụ 1: In ra số lượng đề tài mà thầy Lê Đức Phúc  
làm chủ nhiệm  
SELECTCOUNT(MaDT) AS So_DT  
FROM Detai  
WHERE Chunhiem = ‘Lê Đức Phúc’  
Ví dụ 2: In ra họ tên của cá c giá o viên chủ nhiệm  
từ 2 đề tài trở lên  
SELECTChunhiem, COUNT(MaDT) AS SoLG  
FROM Detai  
GROUP BY Chunhiem  
HAVING COUNT(MaDT) >= 2  
39  
Biên soạn: Nguyễn Thị Mỹ Dung  
2. Gom nhó m sử dụng Compute, Compute By  
Cá c mệnh đề Compute và Compute By sinh ra cá c  
dò ng chi tiết và một dò ng tổng chí nh.  
Compute By sử dụng giống Group By. Thứ tự trong  
Compute By giống thứ tự trong Order By  
Cú phá p:  
SELECT<DS trường>,  
FROM <DS_bảng>  
WHERE <Điều_Kiện>  
[ORDER BY <Cột_nhóm>]  
[COMPUTE <Hàm_kết_tập>]  
[BY <Cột_Nhóm>]  
40  
Biên soạn: Nguyễn Thị Mỹ Dung  
BG_SQL_SERVER  
20  
Tải về để xem bản đầy đủ
pdf 22 trang yennguyen 15820 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu SQL Server - Chương 3: Transact-SQL & Truy vấn dữ liệu - Nguyễn Thị Mỹ Dung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_he_quan_tri_co_so_du_lieu_sql_server_chuong_3_tran.pdf