Bài giảng Hệ quản trị cơ sở dữ liệu SQL Server - Chương 4: Lập trình Transact - SQL - Nguyễn Thị Mỹ Dung

CH4: LẬP TRÌNH TRANSACT - SQL  
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)  
Chương 6: Kết nối CSDL (Tự học)  
Biên soạn: Nguyễn Thị Mỹ Dung  
1
CH4: LẬP TRÌNH TRANSACT - SQL  
I. Thiết kế View, Index  
II. Lập trình trong T-SQL  
III. Stored Procedure  
IV. Trigger  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Thiết kế View  
- Là một bảng ảo được tạo ra từ tập con của cá c  
bảng (Table) thật khá c. Đối với người dùng View là  
bảng thật.  
- Cũng tương tự như truy vấn dữ liệu là dùng để  
xem dữ liệu từ nhiều bảng khá c nhau trong CSDL.  
- Làm giảm sự phức tạp của CSDL bảo vệ dữ  
liệu đối với người dùng khô ng được phé p truy cập.  
- Cá c lệnh sử dụng trên View tương tự như trên  
Tabletrong CSDL.  
- Nhược điểm của View là mất thời gian truy cập  
dữ liệu từ bảng (table) gốc.  
Biên soạn: Nguyễn Thị Mỹ Dung  
2
CH4: LẬP TRÌNH TRANSACT - SQL  
(khung nhì n):  
CREATEVIEW <TÊN_VIEW>  
AS  
SELECT <DS_TRƯỜNG>  
FROM <DS_BẢNG>  
[WHERE <ĐIỀU_KIỆN>  
GROUPBY <DS_TRƯỜNG>]  
Biên soạn: Nguyễn Thị Mỹ Dung  
Ví dụ: Tạo View Ketquadetai gồm hotensv, học  
lực, điểm trung bì nh đề tài  
USE QLDETAISV  
CREATEVIEW KETQUADETAI  
AS  
SELECT SINHVIEN.MASV, HOCLUC,  
ROUND(AVG(KQ),2) AS DIEMTBDT  
FROM SINHVIEN LEFT JOIN SV_DT ON  
SV_DT.MASV = SINHVIEN.MASV  
GROUPBY SINHVIEN.MASV, HOCLUC  
Biên soạn: Nguyễn Thị Mỹ Dung  
3
CH4: LẬP TRÌNH TRANSACT - SQL  
:
ALTERVIEW <TÊN_VIEW>  
AS  
SELECT <DS_TRƯỜNG>  
FROM <DS_BẢNG>  
[WHERE <ĐIỀU_KIỆN>  
GROUPBY <DS_TRƯỜNG>]  
:
DROPVIEW <TÊN_VIEW>  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD1: Sửa View Ketquadetai gồm hotensv, học lực  
từ 7 điểm trở lên và điểm trung bình đề tài.  
USE QUANLYDETAISV  
ALTER VIEW KETQUADETAI  
AS  
SELECT SINHVIEN.MASV, HOCLUC,  
ROUND(AVG(KETQUA),2) AS DIEMTBDT  
FROM SINHVIEN LEFT JOIN SV_DT ON  
SV_DT.MASV = SINHVIEN.MASV  
GROUP BY SINHVIEN.MASV, HOCLUC  
WHERE HOCLUC >= 7  
VD2:  
DROP VIEW KETQUADETAI  
Biên soạn: Nguyễn Thị Mỹ Dung  
4
CH4: LẬP TRÌNH TRANSACT - SQL  
Lưu ý 1:  
- Có thể sử dụng cá c câ u truy vấn trên view tương  
tự như trên bảng (Table)  
- Có thể truy vấn trên vừa trên bảng và vừa trên  
View.  
Ví dụ:  
SELECT MASV, HOTENSV, HOCLUC, DTBDT  
FROM KETQUADETAI KQ, SINHVIEN S  
WHERE KQ.MASV = S.MASV AND  
DTBDT >= 8  
- Khi thay đổi (xó a, thêm, sửa) dữ liệu trên View thì  
dữ liệu trên bảng gốc cũng thay đổi theo.  
Biên soạn: Nguyễn Thị Mỹ Dung  
Lưu ý 2:  
- Khi tạo View có sử dụng hàm kết tập thì khô ng thể  
thực hiện được cá c thao tá c: Insert, Update, Delete.  
VD:  
CREATE VIEW KETQUADT  
AS  
SELECT S.MASV, HOTENSV, AVG(KQ) AS DTBDT  
FROM SV_DT SD, SINHVIEN S  
WHERE SD.MASV = S.MASV  
GROUP BY S.MASV, HOTENSV  
Biên soạn: Nguyễn Thị Mỹ Dung  
5
CH4: LẬP TRÌNH TRANSACT - SQL  
2. Tạo Index (chỉ mục)  
Chỉ mục được tạo ra nhằm để cá c dò ng trong  
bảng được truy xuất nhanh và hiệu quả hơn.  
Chỉ mục có thể được tạo trên một hoặc nhiều  
cột của bảng, và mỗi chỉ mục được đặt một tên.  
Người dùng khô ng thấy được cá c chỉ mục này.  
Lưu ý:  
Khi bảng đã được tạo chỉ mục thì việc cập nhật  
hay thêm dò ng mới vào bảng sẽ mất nhiều thời gian  
hơn là đối với bảng khô ng có chỉ mục.  
Chỉ nên tạo chỉ mục cho cá c cột thường xuyên  
dùng trong cá c tá c vụ tìm kiếm.  
Biên soạn: Nguyễn Thị Mỹ Dung  
Chỉ mục đơn nhất (Unique Index)  
Cú phá p:  
CREATE [UNIQUE] INDEX <tên_chỉ_mục>  
ON <tên_bảng (tên_cột)>  
UNIQUE: bắt buộc hai dò ng bất kỳ của bảng sẽ  
khô ng được phé p mang cùng giá trị ở cột được tạo chỉ  
mục.  
Ví dụ 1:  
CREATE UNIQUE INDEX TENDT_ID  
ON DE_TAI(TENDT)  
Ví dụ 2: Tạo chỉ mục nhiều cột  
CREATE INDEX SV_Index  
ON SINHVIEN (Hosv, Tensv)  
Biên soạn: Nguyễn Thị Mỹ Dung  
6
CH4: LẬP TRÌNH TRANSACT - SQL  
Xó a chỉ mục  
DROP INDEX <tên_bảng  
Ví dụ:  
DROPINDEX DE_TAI  
tên_chỉ_mục>  
TENDT_ID  
DROPINDEX SINHVIEN.SV_ID  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Khá i niệm  
Giống như NNLT khá c, SQL cũng sử dụng biến,  
cá c lệnh rẽ nhá nh (if.. else, Case … end) và vò ng  
lặp (while) đơn giản. Ngoài ra, SQL cũng hỗ trợ  
xâ y dựng thủ tục, hàm. Điểm khá c biệt với NNLT  
khá c là SQL cho phé p thiết lập trigger (bẫy lỗi sự  
kiện), cussor,…  
- Biến trong SQL dùng để lưu giá trị tạm thời  
trong quá trì nh xử lý tí nh toá n.  
- Cá c lệnh cấu trúc dùng để hỗ trợ trong lập  
trì nh SQL.  
- Chương trì nh con, trigger giúp SQL thực hiện  
cá c ràng buộc dữ liệu trong CSDL.  
Biên soạn: Nguyễn Thị Mỹ Dung  
7
CH4: LẬP TRÌNH TRANSACT - SQL  
2. Khai bá o biến  
Khai bá o biến cục bộ  
DECLARE {  
@local_variable [AS] data_type,  
…
}
Trong đó:  
@local_variable: tên biến cục bộ, phải bắt  
đầu bằng ký hiệu @.  
data_type: kiểu dữ liệu hệ thống hoặc kiểu  
dữ liệu người dùng.  
Biên soạn: Nguyễn Thị Mỹ Dung  
Sử dụng biến  
Câ u lệnh SET hoặc SELECT (lấy giá trị từ bảng  
dữ liệu) dùng để gá n giá trị cho biến.  
SET @local_variable = value  
OR: SELECT @local_variable = value  
VD1:  
DECLARE  
SET  
SET  
@x int, @y int  
@y = 5  
@x = @y + 3  
VD2:  
DECLARE  
SELECT  
@TBKP FLOAT  
@TBKP = ([SELECT] AVG(Kinhphi)  
FROM DETAI  
WHERE MADT = 'DT001')  
Biên soạn: Nguyễn Thị Mỹ Dung  
8
CH4: LẬP TRÌNH TRANSACT - SQL  
Hiển thị giá trị biến  
Sử dụng câ u lệnh PRINT hoặc SELECT để  
hiển thị giá trị của biến.  
VD:  
PRINT @x  
PRINT @y  
SELECT @x, @y  
Biên soạn: Nguyễn Thị Mỹ Dung  
Lưu ý:  
- Khi gá n trị cho biến có dữ liệu từ bảng dữ liệu  
phải sử dụng từ khó a SELECT  
- Khi in dữ liệu vừa có chuỗi và vừa có biến  
bằng lệnh PRINT phải chuyển đổi kiểu cho biến  
sang chuỗi với hàm CONVERT.  
Cú phá p: CONVERT (<KIỂU>, <BIẾN>)  
VD:  
CONVERT (CHAR(5), MAXKP)  
CONVERT (VARCHAR(5), SUMKP)  
Biên soạn: Nguyễn Thị Mỹ Dung  
9
CH4: LẬP TRÌNH TRANSACT - SQL  
VD1: Tính tổng 2 số  
DECLARE @tong float, @a float, @b float  
SET @a = 10.0  
SET @b = 2.0  
SET  
@tong = @a * @b  
PRINT @tong  
SELECT @a as so1, @b as so2, @tong as tong  
VD2: Tí nh điểm trung bì nh của sinh viên A02 từ  
bảng KETQUA  
DECLARE @DiemTB float  
SET  
@DiemTB=(SELECT AVG(Diem)  
FROM KetQua  
WHERE MaSV='A02')  
SELECT @DiemTB as DTB  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD3: Lấy tổng kinh phí tất cả cá c đề tài từ bảng đề  
tài.  
DECLARE @tongkp float  
SELECT @tongkp = sum(kinhphi)  
FROM DETAI  
VD4: Tìm max kinh phí và min kinh phí của đề tài  
DECLARE @maxkp int, @minkp int  
SELECT @maxkp=MAX(kinhphi),@minkp = MIN  
(kinhphi)  
FROM DETAI  
PRINT N'Kinh phí cao nhất là: ' +  
CONVERT (CHAR,@maxkp)  
PRINT N'Kinh phí thấp nhất là: ' +  
CONVERT (CHAR,@minkp)  
Biên soạn: Nguyễn Thị Mỹ Dung  
10  
CH4: LẬP TRÌNH TRANSACT - SQL  
Biến hệ thống  
– Biến hệ thống là biến có sẵn và hệ thống quản lý.  
– Biến hệ thống trong SQL Server được đặt tên bắt  
đầu bởi 2 ký hiệu @.  
Ví dụ:  
PRINT @@CPU_BUSY  
PRINT @@VERSION  
SELECT @@SERVERNAME  
SELECT @@DATEFIRST AS SONGAYTUAN  
SELECT @@CONNECTIONS AS SLGNOIKET  
Biên soạn: Nguyễn Thị Mỹ Dung  
Danh sá ch biến và ý nghĩa một số biến hệ thống  
BIẾN  
@@CONNECTIONS  
@@CPU_BUSY  
Ý NGHĨA  
Số các kết nối đến Server  
Số lượng xử lý công việc của SQL  
Số bản ghi trong cursor mở gần nhất  
Số ngày trong tuần  
@@CURSOR_ROWS  
@@DATEFIRST  
@@ERROR  
Mã lỗi xảy ra gần nhất  
@@FETCH_STATUS  
@@IDENTITY  
= 0: nếu truy xuất thành công, = 1: ngược lại  
Giá trị identity gần nhất được sinh ra  
Ngô n ngữ sử dụng  
@@LANGUAGE  
@@MAX_CONNECTIONS  
@@ROWCOUNT  
@@SERVICENAME  
@@TRANSCOUNT  
@@VERSION  
Số lượng nối kết tối đa  
Số bản ghi bị tác động bởi SQL  
Dịch vụ SQL trên máy chủ  
Số giao dịch đang hoạt động trên nối kết hiện tại  
Phiên bản của SQL  
Biên soạn: Nguyễn Thị Mỹ Dung  
11  
CH4: LẬP TRÌNH TRANSACT - SQL  
3. Khối lệnh  
Một tập lệnh SQL được thực thi sẽ được đặt trong  
khối lệnh BEGIN … END  
Cú phá p:  
BEGIN  
<lệnh> | <đoạn lệnh>  
END  
VD:  
BEGIN  
DECLARE @DIEMTB_DT NUMERIC,  
…
PRINT @DIEMTB_DT  
END  
Biên soạn: Nguyễn Thị Mỹ Dung  
3. Cá c lệnh cấu trúc lựa chọn  
Chúng ta có thể thực thi cá c tập lệnh SQL khá c  
nhau dựa vào cá c điều kiện chọn khá c nhau.  
a. IF … ELSE  
Cú phá p:  
IF <điều kiện>  
< lệnh sql1> | <tập lệnh1>  
[ ELSE  
[IF <ĐK_k>  
< lệnh sql2>|< tập lệnh2>  
[ELSE]]]  
Biên soạn: Nguyễn Thị Mỹ Dung  
12  
CH4: LẬP TRÌNH TRANSACT - SQL  
VD1: TÌ M SỐ LỚN NHẤT TRONG 3 SỐ  
DECLARE @A INT, @B INT, @C INT, @MAX INT  
SET @A = 4  
SET @B = 2  
SET @C = 10  
SET @MAX = @A  
IF @A > @MAX  
SET @MAX = @A  
ELSE BEGIN  
IF @B > @MAX  
SET @MAX = @B  
ELSE  
SET @MAX = @C  
END  
PRINT N'SỐ LỚN NHẤT: '+ CONVERT(CHAR,@MAX)  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD2: Tìm xem có đề tài nào có kinh phí trên 20 tr  
khô ng? Nếu có in ra thô ng, khô ng có hiển thị thô ng bá o  
IF (SELECT COUNT(*) FROM DETAI  
WHERE KINHPHI > 20 ) > 0  
BEGIN  
PRINT N'DANH SÁ CH ĐỀ TÀI CÓ KINH PHÍ  
TRÊN 20 TRIỆU: '  
SELECT MADT, TENDT, CHUNHIEM, KINHPHI  
FROM DETAI WHERE KINHPHI > 20  
END  
ELSE  
PRINT N'KHÔ NG CÓ ĐỀ TÀI NÀO  
TRÊN 20 TRIỆU!!!'  
Biên soạn: Nguyễn Thị Mỹ Dung  
13  
CH4: LẬP TRÌNH TRANSACT - SQL  
b. IF với EXISTS  
IF có kết hợp từ khó a EXISTS Để kiểm tra sự  
tồn tại của cá c dò ng dữ liệu bên trong bảng.  
IF EXISTS (Câu_lệnh_SELECT)  
Câu_lệnh1 | Khối_lệnh1  
[ ELSE  
Câ u _lệnh2 | Khối_lệnh2 ]  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD1: Tìm những đề tài có kinh phí lớn hơn kinh phí  
trung bình tất cả cá c đề tài.  
DECLARE @TBKP FLOAT  
SET @TBKP = (SELECT AVG(KINHPHI) FROM DETAI)  
IF EXISTS (SELECT KINHPHI FROM DETAI WHERE  
KINHPHI > @TBKP)  
BEGIN  
PRINT N'CÁ C ĐỀ TÀI CÓ KINH PHÍ CAO:' +  
CONVERT(CHAR, @TBKP)  
SELECT MADT, TENDT, CHUNHIEM,  
KINHPHI  
FROM DETAI  
WHERE KINHPHI > @TBKP  
END  
Biên soạn: Nguyễn Thị Mỹ Dung  
14  
CH4: LẬP TRÌNH TRANSACT - SQL  
VD2: Tìm thô ng tin những đề tài có nhiều hơn 3 sinh  
viên thực hiện, nếu khô ng có in ra thô ng bá o để biết.  
IF EXISTS (SELECTMASV, COUNT(MADT) FROM SV_DT  
GROUP BY MASV HAVING COUNT(MADT) > 3)  
BEGIN  
PRINT N'CÁ C ĐỀ TÀI CÓ SỐ LƯỢNG TRÊN 2 SINH  
VIÊN THỰC HIỆN!'  
SELECTDISTINCT D.MADT, TENDT, CHUNHIEM,  
KINHPHI, COUNT(SD.MASV)AS SL_SV  
FROM DETAI D INNER JOIN SV_DTSD ON  
D.MADT= SD.MADT  
GROUP BY D.MADT, TENDT, CHUNHIEM, KINHPHI  
HAVING COUNT(SD.MASV) > 3  
END  
ELSE  
PRINT N'KHÔ NG CÓ ĐỀ TÀI NÀO TRÊN 3 SINH VIÊN  
THỰC HIỆN!'  
Biên soạn: Nguyễn Thị Mỹ Dung  
4. Câ u lệnh Case… end  
Dùng để lựa chọn nhiều giá trị, nếu <biểu_thức>  
sau Case xuất hiện khi biểu thức có kiểu dữ liệu  
số.  
Case [<biểu_thức>]  
when <điều_kiện_1> then <giá_trị_1>  
when <điều_kiện_2> then <giá_trị_2>  
…..  
[Else <giá_trị_n>]  
End  
Biên soạn: Nguyễn Thị Mỹ Dung  
15  
CH4: LẬP TRÌNH TRANSACT - SQL  
Ví dụ1:  
DECLARE @TEN CHAR(3), @XUAT NVARCHAR(100)  
SET @TEN = 'PHI'  
SET @XUAT = (CASE @TEN  
WHEN 'MR' THEN N'Xin chào quý ô ng!!!'  
WHEN 'Mrs' THEN N'Xin chào quý bà!!!'  
WHEN 'Ms' THEN N'Xin chào quý cô !!!'  
ELSE N'XIN CHÀO MỌI NGƯỜI!!!'  
END)  
PRINT @XUAT  
Biên soạn: Nguyễn Thị Mỹ Dung  
Ví dụ 2: Xếp loại học lực cho sinh viên  
SELECTSINHVIEN.MASV,HOTENSV, HOCLUC,  
XEPLOAI= (CASE  
WHEN HOCLUC <5 THEN 'YEU'  
WHEN HOCLUC>=5 AND HOCLUC<7 THEN 'TB'  
WHEN HOCLUC>=7 AND HOCLUC<8 THEN  
'KHA'  
ELSE 'GIOI'  
END)  
FROM SINHVIEN  
Biên soạn: Nguyễn Thị Mỹ Dung  
16  
CH4: LẬP TRÌNH TRANSACT - SQL  
5. Lệnh vò ng lặp  
Cá c câ u lệnh được thực thi nhiều lần (lặp) khi  
nào điều kiện vẫn cò n đúng.  
WHILE <biểu thức logic>  
BEGIN  
--Cá c câ u lệnh  
END  
- Break: lệnh break nằm bên trong vò ng lặp  
while dùng để kết vò ng lặp.  
- Continue: lệnh continue nằm bên trong vò ng  
lặp while để bỏ qua cá c lệnh phí a sau nó và bắt  
đầu vò ng lặp mới.  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD1: In tổng từ 1 đến 10  
DECLARE @TONG INT, @I INT  
SET @TONG= 0  
SET @I = 1  
WHILE (@I <= 10)  
BEGIN  
SET @TONG = @TONG + @I  
SET @I = @I + 1  
END  
PRINT @TONG  
Biên soạn: Nguyễn Thị Mỹ Dung  
17  
CH4: LẬP TRÌNH TRANSACT - SQL  
VD2: Tính tổng cá c số chẵn từ 1 đến 20  
DECLARE @TONGCHAN INT, @I INT  
SET @TONGCHAN = 0  
SET @I = 1  
WHILE (@I <= 20)  
BEGIN  
IF @I % 2 = 0  
BEGIN  
SET @TONGCHAN = @TONGCHAN + @I  
PRINT N'TỔNG ['+ CONVERT(CHAR(2), @I)+'] =  
'+CONVERT(CHAR(5), @TONGCHAN)  
END  
ELSE  
BEGIN  
SET @I = @I + 1  
CONTINUE  
END  
SET @I = @I + 1  
END PRINT @TONGCHAN  
Biên soạn: Nguyễn Thị Mỹ Dung  
1. Khá i niệm  
Thủ tục là một đối tượng trong CSDL bao gồm một tập  
câ u lệnh SQL được kết hợp với cá c câ u lệnh khá c như:  
- Cấu trúc điều khiển (IF, CASE, WHILE,...), cá c biến,...  
- Cá c câ u lệnh SQL.  
Sử dụng cá c thủ tục lưu trữ trong CSDL sẽ giúp tăng  
hiệu năng của CSDL như:  
- Đơn giản hoá cá c thao tá c trên CSDL nhờ vào khả  
năng module hoá cá c thao tá c.  
- Thủ tục lưu trữ cho phé p chúng ta thực hiện cùng một  
yêu cầu bằng một câ u lệnh đơn giản thay vì phải sử dụng  
nhiều dò ng lệnh SQL (tiết kiệm thời gian thực thi).  
- Ngoài ra, thủ tục có thể cấp phá t quyền cho người  
dùng, nhờ đó tăng khả năng bảo mật đối với hệ thống.  
Biên soạn: Nguyễn Thị Mỹ Dung  
18  
CH4: LẬP TRÌNH TRANSACT - SQL  
2. Tạo procedure  
Procedure có thể sử dụng để kiểm tra tham số đầu  
vào, đầu ra cho cá c thao tá c dữ liệu.  
- Cú phá p:  
CREATE PROC | PROCEDURE <Tên_proc>  
[(<Ds_tham_số>)]  
AS  
--Tập lệnh SQL  
--…  
GO  
- Thực thi lời gọi thủ tục:  
EXEC | EXECUTE <Tên_proc> <Ds_tham_số>  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD1: Viết thủ tục nhập vào một tên. Xá c định:  
- Nếu nhập ‘Mr’ thì print ‘Xin chào quý ô ng!’  
- Nếu nhập ‘Mrs’ thì print ‘Xin chào quý bà!’  
- Nếu nhập ‘Ms’ thì print ‘Xin chào quý cô !’  
--Tham khảo  
CREATE PROC Kt (@tensv nvarchar(3))  
AS  
IF (@tensv='Mr')  
PRINT (N'Xin chào quý ô ng!!!')  
IF (@tensv='Mrs')  
PRINT (N'Xin chào quý bà!!!')  
IF (@tensv = 'Ms')  
PRINT (N'Xin chào quý cô !!!')  
GO  
EXECUTE kt 'Ms KIM'  
Biên soạn: Nguyễn Thị Mỹ Dung  
19  
CH4: LẬP TRÌNH TRANSACT - SQL  
VD2 : Kiểm tra MASV, MADT khi nhập dữ liệu vào bảng SV_DT  
CREATE PROC PRO_SV_DT (@MASV NVARCHAR(10), @MADT NVARCHAR(10),  
@NOIA_D NVARCHAR(40), @KETQUAFLOAT)  
AS  
IF EXISTS (SELECT MASV FROM SINHVIEN WHERE MASV = @MASV)  
BEGIN  
IF EXISTS (SELECT MADT FROM DETAI WHERE MADT = @MADT)  
BEGIN  
INSERT INTO SV_DT (MASV, MADT, NOIA_D, KETQUA)  
VALUES (@MASV, @MADT, @NOIA_D, @KETQUA)  
PRINT N'ĐÃ THÊM THÀNH CÔ NG'  
END  
END  
ELSE PRINT 'KHÔ NG THE INSERT DO MASV HAY MADT KHÔ NG TON TAI'  
RETURN 0  
GO --Thực hiện lệnh để kiểm tra  
EXEC PRO_SV_DT 'SV12','DT04','AN GIANG',8  
Biên soạn: Nguyễn Thị Mỹ Dung  
VD3: Giả sử ta cần thực hiện một chuỗi cá c thao tá c  
như sau trên cơ sở dữ liệu  
1. Thêm vào danh sá ch đề tài (MADT, TênDT, Chủ  
nhiệm, Kinh phí): DT1001, Xâ y dựng Website hỗ trợ việc  
làm, Trần Kiến Quốc, 20  
2. Lập danh sá ch sinh viên thực hiện đề tài DT1001 cho  
tất cả sinh viên có học lực trên 8.  
Cá ch 1: Theo cá ch thô ng thường  
INSERT INTO DETAI  
VALUES (‘DT1001', N‘Xâ y dựng Website hỗ trợ việc làm’,  
N‘Trần Kiến Quốc’, 20)  
INSERT INTO SV_DT (MASV,MADT)  
SELECT MASV, ‘DT1001'  
FROM SINHVIEN  
WHERE HOCLUC>8  
Biên soạn: Nguyễn Thị Mỹ Dung  
20  
Tải về để xem bản đầy đủ
pdf 31 trang yennguyen 14800 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 4: Lập trình Transact - SQL - 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_4_lap.pdf