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.

pdf19 trang | Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 238 | Lượt tải: 0download
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:

  • pdfbai_giang_microsoft_sql_server_bai_9_cac_rang_buoc_cho_bang.pdf