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, CHUNH
Trang 1GVPT: 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
Trang 2I Thiết kế View, Index
- 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àmgiả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ênTable trong 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
Trang 3Biên soạn: Nguyễn Thị Mỹ Dung
Ví dụ: Tạo View Ketquadetai gồm hotensv, họclực, điểm trung bình đề tài
GROUP BY SINHVIEN.MASV, HOCLUC
Biên soạn: Nguyễn Thị Mỹ Dung
Trang 4DROPVIEW <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 HOCLUC >= 7
VD2:
DROP VIEW KETQUADETAI
Trang 5Lư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
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
Trang 6Chỉ 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)
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)
Trang 7Xóa chỉ mục
DROP INDEX <tên_bảngtên_chỉ_mục>
Ví dụ:
DROP INDEX DE_TAITENDT_ID
DROP INDEX SINHVIEN.SV_ID
Biên soạn: Nguyễn Thị Mỹ Dung
Biên soạn: Nguyễn Thị Mỹ Dung
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ònglặ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 NNLTkhá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ưulưu giágiá trịtrị tạmtạm thờithờ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ậptrình SQL
- Chương trình con, trigger giúp SQL thực hiệncác ràng buộc dữ liệu trong CSDL
Trang 82 Khai báo biến
Khai báo biến cục bộ
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 @x int, @y int
Trang 9Hiể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
- Khi gángán trịtrị cho biến cócó dữdữ liệuliệu từtừ bảngbảng dữ liệuphải sửsử dụngdụng từ khóa SELECT
- Khi inin dữdữ liệuliệu vừa có chuỗi và vừa có biếnbằng
bằng lệnh PRINT phải chuyểnchuyển đổiđổi kiểukiểu cho biếnsangchuỗi với hàm CONVERT
Cú pháp: CONVERT (<KIỂU>, <BIẾN>)VD:
CONVERT (CHAR(5), MAXKP)
Biên soạn: Nguyễn Thị Mỹ Dung
Trang 10DECLARE @DiemTB float
SET @DiemTB=( SELECT AVG (Diem)
DECLARE @tongkp float SELECT @tongkp = sum (kinhphi)
FROM DETAI VD
VD4 4:: 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)
Trang 11 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 2 ký ký hiệu hiệu @ @.
Ví dụ:
PRINT @@CPU_BUSY
PRINT @@VERSION
SELECT @@DATEFIRST AS SONGAYTUAN
SELECT @@CONNECTIONS AS SLGNOIKET
Biên soạn: Nguyễn Thị Mỹ Dung
DanhDanh sáchsách biếnbiến vàvà ýý nghĩanghĩa mộtmột sốsố biếnbiến hệhệ thốngthống
Biên soạn: Nguyễn Thị Mỹ Dung
@@CONNECTIONS Số các kết nối đến Server
@@CPU_BUSY Số lượng xử lý công việc của SQL
@@CURSOR_ROWS Số bản ghi trong cursor mở gần nhất
@@DATEFIRST Số ngày trong tuần
@@ERROR Mã lỗi xảy ra gần nhất
@@FETCH_STATUS = 0: nếu truy xuất thành công, = 1: ngược lại
@@IDEN TITY Giá trị identity gần nhất được sinh ra
@@LANGUA GE Ngôn ngữ sử dụng
@@MAX_CONNECTIONS Số lượng nối kết tối đa
@@ROWCOUNT Số bản ghi bị tác động bởi SQL
@@SERV ICENA ME Dịch vụ SQL trên máy chủ
@@TRANSC OUNT Số giao dịch đang hoạt động trên nối kết hiện tại
@@VERSION Phiên bản của SQL
Trang 12a a IF IF … … ELSE 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] ]
Trang 13Biê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
Trang 14b 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
IFEXISTS (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
Trang 15VD2: 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 ( SELECT MASV, 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!'
SELECT DISTINCT D.MADT, TENDT, CHUNHIEM,
KINHPHI, COUNT (SD.MASV) AS SL_SV
FROM DETAI D INNER JOIN SV_DT SD 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ệusố
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>
Trang 16Ví 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)
Biên soạn: Nguyễn Thị Mỹ Dung
Ví dụ 2: Xếp loại học lực cho sinh viên
SELECT SINHVIEN.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
Trang 17lặ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
Biên soạn: Nguyễn Thị Mỹ Dung
Trang 18VD2: Tính tổng các số chẵn từ 1 đến 20 DECLA RE @TONGCHA N INT , @I INT
SET @TONGCHA N = 0 SET @I = 1
WHILE (@I <= 20) BEGIN
IF @I % 2 = 0 BEGIN SET @TONGCHA N = @TONGC HA N + @I PRINT N'TỔNG ['+ CONV ERT ( CHA R (2), @I)+'] =
'+ CONV ERT ( CHAR( 5), @TONGCHA N) END
ELSE
BEGIN SET @I = @I + 1
CONTINUE
END SET @I = @I + 1 END PRINT @TONGCHA N
Biên soạn: Nguyễn Thị Mỹ Dung
- Thủ tục lưu trữ cho phép chúng ta thực hiện cùng một
yêu cầu cầu bằng bằng một một c âu c âu lệnh lệnh đơn đơn giả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ủ thủ tục tục có thể c ấp phát quyền c ho người dùng, nhờ đó tăng tăng khả khả năng năng bảo bảo mật mật đối với hệ thống.
Trang 19- 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
VD VD1 1: 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ô!’
Trang 20VD2 : 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), @KETQUA FLOAT ) 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ợ v iệc
Trang 21VD3 - Cách 2: Sử dụng Procedure
CREATE PROC THEM(@MA DT CHA R( 10), @TENDT CHA R(50),
@CHUNHIEM CHAR(40), @KINHPHI INT) AS
BEGIN
INSERT INTO DETAI (MADT, TENDT, CHUN HIEM, KINHPHI)
VALUES (@MADT, @TENDT, @CHUNHIEM, @KINHPHI)
INSERT INTO SV_DT (MASV, MADT) SELECT MASV, @MADT FROM SINHV IEN WHER E HOCLU C > 8 END
Thực hiện lệnh để kiểm tra EXEC TH EM 'DT1001','Xây dựng Website hỗ trợ v iệc làm', 'Trần Kiến Quốc', 20
Biên soạn: Nguyễn Thị Mỹ Dung
3 Sửa Procedure
Khi một thủ tục đã được tạo ra, ta có thể tiến hành định nghĩa lại thủ tục đó bằng câu lệnh ALTER PROCEDURE Câu lệnh này sử dụng tươ ng tự như câu lệnh CREATE PROCEDURE
Trang 22VD: Sửa Sửa Procedure Procedure từ VD3 ALTER PROC THE M ( @ MAD T CHAR(10 ),@ TEND T CHAR(50 ),@CHUNHIE M CHAR(40),@KINHPHI INT)
AS
BEGIN
IF NOT EXISTS ( SELECT MADT FROM DETAI WHERE MADT = @MADT)
BEGIN
INSERT INTO DETAI (MADT, TENDT, CHUNHIEM, KINHPHI)
VALUES (@MADT, @TENDT, @CHUNHIEM, @KINHPHI)
PRINT N'THÊM THÀNH CÔNG'
END
ELSE
PRINT N'MADT ĐÃ CÓ!!!'
BEGIN
INSERT INTO SV_DT (MASV, MADT)
SELECT MASV, @MADT FROM SINHVIEN
WHERE HOCLUC > 8
PRINT N'ĐÃ THÊM HOÀN TẤT!!!'
END END
Biên soạn: Nguyễn Thị Mỹ Dung
1 Viết procedure kiểm tra một số là chẵn hay lẻ
2 Viết proc in ra thứ tương ứng với số nhập vào
3 Viết thủ tục kiểm tra khóa chính khi thêm dữ liệu vào bảng Sinhvien, Monhoc, Khoa.
4 Viết thủ tục kiểm tra khóa chính Masv, Mamh đã
có trong bảng Sinhvien và bảng Monhoc khi thêm vào bảng kết quả.
Trang 231 Tạo Proc xóa một khoa nhập vào nếu không
4 Tạo Proc nâng điểm của sinhvien có MASV
Mã môn học, số điểm nâng được nhập vào (sửalại bài này: mã môn học bằng tên môn học)
mà trigger được thiết kế để bảo vệ
Trigger giúp đảm bảo tính toàn vẹn dữ liệu trongCSDL bằng cách ngăn không cho những sự thayđổi không nhất quán được thực hiện
Trigger chỉ được kích hoạt khi các câu lệnhđược thực thi trên bảng là: INSERT, UPDATE,
DELETE
Biên soạn: Nguyễn Thị Mỹ Dung
Trang 24- Giao tác tường minh + Khai báo trước với từ khóa: BEGIN TRAN + Kết thúc giao tác với từ khóa ROLLBACK TRAN nếu có lỗi xảy ra hoặc không , mọi mọi thay thay đổi đổi đều đều bị bị hủy hủy + Kết thúc giao tác với từ khóa COMMIT TRAN khi các lệnh hoàn tất, dữ liệu thay đổi sẽ giữ lại.
Biên soạn: Nguyễn Thị Mỹ Dung
VD: Đếm số lượng đề tài trước và sau khi thêm
SELECTCOUNT(*) AS [SL_OLD] FROM DETAIBEGIN TRAN
INSERT INTODETAI
VALUES ('DT1003', N'QUẢN LÝ ĐIỂM RÈNLUYỆN SINH VIÊN', N'MAI THANH TÂM', 15)
SELECTCOUNT(*)AS [SL MOI]
ROLLBACK TRAN | COMMIT TRAN
SELECTCOUNT(*)AS [SL HIENTAI]
Trang 25[ INSTEAD OF] | [ FOR | AFTER ]
< INSERT | [ ] UPDATE | [ ] DELETE >
AS BEGIN
TẬP LỆNH SQL ….
END
Biên soạn: Nguyễn Thị Mỹ Dung
b/ Các thành phần
- Tênbảng: Trigger có ảnh hưởng trên bảng này
- INSTEAD OF: loại Trigger này sẽ kiểm tra dữliệu trước, dữ liệu không bị thay đổi, thay thế cậpnhật dữ liệu bằng hành động khác
- FOR | AFTER: loại Trigger thông thường sẽkiểm tra các Rule và ràng buộc, dữ liệu tạm thời
Trang 26c/ Các bảng trung gian và bảng tạm
- Inserted: Chứa dữ liệu được thêm mới trongINSERT | UPDATE, có cấu trúc bảng giống bảngthực
- Deleted: Chứa dữ liệu bị xóa trong DELETE |UPDATE, cấu trúc bảng giống bảng thực đượccập nhật
- Chức năng UPDATE trong SQL sẽ xóa dòng
dữ liệu cũ, thêm dòng dữ liệu mới với thông tinđược cập nhật
Biên soạn: Nguyễn Thị Mỹ Dung
VD1: Tạo trigger cập nhật, chèn dữ liệu năm sinh cho sinh viên phải trên 18
CREATE TRIGGER TRIG_SV ON SINHVIEN FOR INSERT, UPDATE AS
BEGIN CAP NHAT DU LIEU
IF UPDATE(NGAYSINH) BEGIN
IF EXISTS (SELECT * FROM DELETED A, INSERTED B WHERE (A.NAMSINH- B.NAMSINH)<18
BEGIN
PRINT ' SINH VIEN PHAI TREN 18 TUOI ' ROLLBACK TRAN
END END CHEN DU LIEU
IF EXISTS (SELECT * FROM INSERTED
WHERE (YEAR(GETDATE()) - NAMSINH))<18) BEGIN
PRINT ' SINH VIEN PHAI TREN 18 TUOI ' ROLLBACK TRAN
END END KETTHUCTRIGGER
Trang 27-Nhập dòng lệnh INSERT INTO để kiểm tra
INSERT INTOSINHVIEN
VALUES ('SV100', N'NGUYỄN THỊ MỸ DUNG',
1999, 7.0, N'ĐỒNG THÁP')
- Thông báo lỗi như sau:
Biên soạn: Nguyễn Thị Mỹ Dung
VD2: Cài đặt Trigger khi xóa dữ liệu ở bảng Sinh viên s ẽ xóa luôn dữ liệu ở bảng tham chiếu.
B1: Tạo Trigger
CREATE TRIGGER DEL_SV ON SINHVIEN FOR DELETE
AS BEGIN
Trang 28Bước 2: TẠO THỦ TỤC KIỂM TRA TRIGGER XÓA
CREATE PROC XOASV @MASV CHAR(10)
AS
IF EXISTS (SELECT * FROM SINHVIEN WHERE MASV =
@MASV)
BEGIN
ALTER TABLE SV_DT NOCHECK CONSTRAINT ALL
CHẠY TRIGGER
DELETE FROM SINHVIEN WHERE MASV = @MASV
ALTER TABLE SV_DT CHECK CONSTRAINT ALL
Biên soạn: Nguyễn Thị Mỹ Dung
VD3: Tạo trigger thỏa m ãn ràng buộc khi thay đổi m ã số
đề tài sẽ thay đổi các thông tin liên quan
PRINT N'BẢNG ĐỀ TÀI KHÔNG CÓ DỮ LIỆU!' RETURN NẾU KHÔNG CÓ THÌ KHỎI XÓA END
IF UPDATE (MADT) BEGIN
UPDATE T1 SET T1.MADT = T3.MADT FROM SV_DT T1, DELETED T2, INSERTED T3 WHERE T1.MADT = T2.MADT
Tương tự cho các bảng khác (nếu có) PRINT N'ĐÃ CẬP NHẬT XONG DỮ LIỆU!' END
END
Trang 29B2: Tạo thủ tục kiểm tra Trigger cập nhật
CREATE PROC CAPNHATD T @MADT_OLD CHAR(10),
@MADT_NEW CHAR(10) AS
IF EXISTS (SELECT * FROM DETA I
WHERE MADT = @MADT_OLD) BEGIN
VÔ HIỆU HÓA TẠM THỜI CÁC RÀNG BUỘC ALTER TABLE SV_DT NOCHECK CONSTRA INT ALL
CHẠY TRIGGER UPDATE DETA I SET MADT = @MADT_NEW WHERE MADT = @MADT_OLD
KÍCH HOẠT TRỞ LẠI CÁC RÀNG BUỘC ALTER TABLE SV_DT CHECK CONSTRA INT ALL
ALTER TRIGGER <Tên_trigger>
ON <TÊN_BẢNG>
[ INSTEAD OF] | [ FOR | AFTER ]
< INSERT | [ ] UPDATE | [ ] DELETE >
AS BEGIN
TẬP LỆNH SQL ….
END
Ví dụ dụ:: SV SV tự tự thực thực hiện hiện
Biên soạn: Nguyễn Thị Mỹ Dung
Trang 30- Không được tạo và tham chiếu bảng tạm
- Không tạo hay thay đổi, xóa cấu trúc các đối tượng sẵn có trong CSDL (CREATE, ALTER, DROP)
- Không gán hay cấp quyền cho người dùng
thống.
Biên soạn: Nguyễn Thị Mỹ Dung
Tạo các trigger sau:
1 Khi sửa table khoa, sửa đổi makhoa trên tablesinhvien
2 Khi sửa table môn, sửa đổi mamh trên tableketqua
3 Khi sửa table sinhvien, sửa đổi masv trêntable ketqua
4 Khi xóa table sinhvien Xóa những sinh viêntương ứng trong table ketqua
5 Khi xoa table khoa: để trống mã khoa cho chonhững sinh viên có mã khoa trùng với mã mã khoavừa bị xóa bên table khoa
Trang 316 Khi thêm vào table monhoc: số tiết phải >=15
Biên soạn: Nguyễn Thị Mỹ Dung
- Cách sử dụng, tạo View và Index
- Khai báo và lập trình trong T - SQL+ Declare: khai báo
+ Set, Select: gán giá trị+ Print, Select: hiển thị giá trị+ Câu lệnh if […else]
+ Câu lệnh Case … end+ Câu lệnh While
- Xây dựng Procedure
- Xây dựng Trigger
Biên soạn: Nguyễn Thị Mỹ Dung