Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên

Mục tiêu

- Kỹ năng: Viết các câu lệnh tạo các ràng buộc cho bảng.

- Kiến thức:

- Giải thích ý nghĩa của các ràng buộc: NOT NULL, PRIMARY KEY,

UNIQUE, CHECK, FOREIGN KEY (or REFERENCES).

- Phân biệt ràng buộc mức cột và ràng buộc mức bảng.

- Giải thích sự khác nhau giữa tùy chọn CASCADE và NO ACTION

trong ràng buộc tham chiếu khi xóa và cập nhật dữ liệu.

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 1

Trang 1

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 2

Trang 2

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 3

Trang 3

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 4

Trang 4

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 5

Trang 5

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 6

Trang 6

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 7

Trang 7

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 8

Trang 8

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 9

Trang 9

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 19 trang xuanhieu 4040
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên

Bài giảng Microsoft SQL Server - Bài 9: Các ràng buộc cho bảng - Lê Thị Tú Kiên
1 
Các ràng buộc cho bảng 
Mục tiêu 
- Kỹ năng: Viết các câu lệnh tạo các ràng buộc cho bảng. 
- Kiến thức: 
- Giải thích ý nghĩa của các ràng buộc: NOT NULL, PRIMARY KEY, 
UNIQUE, CHECK, FOREIGN KEY (or REFERENCES). 
- Phân biệt ràng buộc mức cột và ràng buộc mức bảng. 
- Giải thích sự khác nhau giữa tùy chọn CASCADE và NO ACTION 
trong ràng buộc tham chiếu khi xóa và cập nhật dữ liệu. 
2 
Các ràng buộc mức cột: 
- NOT NULL: ràng buộc không cho phép cột chứa giá trị Null. 
- PRIMARY KEY: ràng buộc yêu cầu mỗi dòng trong bảng có một giá trị duy 
nhất tại cột khóa chính. Giá trị Null cũng không được chứa trong cột khóa 
chính này. 
- UNIQUE: Yêu cầu mỗi dòng trong bảng có một giá trị duy nhất tại cột đặt 
ràng buộc UNIQUE. 
- CHECK: ràng buộc giới hạn các giá trị trên một cột. 
- [FOREIGN KEY] REFERENCES: Ràng buộc tham chiếu giữa một cột 
trong trong của bảng này với một cột của bảng kia. 
3 
Các ràng buộc mức cột: 
- PRIMARY KEY: ràng buộc yêu cầu mỗi dòng trong bảng có một tập giá trị 
duy nhất trên một hay nhiều cột khóa chính. Giá trị Null cũng không được 
chứa trong các cột khóa chính. 
- UNIQUE: Yêu cầu mỗi dòng trong bảng có một tập giá trị duy nhất trên 
một hay nhiều cột đặt ràng buộc UNIQUE. 
- CHECK: ràng buộc giới hạn các giá trị cho một cột hay nhiều cột. 
- [FOREIGN KEY] REFERENCES: Ràng buộc tham chiếu giữa một hay 
nhiều cột trong bảng này với một hay nhiều cột của bảng kia. 
4 
Câu lệnh tạo bảng chấm công với hai cột là khóa chính. 
5 
Ví dụ trên là câu lệnh tạo bảng Invoices1 (hóa đơn 1) với ràng buộc check ở 
mức cột. ---- 
- Điều kiện thứ nhất là cột Invoicetotal chỉ nhận giá trị luôn lớn hơn hoặc 
bằng 0. Khi giá trị <0 được nhập vào một ô trong cột, hệ thống sẽ đưa ra thông 
báo lỗi. 
- Điều kiện 2 thứ 2 cho cột PaymentTotal cúng giống như điều kiện 1. 
Ví dụ dưới là câu lệnh tạo bảng Invoices2 (các cột giống invoice1) với hai điều 
kiện check được định nghĩa ở ràng buộc mức bảng. 
6 
- Trên cùng là cú pháp chung của ràng buộc CHECK. Tham số của ràng buộc 
CHECK là một biểu thức điều kiện (chỉ trả 1 trong 2 giá trị TRUE hoặc 
FALSE. 
- Bên dưới là ví dụ định nghĩa bảng Invoices3 với điều kiện CHECK ở mức 
cột InvoiceToTal (chỉ nhận giá trị lớn hơn 0). Sau đó là câu lệnh chèn một 
dòng vào bảng Invoices3 với giá của cột InvoiceTotal là -100. Khi chạy câu 
lệnh Insert này, hệ thống sẽ có thông báo lỗi tiếng Anh như cuối cùng slide, 
thông báo lỗi có ý nghĩa như sau: 
Câu lệnh INSERT xung đột với ràng buộc có tên 
”CK__Invoices3__Invoi__0BC6C43E”. Xung đột này xảy ra trong CSDL 
“New__AP”, bảng “dbo.Invoices3”, cột „InvoiceTotal. 
Câu lệnh đã bị hủy. 
7 
Ví dụ về ràng buộc mức bảng trong định nghĩa cột Vendor1: cột VendorCode 
chỉ nhận các giá trị có định dạng hai kí tự đầu tiên là chữ cái và bốn kí tự sau 
là chữ số, Ngoài ra, hai kí tự đầu tiên bên trái của cột VendorCode phải bằng 
hai kí tự đầu tiên của cột VendorName. 
Phía dưới là ví dụ câu lệnh Insert một dòng vào trong bảng Vendor1 và thông 
báo lỗi của hệ thống. 
8 
Trên slide là cú pháp chung của ràng buộc tham chiếu (ràng buộc khóa ngoài). 
9 
Ví dụ về ràng buộc thm chiếu mức cột: 
- Bên trên câu lệnh tạo bảng Vendor9 
- Bên dưới là câu lệnh định nghĩa tạo bảng Invoices9 với ràng buộc tham 
chiếu mức cột là giá trị cột VendorID sẽ tham chiếu giá trị của cột khóa 
chính VendorID trong bảng Vendor9. Nghĩa là khi đó mọi giá trị ở cột 
VendorID của bảng Invoices9 phải là giá trị đã tồn tại bên cột VendorID ở 
bảng Vendors9 hoặc là giá trị null. 
- Bảng Vendors9 được gọi là bảng chứa khóa chính (primary key), bảng 
Invoices9 được gọi là bảng chứa khóa ngoài. 
10 
Trên slide là ví dụ một câu lệnh Insert một dòng vào bảng Invoices9 với giá trị 
cột VendorID = 100. Tuy nhiên, vì lúc này trong bảng Vendors9 chưa có dữ 
liệu (chưa có dòng nào) nên VendorID =100 chưa tồn tại bên bảng này nên 
ràng buộc thm chiếu bị vi phạm. Hệ thống sẽ đưa ra thông báo lỗi tiếng Anh có 
nghĩa như sau: 
Câu lệnh INSERT xung đột với ràng buộc 
“FK__Invoices9__Vendo_1367E606”. Ràng buộc xẩy ra reonf CSDL 
“New_AP”, bảng “dbo.Vendors9”, cột „VendorID‟. 
Câu lệnh đã bị hủy. 
11 
Khi muốn thêm một ràng buộc đã vào một bảng đã tạo rồi thì chúng ta có thể 
dùng câu lệnh ALTER TABLE. Trên slide là cú pháp chung của câu lệnh 
ALTER TABLE. 
12 
Bên trên là ví dụ thêm ràng buộc CHECK cho cột InvoiceTotal của bảng 
Invoice (bảng này đã được tạo trong CSDL). 
Bên dưới là ví dụ thêm một ràng buộc tham chiếu cho cột AccountNo của 
bảng InvoiceLineItems tham chiếu đến giá trị cột khóa chính AccountNo của 
bảng GLAccountNo. 
13 
Khi xóa một bảng khỏi CSDL (dùng câu lệnh DROP TABLE): 
- Không thể xóa bảng có khóa chính bị tham chiếu bởi một cột khóa ngoài 
của bảng khác. Ví dụ, không thể xóa bảng Vendors9 nếu như cột VendorID 
ở bảng Invoices9 tham chiếu giá trị đến cột khóa chính VendorID của bảng 
này. 
- Tất cả dữ liệu, chỉ mục và ràng buộc sẽ bị xóa. Bảng ảo hoặc thủ tục liên 
quan đến bảng bị xóa phải xóa tường minh. 
14 
Từ slide 15 đến slide 18 là script chứa các câu lệnh tạo các bảng trong CSDL 
COMPANY và cùng với các ràng buộc. 
15 
16 
17 
18 
19 

File đính kèm:

  • pdfbai_giang_microsoft_sql_server_bai_9_cac_rang_buoc_cho_bang.pdf