Chương 3: Transact-SQL

1

GVPT: NGUYỄN THỊ MỸ DUNG SỐ TC: 2 SỐ TIẾT: LT: 20; TH: 20

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)

2

Chương 6: Kết nối CSDL (Tự học)

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ê

3

Bài tập chương 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 [(ds_thuộc_tính)] VALUES (, , …, )

Dạng 2: Thêm nhiều dòng dữ liệu

INSERT INTO [(ds_thuộc_tính)]

4

SELECT , …, FROM [WHERE <đ_kiện>]

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

5

SELECT ‘SV005’,MADT, N‘Đồng Tháp’, 8 FROM DETAI

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, trùng tên,…), các tham chiếu, 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 SET = ,…, = ,

[FROM ] [WHERE <Điều_kiện>]

Ví dụ 2: Ví dụ 1:

UPDATE DE_TAI SET KINHPHI = KINHPHI + 2 UPDATE SINHVIEN SET HOCLUC = 6.2, NAMSINH = 1991

7

WHERE MASV = ‘SV006’

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 -- Nếu đk có trong bảng khác [FROMFROM ] [WHERE <Điều_kiện>] Dạng 2: Xóa tất cả các bộ từ bảng

TRUNCATE TABLE

VD1: Xóa những môn học dưới 20 tiết

8

DELETE FROM MON WHERE SOTIET < 20

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 FROMFROM SINHVIEN S INNER JOIN KHOA K O N

S.MAKH = K.MAKH

WHERE S.MASV = KETQUA.MASV AND

TENKH LIKE N'TIN HỌC' AND DIEM = 4

9

VD3: Xóa tất cả kết quả của sinh viên TRUNCATE TABLE KETQUA

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 ý: Lưu ý:

Delete sẽsẽ xóaxóa tất cả dữ liệu trên

- Câu lệnh Delete nhất. bảng FROMFROM gầngần nónó nhất bảng

- Nếu có nhiều FROM trong câu lệnh Delete không được đặtđặt bíbí Delete không

10

thì Bảng tại FROMFROM gầngần Delete danh. danh

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

11

dữ liệu bảng nhiều trước, sau đó xóa bảng một.

Biên soạn: Nguyễn Thị Mỹ Dung

1. Select không có điều kiện SELECT * | FROM 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

12

SELECT masv, hoten FROM sinhvien

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 * | FROM 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

13

FROM SINHVIEN WHERE (YEAR(GETDATE())-NAMSINH)>21

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 FROM [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’

SELECT DISTINCT MADT FROM SV_DT WHERE NOIA_D = 'DONG THAP'

14

Biên soạn: Nguyễn Thị Mỹ Dung

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 ‘NN’ 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 * | FROM [bídanh1]

kết trong (thường sử dụng)

kết trái kết phải kết đầy đủ kếtkết liênliên bảngbảng chocho phép

phép kếtkết tất tất các), (tương tựtự phépphép kếtkết tíchtích đềđề--các),

[bídanh2] ON <điềukiệnkếtnối> [WHERE<điềukiệnkếtnối>[AND|OR<điềukiệnchọn>] Trong đó : INNER JOIN: LEFT [OUTER] JOIN: RIGHT [OUTER] JOIN: FULL [OUTER] JOIN: CROSS JOINJOIN:: CROSS cảcả cáccác bộbộ cócó thểthể cócó (tương khikhi đóđó không

không cầncần bấtbất kỳkỳ điềuđiều kiệnkiện kếtkết nốinối nàonà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áchCách 11:: SELECT HOTENSV, TENDT,KETQUA FROM SINHVIEN S,DETAI D, SV_DT SD WHERE S.MASV = SD.MASV AND SD.MADT= D.MADT

AND KETQUA >= 9;

CáchCách 22::

SELECT HOTENSV, TENDT,KETQUA

FROM ((SINHVIEN S INNER JOIN SV_DT SD ON

S.MASV = SD.MASV) INNER JOIN DETAI D

ON SD.MADT = D.MADT)

WHERE KETQUA >= 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ả

SELECT HOTENSV, MADT, KETQUA FROM SINHVIEN S LEFT JOIN SV_DT SD ON

S.MASV = SD.MASV

Hoặc:

SELECT HOTENSV, MADT, KETQUA FROM SINHVIEN S FULL JOIN SV_DT SD ON

S.MASV = SD.MASV

GhiGhi chúchú:: SVSV thực

JoinJoin,, CrossCross JoinJoin đểđể soso sánh

thực hiệnhiện phépphép kếtkết RightRight JoinJoin,, sánh kếtkết quảquả hiểnhiển thị

Inner Inner thị bằngbằng SQLSQL

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 ,.. , INTO FROM [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

SELECT MASV, 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

Ví dụ: Tìm tất cả họ tên

chủ nhiệm và sinh viên

hợp  Union [ALL]()

USE QLDETAISV

SELECT CHUNHIEM

FROM DE_TAI

SELECT FROM [WHERE <điều_kiện>]

UNION

UNION

SELECT HOTENSV

FROM SINHVIEN

SELECT FROM [WHERE <điều_kiện>]

20

Biên soạn: Nguyễn Thị Mỹ Dung

BG_SQL_SERVER 10

Chương 3: Transact-SQL

 Intersect [ALL] ()

SELECT

Ví dụ: Tìm MASV có quê quán cùng với nơi áp dụng đề tài

FROM

USE QLDETAISV

[WHERE <điều_kiện>]

SELECT MASV, QUEQUAN

INTERSECT

FROM SINHVIEN

SELECT

INTERSECT

FROM

SELECT MASV, NOIA_D

[WHERE <điều_kiện]

FROM SV_DT

21

Biên soạn: Nguyễn Thị Mỹ Dung

 Except [ALL](-)

SELECT

Ví dụ: Tìm tất cả MASV có quê quán khác với nơi áp dụng đề tài

FROM

USE QLDETAISV

[WHERE <điều_kiện>]

SELECT MASV, QUEQUAN

EXCEPT

FROM SINHVIEN

SELECT

EXCEPT

FROM

SELECT MASV, NOIA_D

[WHERE <điều_kiện>]

FROM SV_DT

22

Biên soạn: Nguyễn Thị Mỹ Dung

BG_SQL_SERVER 11

Chương 3: Transact-SQL

LưuLưu ýý 11:: Phép giao rs có thể viết theo nhiều cách

như sau: CáchCách 11::

SELECT * FROM r INTERSECT SELECT * FROM s

CáchCách 22::

SELECT * FROM r WHERE r.c IN (SELECT s.c FROM s)

CáchCách 33::

SELECT * FROM r WHERE EXISTS (SELECT * FROM s

WHERE s.c=r.c)

23

Biên soạn: Nguyễn Thị Mỹ Dung

LưuLưu ýý 22:: Phép trừ r-s có thể viết theo nhiều cách như

sau:

CáchCách 11::

SELECT * FROM r EXCEPT SELECT * FROM s

CáchCách 22::

SELECT * FROM r WHERE r.c NOT IN (SELECT s.c FROM s)

CáchCách33::

SELECT * FROM r WHERE NOT EXISTS (SELECT * FROM s WHERE s.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 INSERT,

vào bên trong một câu lệnh SELECT, UPDATE, DELETE hoặc bên trong một truy vấn khác.

Cú pháp:

SELECT [ALL | DISTINCT]

FROM

WHERE <điềukiện> AND | OR

(SELECT FROM

[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 [NOT] IN () không thực hiện đề tài

Ví dụ: Tìm những sinh viên không SELECT HOTENSV, HOCLUC FROM SINHVIEN WHERE MASV NOT IN

(SELECT MASV 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 E XIS TS) để 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 ()

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 k etqua WHERE k etqua.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.

SELECT KETQUA.MAMH,TENMH, AVG(DIEM) FROM KETQUA,MONHOC WHERE KETQUA.MAMH = MON.MAMH GROUP BY KETQUA.MAMH,TENMH HAVING AVG(DIEM) >

(SELECT AVG(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

29

R_S.C2 = R.C2))

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

tất cả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 FROM [WHERE <ĐK>] [GROUP BY ] ORDER BY ASC|DESC

31

 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

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’

32

ORDER BY KQ DESC

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 FROM WHERE <điều_kiện> ORDER BY ASC|DESC

Ví dụ: Tìm những đề tài có kinh phí cao nhất và nhì.

SELECT TOP 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

[ASC | DESC]) AS ,

FROM [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.

SELECT RANK() 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 )) AS ,

FROM [WHERE <điều_kiện>]

Ví dụ: Thêm cột số thứ tự cho truy vấn. SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) 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 [,] FROM [WHERE <Điều_Kiện>] [GROUP BY ] [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: AS

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 (): 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 (): Trả về giá trị lớn

nhất trong tất cả các dòng của một trường

37

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

Biên soạn: Nguyễn Thị Mỹ Dung

c. Hàm MIN (): 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 (): 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

38

SELECT AVG(Kinhphi) AS TBC_KP FROM Detai

Biên soạn: Nguyễn Thị Mỹ Dung

BG_SQL_SERVER 19

Chương 3: Transact-SQL

e. Hàm COUNT (): Đế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

SELECT COUNT(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

SELECT Chunhiem, 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 , FROM WHERE <Điều_Kiện> [ORDER BY ] [COMPUTE ] [BY ]

40

Biên soạn: Nguyễn Thị Mỹ Dung

BG_SQL_SERVER 20

Chương 3: Transact-SQL

VD1: Liệt kê bảng điểm chi tiết của sinh viên và cho

biết điểm trung bình của cả lớp

SELECT S.MASV, (HOSV+' '+TENSV) AS HTSV, DIEM FROM SINHVIEN S INNER JOIN KETQUA K ON

S.MASV = K.MASV

COMPUTE AVG(DIEM) VD 2: Liệt kê bảng điểm chi tiết của sinh viên và cho

biết điểm trung bình của từng sinh viên

SELECT S.MASV, (HOSV+' '+TENSV) AS HTSV, DIEM FROM SINHVIEN S INNER JOIN KETQUA K ON

S.MASV = K.MASV

ORDER BY S.MASV COMPUTE AVG(DIEM) BY S.MASV

41

Biên soạn: Nguyễn Thị Mỹ Dung

3. Gom nhóm tổng hợp với Rollup, Cube Để thêm các dòng thống kê từng nhóm, thêm

toán tử Rollup hoặc Cube với mệnh đề Group by

Cú pháp: SELECT FROM [WHERE <ĐK>] [GROUP BY ]

42

[WITH ROLLUP | CUBE]

Biên soạn: Nguyễn Thị Mỹ Dung

BG_SQL_SERVER 21

Chương 3: Transact-SQL

VD 1: Liệt kê bảng điểm chi tiết của sinh viên và

cho biết điểm trung bình của từng sinh viên

SELECT S.MASV, (HOSV+' '+TENSV) AS

HOTENSV, MAMH, AVG(DIEM) AS ĐTB

FROM SINHVIEN S INNER JOIN KETQUA K

ON S.MASV = K.MASV GROUP BY S.MASV, HOSV, TENSV, MAMH WITH ROLLUP

VD2: SV thực hiện yêu cầu của VD1 với câu

43

lệnh với CUBE để so sánh kết quả thực hiện.

Biên soạn: Nguyễn Thị Mỹ Dung

- Ngôn ngữ xử lý dữ liệu (Insert, Update, Delete) - Truy vấn dữ liệu trên một và nhiều bảng (select

… from… where…)

tập UNION, hợp (UNION

- Truy INTERSECT, EXCEPT INTERSECT vấn dữ liệu EXCEPT), truy vấn lồng nhau

- Truy vấn sử dụng hàm kết tập (SUM, MAX,

MIN, AVG, COUNT)

- Truy vấn sắp xếp dữ liệu (ORDER BY, TOP,

RANK, ROW_NUMBER,…)

- Truy vấn thống kê trên nhóm (GROUP BY,

44

ROLLUP, CUBE, COMPUTE, COMPUTE BY)

Biên soạn: Nguyễn Thị Mỹ Dung

BG_SQL_SERVER 22