Giáo trình Quản trị SQL Server (Phần 2)

Bài 3: Thao tác dliu trong MS SQL Server  
1. Thêm mi mt dòng dliu  
Dliu trong các bảng được thhiện dưới dng các dòng (bản ghi). Để bổ  
sung thêm các dòng dliu vào mt bng, ta sdng câu lnh INSERT. Hu hết  
các hqun trCSDL da trên SQL cung cấp các cách dưới đây để thc hin thao  
tác bsung dliu cho bng:  
Bsung tng dòng dliu vi mi câu lệnh INSERT. Đây là các sử  
dng thường gp nht trong giao tác SQL.  
Bsung nhiu dòng dliu bng cách truy xut dliu tcác bng dữ  
liu khác.  
Bsung tng dòng dliu vi lnh INSERT  
Để bsung mt dòng dliu mi vào bng, ta sdng câu lnh INSERT vi  
pháp như sau:  
INSERT INTO tên_bng[(danh_sách_ct)]  
VALUES(danh_sách_tr)  
Trong câu lnh INSERT, danh sách ct ngay sau tên bng không cn thiết  
phi chỉ định nếu giá trị các trường ca bn ghi mới được chỉ định đầy đủ trong  
danh sách tr.  
Trong trường hp này, thtcác giá trtrong danh sách trphi bng vi số  
lượng các trường ca bng cn bsung dliệu cũng như phải tuân theo đúng thứ  
tcủa các trường như khi bảng được định nghĩa.  
Ví d: Câu lệnh dưới đây bổ sung thêm mt dòng dliu vào bng KHOA  
INSERT INTO khoa  
VALUES(‘DHT10’,’Khoa Luật’,’054821135’)  
Trong trường hp chnhp giá trcho mt sct trong bng, ta phi chỉ  
định danh sách các ct cn nhp dliu ngay sau tên bảng. Khi đó, các cột không  
được nhp dliu snhn giá trmặc định (nếu có) hoc nhn giá trNULL (nếu  
ct cho phép chp nhn giá trNULL). Nếu mt ct không có giá trmặc định và  
không chp nhn giá trị NULL mà không đuợc nhp dliu, câu lnh sbli.  
Ví d: Câu lệnh dưới đây bổ sung mt bn ghi mi cho bng SINHVIEN  
34  
INSERT INTO sinhvien(masv,hodem,ten,gioitinh,malop)  
VALUES(‘0241020008’,‘Nguyễn Công’,’Chính’,1,’C24102’)  
câu lnh trên còn có thể được viết như sau:  
INSERT INTO sinhvien  
VALUES(‘0241020008’,‘Nguyễn Công’,’Chính’,  
NULL,1,NULL,’C24102’)  
Bsung nhiu dòng dliu tbng khác  
Mt cách sdng khác ca câu lệnh INSERT được sdụng để bsung  
nhiu dòng dliu vào mt bng, các dòng dliệu này được ly tmt bng khác  
thông qua câu lnh SELECT. cách này, các giá trdliệu được bsung vào bng  
không được chỉ định tường minh mà thay vào đó là một câu lnh SELECT truy vn  
dliu tbng khác.  
Cú pháp câu lnh INSERT có dạng như sau:  
INSERT INTO tên_bng[(danh_sách_ct)] câu_lnh_SELECT  
Ví d: Gista có bng LUUSINHVIEN bao gồm các trường HODEM,  
TEN, NGAYSINH. Câu lệnh dưới đây bổ sung vào bng LUUSINHVIEN các  
dòng dliệu có được tcâu truy vn SELECT:  
INSERT INTO luusinhvien  
SELECT hodem,ten,ngaysinh  
FROM sinhvien  
WHERE noisinh like ‘%Huế%’  
Khi bsung dliu theo cách này cần lưu ý một số điểm sau: Kết quca  
câu lnh SELECT phi có sct bng vi scột được chỉ định trong bảng đích và  
phải tương thích về kiu dliu.  
2. Cp nht dliu  
Câu lệnh UPDATE trong SQL được sdụng để cp nht dliu trong các  
bng.  
Câu lệnh này có cú pháp như sau:  
UPDATE tên_bng  
35  
SET tên_ct = biu_thc  
[, ..., tên_ct_k = biu_thc_k]  
[FROM danh_sách_bng]  
[WHERE điều_kin]  
Sau UPDATE là tên ca bng cn cp nht dliu. Mt câu lnh UPDATE  
có thcp nht dliu cho nhiu ct bng cách chỉ định các danh sách tên ct và  
biu thức tương  
ng sau tkhoá SET. Mệnh đề WHERE trong câu lệnh UPDATE thường  
được sdụng để chỉ  
định các dòng dliu chịu tác động ca câu lnh (nếu  
không chỉ định, phạm vi tác động ca câu lệnh được hiu là toàn bcác dòng trong  
bng)  
Ví d: Câu lệnh dưới đây cập nht li số đơn vị hc trình ca các môn hc có  
số đơn vị hc trình nhỏ hơn 2  
UPDATE monhoc  
SET sodvht = 3  
WHERE sodvht = 2  
Sdng cu trúc CASE trong câu lnh UPDATE  
Cu trúc CASE có thể được sdng trong biu thc khi cn phải đưa ra các  
quyết định khác nhau vgiá trca biu thc  
Ví d: Gista có bảng NHATKYPHONG sau đây  
Sau khi thc hin câu lnh:  
UPDATE nhatkyphong  
SET tienphong=songay*CASE WHEN loaiphong='A' THEN 100  
WHEN loaiphong='B' THEN 70  
ELSE 50  
END  
36  
Dliu trong bng slà:  
Điều kin cp nht dliệu liên quan đến nhiu bng  
Mệnh đề FROM trong câu lệnh UPDATE được sdng khi cn chỉ  
định các điều kiện liên quan đến các bng khác vi bng cn cp nht dliu.  
Trong trung hp này, trong mệnh đề WHERE thường có điều kin ni gia các  
bng.  
Ví d: Gista có hai bảng MATHANG và NHATKYBANHANG như sau:  
Câu lệnh dưới đây sẽ cp nht giá trị trường THANHTIEN ca bng  
NHATKYBANHANG theo công thc THANHTIEN = SOLUONG × GIA  
UPDATE nhatkybanhang  
SET thanhtien = soluong*gia  
FROM mathang  
WHERE nhatkybanhang.mahang = mathang.mahang  
Câu lnh UPDATE vi truy vn con  
Tương tự như trong câu lệnh SELECT, truy vn con có thể được sdng  
trong mệnh đề WHERE ca câu lnh UPDATE nhm chỉ định điều kiện đối vi các  
dòng dliu cn cp nht dliu.  
Ví d: Câu lnh trên có thể được viết như sau:  
37  
UPDATE nhatkybanhang  
SET thanhtien = soluong*gia  
FROM mathang  
WHERE mathang.mahang =(SELECT mathang.mahang  
FROM mathang  
WHERE mathang.mahang=nhatkybanhang.mahang)  
3. Xóa các dòng dliu  
Để xoá dliu trong mt bng, ta sdng câu lnh DELETE. Cú pháp ca  
câu lệnh này như sau:  
DELETE FROM tên_bng  
[FROM danh_sách_bng]  
[WHERE điều_kin]  
Trong câu lnh này, tên ca bng cn xoá dliệu được chỉ định sau  
DELETE FROM.  
Mệnh đề WHERE trong câu lệnh được sdụng để chỉ định điều kiện đối vi  
các dòng dliu cn xoá. Nếu câu lnh DELETE không có mệnh đề WHERE thì  
toàn bcác dòng dliu trong bảng đều bxoá.  
Ví d: Câu lệnh dưới đây xoá khỏi bng SINHVIEN nhng sinh viên sinh ti  
Huế  
DELETE FROM sinhvien  
WHERE noisinh LIKE ‘%Huế%’  
Xoá dliệu khi điều kiện liên quan đến nhiu bng  
Nếu điều kin trong câu lnh DELETE liên quan đến các bng không phi là  
bng cn xóa dliu, ta phi sdng thêm mệnh đề FROM và sau đó là danh sách  
tên các bảng đó. Trong trường hp này, trong mệnh đề WHERE ta chỉ định thêm  
điều kin ni gia các bng  
Ví d: Câu lệnh dưới đây xoá ra khỏi bng SINHVIEN nhng sinh viên lp Tin  
K24  
DELETE FROM sinhvien  
FROM lop  
38  
WHERE lop.malop=sinhvien.malop AND tenlop='Tin K24'  
Sdng truy vn con trong câu lnh DELETE  
Mt câu lnh SELECT có thể được lng vào trong mệnh đề WHERE trong  
câu lệnh DELETE để làm điều kin cho câu lệnh tương tự như câu lệnh UPDATE.  
Ví d: Câu lệnh dưới đây xoá khỏi bng LOP nhng lp không có sinh viên nào  
hc  
DELETE FROM lop  
WHERE malop NOT IN (SELECT DISTINCT malop  
FROM sinhvien)  
Xoá toàn bdliu trong bng  
Câu lnh DELETE không chỉ định điều kiện đối vi các dòng dliu cn  
xoá trong mệnh đề WHERE sxoá toàn bdliu trong bng. Thay vì sdng câu  
lệnh DELETE trong trường hp này, ta có thsdng câu lnh TRUNCATE có cú  
pháp như sau:  
TRUNCATE TABLE tên_bng  
Ví d: Câu lnh sau xoá toàn bdliu trong bng diemthi:  
DELETE FROM diemthi  
có tác dụng tương t vi câu lnh  
TRUNCATE TABLE diemthi  
4. Truy xut dliu  
4.1. Ly thông tin tcác ct ca bng bng mệnh đề SELECT  
Câu lệnh SELECT được sdụng để truy xut dliu tcác dòng và các ct  
ca mt hay nhiu bng, khung nhìn. Câu lnh này có thể dùng để thc hin phép  
chn (tc là truy xut mt tp con các dòng trong mt hay nhiu bng), phép chiếu  
(tc là truy xut mt tp con các ct trong mt hay nhiu bng) và phép ni (tc là  
liên kết các dòng trong hai hay nhiu bảng để truy xut dliu). Ngoài ra, câu lnh  
này còn cung cp khả năng thực hin các thao tác truy vn và thng kê dliu phc  
tp khác.  
Cú pháp chung ca câu lnh SELECT có dng:  
SELECT [ALL | DISTINCT][TOP n] danh_sách_chn  
39  
[INTO tên_bng_mi]  
FROM danh_sách_bng/khung_nhìn  
[WHEREđiều_kin]  
[GROUP BY danh_sách_ct]  
[HAVING điều_kin]  
[ORDER BY ct_sp_xếp]  
[COMPUTE danh_sách_hàm_gp [BY danh_sách_ct]]  
Điều cần lưu ý đầu tiên đi vi câu lnh này là các thành phn trong câu lnh  
SELECT nếu được sdng phi tuân theo đúng thứ tự như trong cú pháp. Nếu  
không, câu lnh sẽ được xem là không hp l.  
Câu lệnh SELECT được sdụng để tác động lên các bng dliu và kết  
quca câu lệnh cũng đưc hin thị dưới dng bng, tc là mt tp hp các dòng và  
các ct (ngoi trừ trường hp sdng câu lnh SELECT vi mệnh đề COMPUTE).  
Ví d: Kết quca câu lệnh sau đây cho biết mã lp, tên lp và hệ đào tạo  
ca các lp hin có  
SELECT malop,tenlop,hedaotao  
FROM lop  
Mệnh đề FROM  
Mệnh đề FROM trong câu lệnh SELECT được sdung nhm chỉ định các  
bng và khung nhìn cn truy xut dliu. Sau FROM là danh sách tên ca các bng  
và khung nhìn tham gia vào truy vn, tên ca các bảng và khung nhìn được phân  
cách nhau bi du phy.  
Ví d: Câu lệnh dưới đây hiển thdanh sách các khoa trong trường  
SELECT * FROM khoa  
kết qucâu lệnh như sau:  
Ta có thsdng các bí danh cho các bng hay khung nhìn trong câu lnh  
SELECT. Bí danh được gán trong mệnh đề FROM bng cách chỉ định bí danh ngay  
sau tên bng.  
Ví d: câu lnh sau gán bí danh là a cho bng khoa  
SELECT * FROM khoa a  
40  
Danh sách chn trong câu lnh SELECT  
Danh sách chn trong câu lệnh SELECT được sdụng để chỉ định các  
trường, các biu thc cn hin thtrong các ct ca kết qutruy vấn. Các trường,  
các biu thc được chỉ định ngay sau tkhoá SELECT và phân cách nhau bi du  
phy. Sdng danh sách chn trong câu lnh SELECT bao gồm các trường hp  
sau:  
-
Chn tt ccác ct trong bng  
Khi cn hin thtt ccác  
Trường trong các bng, sdng ký t* trong danh sách chn thay vì phi  
lit kê danh sách tt ccác cột. Trong trường hp này, các cột được hin thtrong  
kết qutruy vn stuân theo thtự mà chúng đã được to ra khi bảng được định  
nghĩa.  
Ví d: Câu lnh  
SELECT * FROM lop  
cho kết quả bao như sau:  
41  
- Tên ct trong danh sách chn  
Trong trường hp cn chỉ định cthcác ct cn hin thtrong kết qutruy  
vn, ta chỉ định danh sách các tên ct trong danh sách chn. Thtca các ct  
trong kết qutruy vn tuân theo thtca các trường trong danh sách chn.  
Ví d: Câu lnh  
SELECT malop,tenlop,namnhaphoc,khoa  
FROM lop  
cho biết mã lp, tên lớp, năm nhập hc và khoá ca các lp và có kết quả  
như sau:  
Lưu ý: Nếu truy vấn được thc hin trên nhiu bng/khung nhìn và trong các  
bảng/khung nhìn có các trường trùng tên thì tên ca những trường này nếu xut hin  
trong danh sách chn phải được viết dưới dng: tên_bảng.tên_trường  
Ví d:  
SELECT malop, tenlop, lop.makhoa, tenkhoa  
FROM lop, khoa  
WHERE lop.malop = khoa.makhoa  
-Thay đổi tiêu đề các ct  
Trong kết qutruy vấn, tiêu đề ca các ct mặc định slà tên của các trường  
tương ứng trong bảng. Tuy nhiên, để các tiêu đề trnên thân thiện hơn, ta có thể đổi  
tên các tiêu đề ca các cột. Để đặt tiêu đề cho mt cột nào đó, ta sử dng cách viết:  
tiêu_đề_cột = tên_trưng  
42  
hoc  
hoc  
tên_trường AS tiêu_đ_ct  
tên_trường tiêu_đề_ct  
Ví d: Câu lệnh dưới đây:  
SELECT 'Mã lp'= malop,tenlop 'Tên lp',khoa AS 'Khoá'  
FROM lop  
cho biết mã lp, tên lp và khoá hc ca các lớp trong trường. Kết quca  
câu lnh  
như sau:  
-Sdng cu trúc CASE trong danh sách chn  
Cấu trúc CASE được sdng trong danh sách chn nhằm thay đổi kết quả  
ca truy vn tuthuộc vào các trường hp khác nhau. Cấu trúc này có cú pháp như  
sau:  
CASE biu_thc  
WHEN biu_thc_kim_tra THEN kết_quả  
[ ... ]  
[ELSE kết_qu_ca_else]  
END  
hoc:  
CASE  
43  
WHEN điều_kin THEN kết_quả  
[ ... ]  
[ELSE kết_qu_ca_else]  
END  
Ví d:  
viên, ta sử  
Để hin thmã, htên và gii tính (nam hoc n) ca các sinh  
dng câu lnh  
SELECT masv,hodem,ten,  
CASE gioitinh  
WHEN 1 THEN 'Nam'  
ELSE 'N'  
END AS gioitinh  
FROM sinhvien  
hoc:  
SELECT masv,hodem,ten,  
CASE  
WHEN gioitinh=1 THEN 'Nam'  
ELSE 'N'  
END AS gioitinh  
FROM sinhvien  
Kết quca hai câu lệnh trên đều có dạng như sau:  
44  
- Hng và biu thc trong danh sách chn  
Ngoài danh sách trường, trong danh sách chn ca câu lnh SELECT còn có  
thsdng các biu thc. Mi mt biu thc trong danh sách chn trthành mt  
ct trong kết qutruy vn.  
Ví d: câu lệnh dưới đây cho biết tên và stiết ca các môn hc  
SELECT tenmonhoc,sodvht*15 AS sotiet  
FROM monhoc  
Nếu trong danh sách chn có sxut hin ca giá trhng thì giá trnày sẽ  
xut hin trong mt ct ca kết qutruy vn tt ccác dòng  
Ví d: Câu lnh  
SELECT tenmonhoc,'Stiết: ',sodvht*15 AS sotiet  
FROM monhoc  
cho kết quả như sau:  
45  
-Loi bcác dòng dliu trùng nhau trong kết qutruy vn  
Trong kết quca truy vn có thxut hin các dòng dliệu trùng nhau. Để  
loi bbt các dòng này, ta chỉ định thêm tkhóa DISTINCT ngay sau tkhoá  
SELECT.  
Ví d: Hai câu lệnh dưới đây  
SELECT khoa FROM lop  
và:  
SELECT DISTINCT khoa FROM lop  
có kết qulần lượt như sau:  
- Gii hn số lượng dòng trong kết qutruy vn  
Kết quca truy vấn được hin thị thường slà tt ccác dòng dliu truy  
vn được. Trong trường hp cn hn chế số lượng các dòng xut hin trong kết quả  
46  
truy vn, ta chỉ định thêm mệnh đề TOP ngay trước danh sách chn ca câu lnh  
SELECT.  
Ví d: Câu lệnh dưới đây hiển thhtên và ngày sinh của 5 sinh viên đầu  
tiên  
trong danh sách  
SELECT TOP 5 hodem,ten,ngaysinh  
FROM sinhvien  
Ngoài cách chỉ định csố lượng dòng cn hin thtrong kết qutruy vn, ta  
có thchỉ định số lượng các dòng cn hin ththeo tlphần trăm bằng cách sử  
dng thêm từ khoá PERCENT như ở ví dụ dưới đây.  
Ví d: Câu lệnh dưới đây hiển thhtên và ngày sinh ca 10% số lượng sinh  
viên hin có trong bng SINHVIEN  
SELECT TOP 10 PERCENT hodem,ten,ngaysinh  
FROM sinhvien  
4.2. Chn các dòng ca bng bng mệnh đề WHERE  
Mệnh đề WHERE trong câu lệnh SELECT được sdng nhằm xác định các  
điều kiện đối vi vic truy xut dliu. Sau mệnh đề WHERE là mt biu thc  
logic và chnhng dòng dliu nào thoả mãn điều kiện được chỉ định mới được  
hin thtrong kết qutruy vn.  
Ví d: Câu lệnh dưới đây hiển thdanh sách các môn hc có số đơn vị hc  
trình  
lớn hơn 3  
SELECT * FROM monhoc  
WHERE sodvht>3  
Kết quca câu lệnh này như sau:  
Trong mệnh đề WHERE thường sdng:  
Các toán tkết hợp điều kin (AND, OR)  
Các toán tso sánh  
Kim tra gii hn ca dliu (BETWEEN/ NOT BETWEEN)  
Danh sách  
Kim tra khuôn dng dliu.  
Các giá trNULL  
Các toán tso sánh  
Ví d: Câu lnh  
SELECT masv,hodem,ten,ngaysinh  
FROM sinhvien  
WHERE (ten='Anh')  
48  
AND (YEAR(GETDATE())-YEAR(ngaysinh)<=20)  
cho biết mã, htên và ngày sinh ca các sinh viên có tên là Anh và có tui  
nhỏ hơn  
hoc bng 20.  
Kim tra gii hn ca dliu  
Để kim tra xem giá trdliu nm trong (ngoài) mt khoảng nào đó, ta sử  
dng toán tử BETWEEN (NOT BETWEEN) như sau:  
Ví d: Câu lệnh dưới đây cho biết htên và tui ca các sinh viên có tên là  
Bình và có tui nm trong khong từ 20 đến 22  
SELECT hodem,ten,year(getdate())-year(ngaysinh) AS tuoi  
FROM sinhvien  
WHERE ten='Bình' AND YEAR(GETDATE())-YEAR(ngaysinh) BETWEEN 20  
AND 22  
Danh sách (IN và NOT IN)  
Từ khoá IN được sdng khi ta cn chỉ định điều kin tìm kiếm dliu cho  
câu lnh SELECT là mt danh sách các giá tr. Sau IN (hoc NOT IN) có thlà mt  
danh sách các giá trhoc là mt câu lnh SELECT khác.  
Ví d: Để biết danh sách các môn hc có số đơn vị hc trình là 2, 4 hoc 5,  
thay vì sdng câu lnh  
SELECT * FROM monhoc  
49  
WHERE sodvht=2 OR sodvht=4 OR sodvht=5  
ta có thsdng câu lnh  
SELECT * FROM monhoc  
WHERE sodvht IN (2,4,5)  
Toán tLIKE và các ký tự đại din  
Tkhoá LIKE (NOT LIKE) sdng trong câu lnh SELECT nhm mô tả  
khuôn dng ca dliu cn tìm kiếm. Chúng thường được kết hp vi các ký tự đại  
diện sau đây:  
Ví d: Câu lệnh dưới đây  
SELECT hodem,ten FROM sinhvien  
WHERE hodem LIKE 'Lê%'  
cho biết htên ca các sinh viên có hlà Lê và có kết quả như sau  
Câu lnh:  
SELECT hodem,ten FROM sinhvien  
WHERE hodem LIKE 'Lê%' AND ten LIKE  
'[AB]%'  
Có kết qulà:  
Giá trNULL  
Dliu trong mt ct cho phép NULL snhn giá trị NULL trong các trường  
hp sau:  
Nếu không có dliệu được nhp cho ct và không có mặc định cho ct  
hay kiu dliu trên cột đó.  
Người sdng trc tiếp đưa giá trị NULL vào cho cột đó.  
Mt ct có kiu dliu là kiu sscha giá trNULL nếu giá trị được  
chỉ định gây tràn s.  
Trong mệnh đề WHERE, để kim tra giá trca mt ct có giá trNULL hay  
không, ta sdng cách viết:  
WHERE tên_ct IS NULL  
hoc:  
WHERE tên_ct  
IS NOT NULL  
4.3.  
Truy vn thông tin tnhiu bng  
Khi cn thc hin mt yêu cu truy vn dliu thai hay nhiu bng, ta phi  
sdụng đến phép ni. Mt câu lnh ni kết hp các dòng dliu trong các bng khác  
nhau li theo mt hoc nhiều điều kiện nào đó và hiển thchúng trong kết qutruy  
vn.  
51  
Xét hai bảng sau đây:  
Bng LOP  
Bng KHOA  
Gista cn biết mã lp và tên lp ca các lp thuc Khoa Công nghệ  
Thông tin, ta phải làm như sau:  
Chn ra dòng trong bng KHOA có tên khoa là Khoa Công nghThông  
tin, từ đó xác định được mã khoa (MAKHOA) là DHT02.  
Tìm kiếm trong bng LOP nhng dòng có giá trị trường MAKHOA là  
DHT02 (tc là bằng MAKHOA tương ứng trong bảng KHOA) và đưa những dòng  
này vào kết qutruy vn  
52  
Như vậy, để thc hiện được yêu cu truy vn dliu trên, ta phi thc hin  
phép ni gia hai bng KHOA và LOP với điều kin ni là MAKHOA ca KHOA  
bng vi MAKHOA ca LOP. Câu lnh sẽ được viết như sau:  
SELECT malop,tenlop  
FROM khoa,lop  
WHERE khoa.makhoa = lop.makhoa AND  
Thông tin'  
tenkhoa='Khoa Công nghệ  
Sdng phép ni  
Phépơ sở để thc hin các yêu cu truy vn dliệu liên quan đến nhiu  
bng. Mt câu lnh ni thc hin ly các dòng dliu trong các bng tham gia truy  
vn, so sánh giá trca các dòng này trên mt hoc nhiu cột được chỉ định trong  
điều kin ni và kết hp các dòng thoả mãn điều kin thành nhng dòng trong kết  
qutruy vn.  
Để thc hiện được mt phép ni, cn phải xác định đưc nhng yếu tsau:  
Nhng ct nào cn hin thtrong kết qutruy vn  
Nhng bng nào có tham gia vào truy vn.  
Điều kiện để thc hin phép ni gia các bng dliu là gì  
Trong các yếu tktrên, việc xác định chính xác điều kiện để thc hin phép  
ni gia các bảng đóng vai trò quan trọng nhất. Trong đa số các trường hợp, điều  
kin ca phép nối được xác định nhvào mi quan hgia các bng cn phi truy  
53  
Tải về để xem bản đầy đủ
pdf 56 trang baolam 10/05/2022 7080
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Quản trị SQL Server (Phần 2)", để 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:

  • pdfgiao_trinh_quan_tri_sql_server_phan_2.pdf