Constraint trong SQL là một quy tắc được áp dụng cho các cột trong bảng để giới hạn dữ liệu được chèn, cập nhật hoặc xóa. Chúng được sử dụng để đảm bảo tính nhất quán và tính toàn vẹn của dữ liệu trong cơ sở dữ liệu. Nhờ các constraint, chúng ta có thể xây dựng một cơ sở dữ liệu ổn định và đáng tin cậy. Trong bài viết này, chúng ta sẽ cùng tìm hiểu về ràng buộc trong SQL và cách sử dụng hiệu quả từng ràng buộc. Show
1. Ràng buộc(Constraint) trong SQL là gìRàng buộc(constraint) trong SQL là các quy tắc được áp dụng trên các dữ liệu của bảng. Chúng được sử dụng để kiểm tra tính hợp lệ của dữ liệu đầu vào, tính chính xác và toàn vẹn của dữ liệu. 2. Các loại Constraint phổ biến
6: Constraint này cho biết rằng chúng ta không thể lưu một giá trị
7 cho cột đã được gán ràng buộc này. Điều đó có nghĩa là, nếu một cột được định nghĩa là
6, cột đó sẽ không thể chấp nhận các giá trị
7 được nữa.
0: Sử dụng khi chúng ta muốn định nghĩa cho một cột phải có giá trị của nó là duy nhất, nếu một bản ghi đã có giá trị này trong cột của nó thì giá trị đó sẽ không được sử dụng để điền cho bản ghi nào khác trong cơ sở dữ liệu.
1: Một primary key(khóa chính) một hoặc một tập các trường có giá trị là duy nhất, có thể được sử dụng để phân biệt giữa các bản ghi với nhau. Việc khai báo các cột khóa chính yêu cầu các cột phải
6.
3: Dùng để thiết lập khóa ngoại trên bảng, tham chiếu đến bảng khác thông qua giá trị của cột được liên kết. Giá trị của cột được liên kết phải là duy nhất trong bảng kia.
4: Giúp kiểm tra tính hợp lệ của đầu vào dữ liệu, điều này đảm bảo tất cả giá trị trong cột đảm bảo một điều kiện nào đó.
5: Ràng buộc này định nghĩa một giá trị mặc định cho một cột dữ liệu khi nó không được điền một giá trị cụ thể bởi người dùng 3. Định nghĩa một ràng buộc như thế nào?Chúng ta có thể thêm một ràng buộc tại thời điểm tạo bảng bằng câu lệnh
6. Chúng ta cũng có thể định nghĩa các ràng buộc sau khi đã tạo bảng bằng cách sử dụng câu lệnh
7. Cú pháp thực hiện: Dưới đây là cú pháp để thực hiện tạo các ràng buộc sử dụng lệnh
6.
9: Tên của bảng cần tạo.
0: Kiểu dữ liệu cần được lưu vào trường.
1: Tên của ràng buộc, ví dụ như: NOT NULL, UNIQUE, PRIMARY KEY etc. \>>> Xem thêm bài viết: - Khai báo và sử dụng mảng các đối tượng trong Java - Phân biệt ArrayList, Set và Vector trong Java - Lập trình đa luồng là gì? Hướng dẫn lập trình đa luồng bằng ngôn ngữ Java 4. Tiếp theo chúng ta sẽ tìm hiểu chi tiết về từng ràng buộc4.1. NOT NULLNếu ràng buộc này được sử dụng, có nghĩa là một trường dữ liệu sẽ không nhận NULL làm giá trị của nó. Bạn cũng sẽ không thể điền thêm một bản ghi vào cơ sở dữ liệu mà không điền dữ liệu cho cột đã được định nghĩa là NOT NULL. Trong ví dụ dưới đây, câu truy vấn(
3 và
4 có ràng buộc NOT NULL. Theo đó, khi chúng ta thêm bản ghi, chúng ta cần đảm bảo hai trường này phải có dữ liệu, nếu không nó sẽ báo lỗi và chúng ta sẽ không được phép thêm bản ghi.
Sử dụng ALTER TABLE để thêm ràng buộc
4.2. UNIQUERàng buộc này giúp thực hiện việc phân biệt các bản ghi trong một bảng, cụ thể là với một cột nào đó thì các bản ghi trong bảng phải có giá trị cột này khác nhau. Chúng ta có thể thực hiện định nghĩa ràng buộc này trên nhiều cột của một bảng Chúng ta có thể thêm ràng buộc này khi tạo bảng
Hoặc thêm ràng buộc sau khi đã tạo bảng
4.3. PRIMARY KEYKhóa chính là một hoặc nhiều trường thực hiện nhiệm vụ phân biệt các bản ghi trong một bảng. Nếu một trường trong bảng được định nghĩa là primary key thì trường này sẽ không nhận vào giá trị NULL và toàn bộ các dòng sẽ cần trường này có giá trị riêng biệt. Điều này có nghĩa là, khóa chính là kết hợp của hai ràng buộc
6 và
0. Khai báo trực tiếp PRIMARY KEY:
Định nghĩa ràng buộc:
Sửa đổi PRIMARY KEY với ALTER TABLE
4.4. FOREIGN KEYForeign key hay khóa ngoài là một trường trong bảng được sử dụng để phân biệt với các dòng của một bảng khác. Điều này có nghĩa là, trường này trỏ tới khóa chính của bảng khác. Việc này thường xuyên tạo một liên kết giữa các bảng với nhau. Chúng ta hãy cùng đánh giá hai bảng dưới đây Orders O_IDORDER_NOC_ID122533233253345212485321 Customers C_IDNAMEADDRESS1RAMESHDELHI2SURESHNOIDA3DHARMESHGURGAON Chúng ta có thể thấy được trường
7 trong bảng
8 là khóa chính của bảng
9, nó sẽ thực định danh cho các cột của bảng Customers. Từ đó, chúng ta có thể tạo một khóa phụ cho bảng Orders như sau:
4.5. CHECKRàng buộc này được sử dụng để đảm bảo đầu vào dữ liệu của một trường thỏa mãn một điều kiện nào đó. Ở đây chúng ta có thể tham khảo một vài ví dụ sau: Tạo ràng buộc check trường age > 18, khi tạo bảng
Sử dụng
7 để thêm ràng buộc sau khi đã tạo bảng
0 4.6. DEFAULTRàng buộc này được sử dụng để cung cấp một giá trị mặc định cho trường trong bảng. Điều đó có nghĩa là, tại thời điểm thêm bản ghi mới vào bảng, nếu người dùng không điền giá trị cho các trường hay thì giá trị mặc định sẽ được gán cho các trường này của bản ghi. Ví dụ dưới đây, chúng ta định nghĩa trường
1 của bảng STUDENT sẽ có giá trị mặc định là 18
1 Chúng ta cũng có thể thêm ràng buộc sau khi đã tạo bảng bằng lệnh sau:
2 4.7. Xóa bỏ, kích hoạt hoặc bỏ kích hoạt một ràng buộcCú pháp xóa bỏ:
3 Khi không muốn kiểm tra một ràng buộc nữa, chúng ta có thể sử dụng cú pháp:
4 Tái kích hoạt ràng buộc bằng cú pháp:
5 Kết luậnTrên đây là những gì Stringee tổng hợp và tự đưa ra ví dụ minh họa cho từng phần. Hi vọng sẽ giúp ích cho các bạn trong quá trình sử dụng constraint trong câu lệnh SQL. Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm. Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy, Adavigo, bTaskee… |