0% found this document useful (0 votes)
32 views28 pages

CHƯƠNG I - Tổng quan về hệ quản trị cơ sở dữ liệu và ngôn ngữ truy vấn T-SQL trong SQL server CHƯƠNG II - CSDL và bảng trong SQL Server

Uploaded by

hanh04do11
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
32 views28 pages

CHƯƠNG I - Tổng quan về hệ quản trị cơ sở dữ liệu và ngôn ngữ truy vấn T-SQL trong SQL server CHƯƠNG II - CSDL và bảng trong SQL Server

Uploaded by

hanh04do11
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 28

CHƯƠNG I - Tổng quan về hệ quản trị cơ sở dữ liệu và ngôn ngữ truy

vấn T-SQL trong SQL server


CHƯƠNG II – CSDL và bảng trong SQL Server
1. Cơ sở dữ liệu trong SQL
2. Khởi tạo databse trong sql server

+ Tạo databse mặc định:

Create databse <Ten_database>

+ Tạo database theo yêu cầu:

create database ten_csdl

on primary

name = ten_csdl,

filename = ‘đường_dẫn/tên_csdl.mdf’,

size = kích_thước_ban_đầu,

maxsize = kích_thước_tối_đa,

filegrowth = kích_thước_tăng

log on

name = tên_csdl_log,

filename = ‘đường_dẫn/tên_csdl.ldf’

size = kích_thước_ban_đầu,

maxsize = kích_thước-tối_đa,

filegrowth = kích_thước_tăng

3. Làm việc với database trong SQL Server

Sử dụng data: use <ten_database>

Đổi tên data: alter database <ten_csdl> modify name = <ten_moi>


Xóa data: khi sử dụng lệnh xóa, csdl sẽ bị xóa khỏi vùng lưu trữ, muốn tạo thì phải tự thực thi lại lệnh

Drop database <ten_csdl>

4. Table

- Tạo bảng:

create table <ten_bang>

<ten_truong_1> <kieu_du_lieu> [RBTV] [,…],

<ten_truong_2> <kieu_du_lieu> [RBTV] [,…],

<ten_truong_3> <kieu_du_lieu> [RBTV] [,…]

- Sửa cấu trúc bảng

+ Thêm 1 cột mới vào bảng:

Alter table <ten__bang>

Add <ten_cot> <kieu_du_lieu> [RBTV] [,…]

- Xóa 1 cột khỏi bảng

Alter table <ten_bang>

Drop column <ten_cot>

- Sửa đổi kiểu dữ liệu của cột

Alter table <ten_bang>

Alter column <ten_cot> <kieu_du_lieu_moi>

- Đổi tên cột

Sp_rename ‘ten_bang.ten_cot_cu’ , ‘ten_bang_moi’ , ‘COLUMN’

- Đổi tên bảng


Sp_rename ‘ten_bang_cu’ , ‘ten_bang_moi’

- Xem cấu trúc bảng

Sp_help ‘tên_bảng’

- Xem dữ liệu các bản ghi trong bảng

Select * from ten_bang

- Thêm ràng buộc cho cột

Alter table <tên_bảng>

Add constraint <tên_ràng_buộc> <Loại_ràng_buộc> (tên cột)

- Hủy ràng buộc đã đặt

Alter table <tên_bảng>

Drop constraint <tên_RB>

- Bật ràng buộc trong bảng

alter table tên_bảng

check constraint all | tên_constraint [,...]

- Tắt ràng buộc trong bảng:

alter table tên_bảng

nocheck constraint all | tên_constraint [,...]

5. Chèn dữ liệu vào bảng

Insert into ten_bang (cot1, cot2, …)

Values (gt1, gt2,…)

insert into <tên bảng> (ds cột)


values (giá trị cần chèn của hàng 1) , (giá trị cần chèn của hàng 2), …

insert <tên bảng> values (giá trị cần chèn của một hàng)

6. Xem dữ liệu bảng

Select * from <ten_bang>

7. Cập nhất dữ liệu trên bảng

Update <ten_bang> set cot1=gt1, cot2=gt2, ….,

Where [dieu_kien]

8. Xóa bản ghi trong bảng

Delete from <ten_bang>

[where <dieu_kien> ]

9. Xóa bảng

Drop table <danh_sách_tên_các_bảng>

10. Xóa tất cả các dòng nhưng vẫn giữ nguyên cấu trúc bảng

Delete from <tên_bảng>;

CHƯƠNG III – Các ràng buộc toàn vẹn


1. Ràng buộc toàn vẹn

2. Cách khai báo ràng buộc toàn vẹn

- Khai báo ở mức cột

Khai báo mức cột không đặt tên: <ten_cot> <kieudulieu> <loairangbuoc>

Khai báo mức cột có đặt tên: <tencot> <kieudukieu> constraint <tenrangbuoc> <loairangbuoc>

- Khai báo ở mức bảng

Constraint <tenrangbuoc> <loairangbuoc> (danh_sach_cot)


3. Thêm ràng buộc mới vào bảng

Alter table <ten_bang>

Add constraint <ten_rang_buoc> <loai_rang_buoc> (danh_sach_cot)

4. Default

Trong khi tạo bảng:

- Không đặt tên:

Create table MONHOC

Mamh char(4),

Tenmh nvarchar(40) default ‘giao trinh’,

DVHT tinyint

- Đặt tên:

Create table MONHOC

Mamh char(5),

Tenmh nvarchar(40) constraint MH default ‘ten mon hoc’

DVHT int )

Tạo ràng buộc sau khi tao bảng:

Alter table <ten_bang> add constraint <ten_rb> default ‘<ten_đặt> for <ten_cot_muon_tao_rb>

5. Check

Khai báo ràng buộc ở mức cột:

Ex:

C1: không đặt tên: Diem float check (diem>0 and diem<=10)

C2: đặt tên: Diem float constraint C1 check (diem>0 and diem<=10)
Khai báo ở mức bảng: khi muốn đặt tên cho ràng buộc và định nghĩa ràng buộc trên nhiều cột

Ex:

C1: trong khai báo bảng

Create table SV

ID int,

Hoten varchar (5),

Tuoi int,

Tp varchar (50),

constraint CH_SV check (tuoi>=18 and tp= ‘ HN’)

C2: sau khai báo bảng

Create table SV

ID int,

Hoten varchar (5),

Tuoi int,

Tp varchar (50)

Alter table SV

Add constraint CH_SV check (tuoi>=18 and tp= ‘ HN’)

6. Not null

7. Unique

- Trong khai báo bảng:

Constraint <ten_rb> unique (cot1, cot2)

- Sau khai báo bảng:

Alter table <ten_bang>


Add constraint <ten_rb>

Unique (cot1, cot2)

8. Khóa chính – Primary key

Ex:

Table có 1 khóa: masv char(6) primary key,

Table có 2 khóa: Constraint KH primary key (masv , mamh)

Sau khai báo bảng:

Alter table Ketqua

Add constraint PK primary key (masv , manmh)

10. Khóa ngoại – foreign key

Tạo khóa ngoại trong tạo bảng:

foreign key (tên_cột) references <tên bảng tham chiếu_khóachính>

Create table KQ

Masv char(2) foreign key references SINHVIEN,

Mamh char(5) foreign key conferences MONHOC,

Constraint KH primary key (Masv, Mamh)

Tạo khóa sau khi tạo bảng:

Alter table KQ add constraint KH_SV foreign key (Masv) references SINHVIEN (Masv)

11. Xóa ràng buộc

Alter table <ten_bang> drop constraint <ten_rb>

12. Thuộc tính IDENTITY


create table SINHVIEN

MaSV int identity primary key,

HotenSV nvarchar(30) not null,

GioiTinh nchar(7) check (Gioitinh = N'Nam' or Gioitinh = N'Nữ'),

NgaySinh date not null,

QueQuan nvarchar(20),

Lop nvarchar(5),

Email varchar(50) unique


)

Indentity (seed, increment) = indentity (giá trị khởi tạo, giá trị tăng cho mỗi lần)

CHƯƠNG IV – Truy vấn đơn giản trong cơ sở dữ liệu


1. Câu lệnh select

select [distinct / top n / *] <bieu_thuc/cot [as <ten_moi>] , …>

into <ten_bang_moi>

from <ten_bang>

where <dieu_kien_chon>

group by <danh_sach_cot_gom_nhom>

having <dieu_kien_loc_nhom>

order by <ten_cot> [asc/desc] , …

Truy vấn đơn giản:

Select <danh_sách_các_cột>

From <tên_bảng>

Where <biểu_thức_điều_kiên>

Chọn tất cả đối tượng trong bảng: Select * from <tenbang>

Chọn 1 số cột trong bảng: Select <tencot1> , <tencot2> , … from <ten_bang>


Liên kết các cột dữ liệu trong kết quả truy vấn

Select <tencot> + ‘string’ + <tencot> + ‘string’ + <tencot> + …. From <tenbang>

Hạn chế tập kết quả bằng việc sử dụng TOP và PERCENT

Lấy n hàng trong bản ghi với TOP:

Select top n <tencot> from <tenbang>

Lấy n hàng trong bản ghi với PERCENT:

Select top n percent <tencot> from <tenbang>

Loại bỏ dữ liệu lặp với DISTINCT

Select distinct <tencot> from <tenbang>

2. Sử dụng mệnh đề WHERE

Select <tencot>

From <tenbang>

Where <dieukien>

select * from monhoc where dvhp >2 and dvhp <5

select * from monhoc where not dvhp < 4

Lấy dữ liệu trong một khoảng với BETWEEN

Select <cot1>, <cot2>,…

From <tenbang>

Where <tencot> Between <giatri1> and <giatri2>

Tìm kiếm gần đúng với LIKE

Select <tencot1>, <tencot2>,…

From <tenbang>

Where <tencot> like <du_lieu_mau>


3. Mệnh đề ORDER BY

Select <tencot>

From <tenbang>

[ where <dieu_kien>]

Order by <tencot> [ASC/DESC]

4. Mệnh đề GROUP BY

Select <tencot>

From <tenbang>

[ Where <dieukien>]

Group by <tencot>

5. Mệnh đề HAVING

Select <tencot>, ham_tap_hop (<tencot>)

From <tenbang>

Where <dieukien>

Group by <tencot>

Having ham_tap_hop (<tencot>) dieukien giatri

CHƯƠNG V – Truy vấn nâng cao trên nhiều bảng


1. Kết nối sử dụng mệnh đề WHERE

Select bang1.cot1, bang2.cot2,…

From bang1, bang2,…

Where <điều kiện kết nối các bảng, điều kiện chắt lọc>

2. Kết nối bằng mệnh đề JOIN

2.1 Inner join

Select bang1.cot1, bang2.cot2,…

From bang1 inner join bang2

On bang1.cot_chung = bang2.cot_chung

2.2 Outer join

2.2.1 Left join

Select bang1.cot1, bang2.cot2,…

From bang1 left bang2

On bang1.cot_chung = bang2.cot_chung

2.2.2 Right join

Select bang1.cot1, bang2.cot2,…

From bang1 right join bang2

On bang1.cot_chung=bang2.cot_chung

2.2.3 Full right

Select bang1.cot1, bang2.cot2,…

From bang1 full join bang2

On bang1.cot_chung=bang2.cot_chung

2.3 Cross join

Select bang1.cot1 , bang2.cot2


From bang1 , bang2

 không có WHERE

2.4 Self join

Select a.ten_cot , b.ten_cot, …

From bang1 as a , bang2 as b

Where a.cot_chung=b.cot_chung

3. Truy vấn con

a. So sánh tập hợp

b. Phân loại truy vấn con:

c. Truy vấn con – subquery

4. Truy vấn con trong SELECT

Select count(masv) – (select count(distinct masv) from ketqua) as ‘số lượng sv chưa thi’ from sinhvien

5. Truy vấn con trong FROM

Select <danh sách các cột>

From R1, R2 (<truy vấn con>) as ten_bang

Where <điều kiện>

6. Truy vấn con trong WHERE


Ex: cho biết số sinh viên đạt điểm cao nhất môn có mã là CSDL

Select count(masv) ‘Số sv đạt điểm cao nhất’

Form ketqua

Where mamh= ‘csdl’ and diem=(select max(diem) from ketqua where mamh= ‘csdl’)

Ex: cho biết danh sách sinh viên của các snh viên đạt điểm cao nhất có mã là cơ sở dữ liệu

Select sv.masv, hotensv, lop

From sinhvien sv, ketqua kq

Where sv.masv=kq.masv and mamh= ‘csdl’ and diem=(select max(diem) from ketqua where mamh=
‘csdl’)

7. Các phép toán tập hợp

- Union – hợp:

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

Union

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

- Union all:

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

Union all

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

- Except – trừ:
Select <danh sách cột> from <danh sách bảng> where <điều kiện>

Except

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

- Intersect – giao:

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

Intersect

Select <danh sách cột> from <danh sách bảng> where <điều kiện>

CHƯƠNG IV – Khung nhìn View


1. Khung nhìn

Create view tên_khung_nhìn [(danh_sach_cot)]

As câu_lệnh_select

2. Thay đổi định nghĩa khung nhìn

Alter view tên_khung_nhìn [(danh_sách_cột)]

As câu_lệnh_select

3. Xóa khung nhìn

Drop view tên_khung_nhìn

4. WITH CHECK OPTION trong view


5. UPDATE và INSERT trong view
6. Ưu điểm của khung nhìn
7. Nhược điểm của khung nhìn

CHƯƠNG VII – Lập trình trong T-SQL (Hàm và thủ tục)


1. Tổng quan về T-SQL

Begin
-- khai báo biến

-- các câu lệnh

End

2. Biến trong T-SQL

2.1 Biến hệ thống

Tên bắt đầu bằng chữ: @@

2.2 Biến do người sử dụng tự định nghĩa

Tên bắt đầu bằng chữ: @

Cú pháp:

-- khai báo biến: Declare @tên_biến kiểu_dữ_liệu

-- gán giá trị cho biến: set @tên_biến=gt hoặc select @tên_biến = gt

-- xuất kết quả: print hoặc select

Ex: gán giá trị 2 biến và in kết quả ra màn hình

Begin

-- khai báo hai biến

Declare @a int, @b int;

-- gán giá trị cho 2 biến

Set @a=4;

Select @b=8;

-- in ra màn hình, sử dụng hàm cast ép kiểu int về kiểu chuỗi

Print ‘a=’ + cast (@a as varchar (20))

Print ‘b=’ + cast (@b as varchar (20))

End

Ex: gán giá trị cho biến bằng giá trị trong câu lệnh

Begin

Use ql_sv
Declare @s int;

Set @s = (select count(masv) from sinhvien)

Print N’Số sv la: ‘+cast (@s as varchar (10))

End

3. Các cấu trúc lệnh trong T-SQL

3.1 Cấu trúc rẽ nhánh if … else

if (điều kiện)

khối lệnh 1;

else if (điều kiện)

khối lệnh 2;

else

khối lệnh;

Ex:

Begin

Declare @a int, @b int;

Set @a=1;

Set @b=2;

If(@a<@b)

Print N’số a nhỏ hơn số b’

Else

Print N’số a lơn hơn số b’

End

3.2 Câu lệnh CASE

Dạng 1:
Case <biểu_thức_lựa_chọn>

When gía_trị_1 then <thực_hiện_khi_gia_trị_1>

when gía_trị_2 then <thực_hiện_khi_gia_trị_2>

….

when gía_trị_n then <thực_hiện_khi_gia_trị_n>

else <thực_hiện_khi_gt_khác>

end

Dạng 2:

Case

When <điều_kiện_1> then <thực_hiện_lệnh_1>

When <điều_kiện_1> then <thực_hiện_lệnh_1>

When <điều_kiện_1> then <thực_hiện_lệnh_1>

Else <thực hiện khi gt khác>

End

Ex:

Select masv, hoten,

( case gioitinh

When N’Nữ’ then ‘đây là sinh viên nữ’

When N’Nam’ then N’đây là sinh viên nam’

Else N’Chưa phân biệt được’

End ) as N’Thông báo’

From sinhvien

3.3 Câu lệnh While

While (điều_kiện)

Begin

Khối lệnh;
End;

4. Các kiểu dữ liệu đặc biệt

Kiểu dữ liệu Table (dạng tường minh)

Declare @tên_biến Table (

Column 1 DataType 1,

Column 1 DataType 1 )

 sử dụng các câu lệnh chèn dữ liệu, xóa hay cập nhất cho biến kiểu Table như một Table thông thường

Begin

Declare @a table (

Masv int primary key,

Tensv nvarchar (30),

Ngaysinh date,

Malop varchar(5)

-- sử dụng lệnh select xem thông tin bảng

Select * from @a

-- chèn dữ liệu cho bảng

Insert into @a

Values (2, N’A’, ‘2005-1-12’, ‘L01’)

Select * from @a

-- cập nhật dữ liệu bảng

Update @a set malop=’L02’ where masv=2

Select * from @a

End

4. Một số hàm thông dụng

Hàm iif: iif (điều kiện, gt1, gt2): nhận giá trị gt1 nếu điều kiện đúng và gt2 nếu điều kiện sai
Hàm xâu xử lý:

Left (S, n): trả về n ký tự bên trái trong xâu S

Right(S, n): trả về n ký tự bên phải trong xâu S

Rtrim(S): xóa các kí tự trắng dư thừa bên phải

Ltrim(S): xóa các kí tự trắng dư thừa bên trái

Hàm xử lý ngày tháng:

Datediff(định dạng, T1, T2): tính khoảng cách giữa T1 và T2 theo định dạng (ngày, tháng, năm, phút,
giây, quý, tuần…)

Datepart(định dạng, T): trả về giá trị thời gian (kiểu nguyên) tùy thuộc vào định dạng (ngày, tháng, năm,
phút, giây, quý, tuần…)

Dateadd (định dạng, n, T): thêm vào T số lượng thời gian n theo định dạng (ngày,…)

DatePart(N,date): date là ngày truyền vào để lấy các phần tương ứng, N là 1 hoặc 2 chữ cái viết tắt đại
diện cho một phần của tham số date.

N có thể có các giá trị sau:

- yy: năm của date

- qq, q: quý của date

- mm, m: tháng của date

- dy, y: ngày date là ngày thứ mấy của năm

- dd,d: Lấy phần ngày của date

- wk, w: date thuộc tuần thứ mấy trong năm

- dw: là ngày thứ mấy trong tuần, chú ý rằng 1 chính là ngày Chủ nhật.

5. Thủ tục lưu trữ - stores procedure

Tạo thủ tục lưu trữ:

Create procedure <ten_thu_tuc>

[( <danh sách tham số>)]

[with recompile / encrypition/ recompile, encryption]

As

<các câu lệnh của thủ tục>


Tập hợp các câu lệnh sử dụng trong nội dung thủ tục: các câu lệnh này có thể đặt trong cặp từ khóa
BEGIN…END hoặc không.

Lời gọi thủ tục lưu trữ:

Thủ tục lưu trữ được gọi theo cấu trúc: ten_thu_tuc [danh sách tham số]

Nếu thủ tục được gọi từ 1 thủ tục khác, thực hiện bên trong 1 trigger hay phối hợp với câu lệnh select,
cấu trúc như sau: Execute ten_thu_tuc_luu_tru [danh sách tham số]

Thứ tự các đối số có thể không cần tuân theo thứ tự các tham số như khi định nghĩa: @ten_tham_so =
giá trị

Sửa thủ tục lưu trữ:

alter procedure <tên thủ tục>

[(<danh sách tham số>)]

[with recompile / encryption / recompile, encryption]

as

Xóa thủ tục lưu trữ:

Drop procedure <tên thủ tục>

6. Hàm – function

Cách tạo hàm:

create function ten_hàm [(<danh sách tham số>)]

returns (kiểu_trả_về_của_hàm)

as

begin

các_câu_lệnh_của_hàm

return giá_trị

end
Sử dụng hàm:

dbo.<tên hàm> (danh sách tham số thực sự)

Hàm với giá trị trả về là 1 giá trị

Ex: hàm lấy giá trị là năm hiện hành

Create function namhienhanh()

Returns int

As

Begin

Return year(getdate())

End

Select dbo.namhienhanh() ‘Năm nay la năm’

Ex: viết hàm xác định thứ trong tuần của 1 giá trị kiểu ngày

Datepart (dangthoigian, thoigian)

Select datepart (dw, ‘2021/04/13’) ‘Ngày thứ’

Ex: viết hàm xác định thứ trong tuần của 1 giá trị kiểu ngày

Create function thu (@ngay date)

Returns nvarchar(20)

As

Begin

Declare @st nvarchar(20)

Select @st = case datepart (dw, @ngay)

When 1 then N’chủ nhật’

When 2 then N’thứ 2’

When 3 then N’thứ 3’


When 4 then N’thứ 4’

When 5 then N’thứ 5’

When 6 then N’thứ 6’

When 7 then N’thứ 7’

End

Return (@st)

End

Kết quả:

Set dateformat dmy

Select dbo.thu (‘20/09/2021’)

Cách sử dụng hàm

dbo.<tên hàm> (danh sách tham số thực sự)

Ex: xem danh sách sinh viên sinh vào thứ mấy trong tuần

Select masv, hoten, ngaysinh, dbo.thu(ngaysinh) as ‘thứ trong tuần’

From sinhvien

Hàm với giá trị trả về kiểu bảng

create function <tên_hàm> ([danh_sách_tham_số])

returns table

as

return <câu_lệnh_select>

Sửa hàm:

alter function ten_ham ([danh_sách_tham_so])

returns (kiểu_trả_về_hàm)

as

begin
các_câu_lệnh_của_hàm

end

Xóa hàm:

Drop function ten_ham

7. Hàm nội tuyến (inline)

Create function ten_ham ([<danh sách tham số>])

Returns table

As

Return (câu lệnh select)

Ex: tạo hàm xem điểm của sinh viên theo lớp

Create function diemlop

(@lop varchar (10))

Returns table

As

Return

(select sv.masv, hoten, tenmh, diem

From sinhvien sv, monhoc mh, ketqua kq

Where sv.masv=kq.masv and kq.mamh=mh.mamh and lop=@lop)

Sau khi khởi tạo thành công: select * from dbo.diemlop (‘at19a’)

8. Hàm bao gồm nhiều câu lệnh bên trong (multi-statement)

Create function ten_ham ([<danh sách tham số>])

Returns @biến_bảng table định_nghĩa_bảng

As
Begin

Các_câu_lệnh_trong_thân_hàm

Return

End

Ex: tạo hàm cho biết số sinh viên của mỗi lớp đã thi môn nhập vào

Create function tongsv

(@mamon char(5))

Returns @bangthongke table

Lop varchar (10),

Tongsosv int

As

Begin

Insert into @bangthongke

Select lop, count(sv.masv)

From sinhvien sv, ketqua kq, monhoc mh

Where sv.masv=kq.masv and mh.mamh=kq.mamh and mh.mamh=@mamon

Group by lop

Return

End

Sau khi khởi tạo thành công: select * from tongsv(‘csdl’)


CHƯƠNG VIII – TRIGGER

1. Trigger

2.

DDL Trigger

DML Trigger
3.

- After / For Trigger

- Instead of trigger

4.

5. Bảng ảo Inserted và deleted

- Bảng Inserted

- Bảng deleted

- Bảng của inserted và deleted

7. Cách tạo Trigger

Create trigger tên_trigger

On tên_table

{ for | after | instead of } { insert | update | delete }

As các_câu_lệnh_transact_sql
8. After trigger

Ex: Tạo Trigger không cho phép xóa sinh viên quê ở Hà Nội

CREATE TRIGGER Trigger_SV_NoDelete_HN ON dbo.sinhvien

AFTER DELETE

AS

IF (SELECT Quequan FROM Deleted) = N'Hà Nội'

BEGIN

PRINT N'Không xóa được sinh viên quê ở Hà Nội'

ROLLBACK TRANSACTION

END

CREATE Trigger Trigger_SV_NoDelete_HN ON dbo.sinhvien

FOR DELETE

AS

IF EXISTS (SELECT * FROM DELETED WHERE Quequan = N'Hà Nội')

BEGIN

PRINT N'Không thể xóa sinh viên ở Hà Nội'

ROLLBACK TRANSACTION

END

9. Instaed of trigger

Ex: Tạo Trigger không cho phép xóa sinh viên quê ở Hà Nội

CREATE TRIGGER Trigger_SV_NoDelete_HN ON dbo.sinhvien

INSTEAD OF DELETE AS

IF (SELECT DISTINCT Quequan FROM Deleted) = N'Hà Nội'


PRINT N'Không xóa được sinh viên quê ở Hà Nội'

10. Index

- Không nên dùng index khi:


- Cấu trúc của index:

- Phân loại index

11. Lệnh cấp phát quyề Grant

Grant privilege_name

On object_name

To { user_name | public | role_name }

[ with grant option ]

12. Lệnh thu hồi quyền đã cấp revoke

Revoke privilege_name

On object_name

From { user_name | public | role_name }

[ cascade ]

13. Privileges và role trong SQL

You might also like