Xem thêm

Ràng buộc trong SQL Server: Hướng dẫn và các ví dụ

Huy Erick
Giới thiệu Trong SQL Server, ràng buộc (constraint) là một trong những quy tắc quan trọng để đảm bảo tính chính xác và toàn vẹn của dữ liệu. Trong bài viết này, chúng ta sẽ...

Giới thiệu

Trong SQL Server, ràng buộc (constraint) là một trong những quy tắc quan trọng để đảm bảo tính chính xác và toàn vẹn của dữ liệu. Trong bài viết này, chúng ta sẽ tìm hiểu về các loại ràng buộc và cách sử dụng chúng.

Ràng buộc trong SQL là gì?

Ràng buộc được sử dụng để đảm bảo tính đúng đắn và toàn vẹn của dữ liệu. Thông thường, có 6 loại ràng buộc được sử dụng trong SQL Server, mỗi loại đều áp dụng trên các cột dữ liệu.

Các loại ràng buộc có sẵn trong SQL Server

Có 6 loại ràng buộc trong SQL Server:

1. NOT NULL

Ràng buộc NOT NULL được sử dụng khi muốn đảm bảo rằng cột dữ liệu không được chứa giá trị NULL.

2. DEFAULT

Ràng buộc DEFAULT được sử dụng để gán giá trị mặc định cho cột dữ liệu nếu không có giá trị nào được nhập.

3. UNIQUE

Ràng buộc UNIQUE đảm bảo rằng dữ liệu trong cột không bị trùng lặp với các giá trị khác.

4. PRIMARY KEY (Khóa chính)

Ràng buộc PRIMARY KEY được sử dụng để xác định cột hoặc nhóm cột là khóa chính, đảm bảo tính duy nhất và không trùng lặp.

5. FOREIGN KEY (Khóa ngoại)

Ràng buộc FOREIGN KEY được sử dụng để thiết lập mối quan hệ giữa hai bảng thông qua cột chung, đảm bảo tính toàn vẹn dữ liệu.

6. CHECK

Ràng buộc CHECK được sử dụng để kiểm tra xem dữ liệu trong cột có đáp ứng các điều kiện đã định nghĩa hay không.

Ví dụ cụ thể

Để hiểu rõ hơn về cách sử dụng ràng buộc trong SQL Server, hãy xem các ví dụ sau:

1. Thiết lập ràng buộc NOT NULL trên cột MaKH trong bảng KHACHHANG

CREATE TABLE KhachHang (
    MaKH char(10) NOT NULL,
    HoTen nvarchar(50),
    DiaChi nvarchar(50),
    DienThoai varchar(50),
    NgaySinh date
);

2. Sử dụng ràng buộc DEFAULT

Ví dụ: Cột NgayVay lấy giá trị mặc định là ngày hiện tại nếu không có giá trị nào được xác định.

CREATE TABLE Vay (
    MaVay char(10) NOT NULL,
    MaKH char(10) NOT NULL,
    MaTaiSan char(10) NOT NULL,
    MaNV char(10) NOT NULL,
    NgayVay date DEFAULT GETDATE(),
    ThoiHan int,
    LaiSuat float,
    SoTienVay money,
    NgayHetHan date
);

3. Sử dụng ràng buộc PRIMARY KEY (khóa chính)

Ví dụ: Sử dụng ràng buộc PRIMARY KEY cho cột MaTaiSan trong bảng MATAISAN.

CREATE TABLE TaiSan (
    MaTaiSan char(10) PRIMARY KEY,
    TenTaiSan nvarchar(70) NOT NULL,
    LoaiTaiSan nvarchar(30),
    GiaTri money
);

4. Sử dụng ràng buộc FOREIGN KEY (khóa ngoại)

Ví dụ: Sử dụng ràng buộc FOREIGN KEY cho cột MaKH trong bảng VAY để tham chiếu tới cột MaKH trong bảng KHACHHANG.

CREATE TABLE Vay (
    MaVay char(10) NOT NULL,
    MaKH char(10) FOREIGN KEY REFERENCES KhachHang(MaKH),
    MaTaiSan char(10),
    MaNV char(10),
    NgayVay date,
    ThoiHan int,
    LaiSuat float,
    SoTienVay money,
    NgayHetHan date
);

5. Sử dụng ràng buộc UNIQUE

Ví dụ: Áp dụng ràng buộc UNIQUE cho cột DienThoai trong bảng KhachHang để đảm bảo tính duy nhất.

CREATE TABLE KhachHang (
    MaKH char(10) NOT NULL,
    HoTen nvarchar(50) NOT NULL,
    DiaChi nvarchar(50) NOT NULL,
    DienThoai varchar(50) UNIQUE,
    NgaySinh date
);

6. Sử dụng ràng buộc CHECK

Ví dụ: Áp dụng ràng buộc CHECK để kiểm tra giá trị của các cột trong bảng.

ALTER TABLE NhanVien
ADD CONSTRAINT check_ngay_vao_lam CHECK (NgayVaoLam > '1997-1-1');

ALTER TABLE Vay
ADD CONSTRAINT check_ngayhethan CHECK (NgayHetHan > NgayVay);

ALTER TABLE TaiSan
ADD CONSTRAINT check_gia_tri CHECK (GiaTri >= 2);

ALTER TABLE Vay
ADD CONSTRAINT check_thoi_han CHECK (ThoiHan BETWEEN 1 AND 12);

Xóa ràng buộc trong SQL

Đôi khi chúng ta cần xóa ràng buộc đã được thiết lập. Dưới đây là cách xóa ràng buộc trong SQL Server:

ALTER TABLE 
DROP CONSTRAINT 

Ví dụ: Xóa ràng buộc check_thoi_han trên bảng Vay.

ALTER TABLE Vay
DROP CONSTRAINT check_thoi_han;

Bỏ kích hoạt và kích hoạt lại ràng buộc

Nếu muốn tạm thời vô hiệu hóa một ràng buộc nhưng không muốn xóa nó hoàn toàn, chúng ta có thể sử dụng các lệnh bỏ kích hoạt và kích hoạt lại ràng buộc:

ALTER TABLE 
NOCHECK CONSTRAINT 

Ví dụ: Vô hiệu hóa ràng buộc check_ngayhethan trên bảng Vay.

ALTER TABLE Vay
NOCHECK CONSTRAINT check_ngayhethan;

Để kích hoạt lại một ràng buộc đã vô hiệu hóa, chúng ta sử dụng lệnh sau:

ALTER TABLE 
WITH CHECK CHECK CONSTRAINT 

Ví dụ: Kích hoạt lại ràng buộc check_ngayhethan trên bảng Vay.

ALTER TABLE Vay
WITH CHECK CHECK CONSTRAINT check_ngayhethan;

Các yếu tố quan trọng và toàn vẹn

Trong SQL Server, việc sử dụng ràng buộc giúp đảm bảo tính chính xác và toàn vẹn của dữ liệu. Nó rất quan trọng đối với các cơ sở dữ liệu liên quan đến tài chính hoặc thông tin cá nhân. Vì vậy, hãy chắc chắn áp dụng ràng buộc vào cơ sở dữ liệu của bạn để đảm bảo tính toàn vẹn và đáng tin cậy.

Đó là những cách sử dụng ràng buộc trong SQL Server. Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về cách thực hiện ràng buộc trong SQL Server.

1