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.
19 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 323 | Lượt tải: 0
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, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trê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
Các file đính kèm theo tài liệu này:
- bai_giang_microsoft_sql_server_bai_9_cac_rang_buoc_cho_bang.pdf