SQL - Các ràng buộc nên biết (Constraints)

Blog / Tin công nghệ 21/12/2023
sql-cac-rang-buoc-nen-biet-constraints
Phụ lục

Trong khi thiết lập DB thì cần phải có các quy tắc để đảm bảo được lượng dữ liệu sẽ được chứa trong DB, bài hôm nay chúng ta cùng tìm hiểu các quy tắc này dựa qua các ràng buộc (constraints).

Vai trò của các ràng buộc (constraints) trong SQL

Các ràng buộc (constraints) thường được sử dụng như là quy tắc cho các dữ liệu ở table.

Ràng buộc dùng để giới hạn các dữ liệu đến table. Đảm bảo tính chính xác và rõ ràng của dữ liệu. Nếu có bất kì sự vi phạm nguyên tắc đến các ràng buộc thì thao tác đó sẽ bị huỷ.

Các loại ràng buộc (constraints) trong SQL

Ở SQL, bao gồm các loại ràng buộc chung sau đây:

  1. NOT NULL
  2. UNIQUE
  3. PRIMARY KEY
  4. FOREIGN KEY
  5. CHECK
  6. DEFAULT

Cú pháp chung:

CREATE TABLE table_name (

column1 datatype constraint,

column2 datatype constraint,

column3 datatype constraint,

constraint

....

);

Hướng dẫn sử dụng các ràng buộc (constraints)

NOT NULL

Ý nghĩa

Mặc định, các cột sẽ có giá trị là NULL.

Khi định nghĩa cột là NOT NULL, thì sẽ bảo đảm người dùng không nhập được giá trị NULL đến cột, tức là cột phải có giá trị rõ ràng.

Ví dụ

CREATE TABLE doctor (

    doctor_id INT,

    first_name VARCHAR(10) NOT NULL,

    middle_name VARCHAR(10)

);

Với ví dụ trên, bạn hãy thử INSERT hay UPDATE một record ở doctor với giá trị ở cột first_name là NULL, thì sẽ bị lỗi và không thể thực hiện các thao tác đó.

UNIQUE

Ý nghĩa

Ràng buộc UNIQUE sẽ đảm bảo giá trị các cột luôn khác nhau.

Với PRIMARY KEY thì cũng đảm bảo việc này, với PRIMARY KEY thì các column mặc định sẽ là khác nhau mà không cần phải khai báo.

Sử dụng UNIQUE sẽ áp dụng nhiều lần ở một table, nhưng với PRIMARY KEY thì không.

Ví dụ

CREATE TABLE doctor (

    doctor_id INT,

    first_name VARCHAR(10),

    middle_name VARCHAR(10),

    id_card VARCHAR(15),

    UNIQUE (id_card)

);

Từ đó, đảm bảo id_card (căn cước công dân) sẽ không bị trùng lặp giữa các bác sĩ.

PRIMARY KEY

Ý nghĩa

Đảm bảo tính duy nhất ở mỗi record trong table.

Với primary key, thì nó sẽ là UNIQUE và NOT NULL.

Mỗi table chỉ có một khoá chính, khoá chính có thể chứa 1 hoặc nhiều cột.

Ví dụ

CREATE TABLE doctor (

    doctor_id INT PRIMARY KEY,

    first_name VARCHAR(10),

    middle_name VARCHAR(10)

);

Hoặc có thể dùng cách 2 bên dưới.

CREATE TABLE doctor (

    doctor_id INT,

    first_name VARCHAR(10),

    middle_name VARCHAR(10),

   CONSTRAINT pk_doctor PRIMARY KEY (doctor_id)

);

Với cách 2 thì có thể tạo khoá chính với nhiều cột.

FOREIGN KEY

Ý nghĩa

Đảm bảo dữ liệu luôn được liên kết giữa 2 table, nếu khác thì quá trình INSERT, UPDATE sẽ bị huỷ.

FOREIGN KEY là một cột ở table, nó tham chiếu đến PRIMARY KEY ở table khác.

Ví dụ

CREATE TABLE specialization (

specialization_id INT PRIMARY KEY,

specialization_name VARCHAR(50)

);

CREATE TABLE doctor (

    doctor_id INT PRIMARY KEY,

    `first_name` VARCHAR (10),

    `middle_name` VARCHAR (10),

    `last_name` VARCHAR (10),

    date_of_birth DATE,

    qualification INT,

    specialization_id INT,

    FOREIGN KEY (specialization_id) REFERENCES specialization(specialization_id)

);

Với cột specialization_id (chuyên khoa) ở table doctor, thì giá trị sẽ chỉ thuộc ở table specialization, nếu cố tình nhập giá trị khác thì sẽ bị lỗi và thao tác bị huỷ bỏ.

CHECK

Ý nghĩa

Giới hạn phạm vi giá trị ở cột.

Hay nói cách khác, ràng buộc này sẽ giúp kiểm tra giá trị nhập vào phải khớp với điều kiện đã được khai báo với cột đó.

Ví dụ

CREATE TABLE doctor (

    doctor_id INT PRIMARY KEY,

    first_name VARCHAR(10),

    middle_name VARCHAR(10),

    qualification INT,

    CHECK (qualification >= 0)

);

Với cách khai báo như trên, thì số năm kinh nghiệm (qualification) của doctor phải lớn hơn hoặc bằng 0, nếu nhập số âm sẽ báo lỗi.

DEFAULT

Ý nghĩa

Dùng để gán giá trị mặc định đến một cột, trong trường hợp người dùng không nhập giá trị cho cột này.

Ví dụ

CREATE TABLE doctor (

    doctor_id INT PRIMARY KEY,

    first_name VARCHAR(10),

    middle_name VARCHAR(10),

    qualification INT DEFAULT 1

);

Nếu người dùng không nhập giá trị cho cột qualification, thì giá trị mặc định sẽ là 1.

Kết luận

Để giữ được dữ liệu luôn chuẩn xác, dễ thao tác và bảo trì trong tương lai, thì các ràng buộc (constraints) cũng là một yếu tố khá quan trọng.


Devwork

Devwork là Nền tảng TUYỂN DỤNG IT CẤP TỐC với mô hình kết nối Nhà tuyển dụng với mạng lưới hơn 30.000 headhunter tuyển dụng ở khắp mọi nơi.Với hơn 1800 doanh nghiệp IT tin dùng Devwork để :

  • Tối ưu chi phí
  • Tiết kiệm thời gian
  • Tăng tốc tuyển dụng tối đa
  • Đăng ký ngay Devwork trong hôm nay để tuyển dụng những tài năng ưu tú nhất.

    Tag Cloud:

    Tác giả: quyenntt

    Link chia sẻ

    Bình luận

    Bài viết liên quan

    Danh sách bài viết liên quan có thể bạn sẽ thích Xem thêm
    tim-hieu-url-la-gi

    URL là gì? Tìm hiểu ý nghĩa và cách tối ưu URL chuẩn SEO

    06:48 22/12/2025

    Bạn có bao giờ tự hỏi làm thế nào mà trình duyệt web lại tìm thấy chính xác trang web bạn muốn truy cập giữa hàng tỷ website ngoài kia không? Câu trả lời nằm ở một chuỗi ký tự tưởng chừng đơn giản nhưng cực kỳ quan trọng - URL. Vậy URL là gì, vai trò và cấu tạo như thế nào? Nếu bạn là người làm việc trong lĩnh vực IT, phát triển web, hoặc đơn giản là một người dùng muốn hiểu rõ hơn về cách thức vận hành của mạng lưới toàn cầu, bài viết này chính là dành cho bạn...

    Hosting là gì? Giải mã về hosting và cách hoạt động

    07:08 18/12/2025

    Khi bắt đầu xây dựng website, chắc hẳn bạn đã nghe đến khái niệm hosting hàng chục lần. Nhưng hosting là gì, nó có vai trò ra sao trong việc vận hành website và làm sao để chọn được dịch vụ phù hợp? Bài viết này, Devwork sẽ giúp bạn giải mã mọi thắc mắc từ cơ bản đến chuyên sâu về thế giới Web Hosting, từ khái niệm, các loại hình phổ biến cho đến cách thức chúng hoạt động, đảm bảo bạn sẽ có cái nhìn toàn diện nhất!

    hosting-la-gi

    Lương gross là gì? Cách quy đổi lương gross sang net dễ hiểu nhất

    07:48 12/12/2025

    Khi phỏng vấn hoặc đọc hợp đồng lao động, lương gross là cụm từ xuất hiện gần như 100%. Nhưng lương gross là gì mà lại quan trọng đến vậy? Nếu bạn đang bối rối chưa biết lương gross là gì và lương net là gì thì bài viết này Devwork sẽ giúp bạn hiểu tường tận từ khái niệm, cách tính cho đến cách quy đổi đơn giản nhất.

    luong-gross-la-gi

    Cách đặt mật khẩu máy tính đơn giản, bảo mật tuyệt đối 2026

    07:34 12/12/2025

    Chiếc máy tính, dù là PC hay laptop không chỉ là công cụ làm việc mà còn là "ngân hàng" lưu trữ vô số dữ liệu quan trọng: tài liệu cá nhân, thông tin ngân hàng, hình ảnh riêng tư... Nếu một ngày, những thông tin này rơi vào tay kẻ xấu, hậu quả sẽ thế nào? Chỉ với vài bước đơn giản, bạn có thể bảo vệ máy tính an toàn tuyệt đối bằng cách đặt mật khẩu máy tính. Bài viết này Devwork sẽ hướng dẫn chi tiết từ A-Z, phù hợp cho cả người dùng laptop và PC, giúp bạn tự làm được ngay lần đầu tiên.

    cach-dat-mat-khau-may-tinh
    intern-la-gi

    Intern là gì? Toàn bộ những điều bạn cần biết về vị trí Intern

    09:39 02/12/2025

    Với sự gia tăng mạnh mẽ của nhu cầu tuyển dụng thực tập sinh tại các doanh nghiệp, khái niệm intern và internship ngày càng trở nên quen thuộc, đặc biệt với sinh viên năm cuối, người mới ra trường. Tuy nhiên, không ít bạn trẻ vẫn còn băn khoăn intern là gì, làm intern là làm gì, hay công việc intern có gì khác với fresher. Trong bài viết này, Devwork.vn sẽ giúp bạn hiểu rõ hơn về vị trí intern, đồng thời chia sẻ những cơ hội thực tập hấp dẫn dành cho người mới bắt đầu.

    case-study-la-gi

    Case study là gì? Phương pháp phân tích case study hiệu quả

    04:07 25/11/2025

    Case study không phải cụm từ xa lạ trong marketing, kinh doanh hay học tập. Nhưng làm sao để tiếp cận và giải case study hiệu quả thì không phải ai cũng biết và làm được. Chính vì vậy, trong bài viết hôm nay, cùng Devwork đi tìm hiểu chi tiết về case study là gì, khám phá bí mật đằng sau các case study thành công, từ đó giúp bạn có cái nhìn toàn diện nhất để áp dụng vào công việc hoặc doanh nghiệp của mình.