CONSTRAINT là một trong những quy tắc áp dụng trong SQL Server. Có tương đối nhiều loại CONSTRAINT khác nhau. Cùng tôi tò mò kỹ rộng nhé.
Bạn đang xem: Constraint (ràng buộc) trong sql server
Constraint được thực hiện để bảo đảm an toàn các điều kiện đầu vào đúng, đảm bảo an toàn sự chính xác và sự toàn vẹn của dữ liệu.
Thông thường sẽ sở hữu 6 nhiều loại ràng buộc vào SQL Server. Mỗi nhiều loại này đầy đủ là phần nhiều quy tắc được áp dụng trên những cột dữ liệu
Loại ràng buộc | Ý nghĩa |
NOT NULL | Khi muốn dữ liệu không nhận cực hiếm NULL vào cột dữ liệu. |
DEFAULT | Nếu những dữ liệu của cột không xác định hoặc ko nhập sẽ được gán cho những giá trị mặc định trước đó đã setting. |
UNIQUE | Đảm bảo dữ liệu không xẩy ra lặp lại với các dữ liệu khác. |
PRIMARY KEY (Khóa chính) | Sử dụng thiết đặt khóa thiết yếu trong bảng, xác định các dữ liệu phải là độc nhất (không trùng lặp) trên những cột được gán lệnh. Việc khai báo yêu thương cầu những cột cần NOT NULL. |
FOREIGN KEY (Khóa ngoại) | Mỗi hàng/bản ghi được trao diện duy nhất trong ngẫu nhiên bảng nào. Xem thêm: Những Bài Hát Hay Nhất Của Hồ Hoàng Yến, Ca Sĩ Hồ Hoàng Yến |
CHECK | Đảm bảo những dữ liệu vào cột phải thỏa mãn nhu cầu điều kiện mà bạn đã gán. |
INDEX | Lấy dữ liệu từ Database nhanh nhất |
Những lệnh buộc ràng này hoàn toàn có thể được khẳng định khi sản xuất một bảng do CREATE TABLE hoặc ALTER TABLE giúp đỡ bạn tạo ra các ràng buộc trước lúc tạo bảng.
Thuật toán cai quản Vay có thế chấp vay vốn tài sản dễ dàng và đơn giản thể hiện qua sơ đồ gia dụng như sau:
Nếu tạo bắt đầu bảng:
CREATE TABLE KhachHang (
MaKH char(10) NOT NULL,
HoTen nvarchar(50),
DiaChi nvarchar(50),
DienThoai varchar(50),
NgaySinh date
);
Nếu sửa bảng:
ALTER TABLE KhachHang MODIFY MaKH char(10) NOT NULL;
Sử dụng lệnh DEFAULTCột NgayVay lấy cực hiếm mặc định là ngày hiện tại nếu ngày vay cấp thiết xác định. Thực hiện function GETDATE() để mang giá trị ngày hiện tại tại.
Nếu tạo new bảng:
CREATE TABLE vay mượn (
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
);
Nếu sửa bảng
ALTER TABLE Vay
ADD CONSTRAINT df_ngay_vay mặc định GETDATE() FOR NgayVay;
Sử dụng lệnh PRIMARY KEY (khóa chính)Nếu bạn áp dụng lệnh này cho MaTaiSan trong bảng MATAISAN
Tạo mới bảng:
Cách 1: Không khai báo Constraint
CREATE TABLE TaiSan (
MaTaiSan char(10) PRIMARY KEY,
TenTaiSan nvarchar(70) NOT NULL,
LoaiTaiSan nvarchar(30),
GiaTri money
);
Cách 2: Khai báo Constraint
CREATE TABLE TaiSan (
MaTaiSan char(10) NOT NULL,
CONSTRAINT pk_ma_ts PRIMARY KEY (MaTaiSan),
TenTaiSan nvarchar(70) NOT NULL,
LoaiTaiSan nvarchar(30),
GiaTri money
);
Sửa đổi bảng:
ALTER TABLE TaiSan
ADD CONSTRAINT pk_mats PRIMARY KEY (MaTaiSan);
Sử dụng FOREIGN KEY (khóa ngoại)Lệnh ràng buộc lấy một ví dụ được thực hiện trên bảng VAY mang đến cột MaKH
Tạo new bảng
Cách 1: ko khai báo Constraint
CREATE TABLE vay mượn (
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
);
Cách 2: Khai báo constraint
CREATE TABLE vay (
MaVay char(10) NOT NULL,
MaKH char(10),
CONSTRAINT FOREIGN KEY (MaKH) REFERENCES KhachHang(MaKH),
MaTaiSan char(10),
MaNV char(10),
NgayVay date,
ThoiHan int,
LaiSuat float,
SoTienVay money,
NgayHetHan date
);
Sửa thay đổi bảng
ALTER TABLE Vay
ADD CONSTRAINT fk_makh FOREIGN KEY (MaKH) REFERENCES KhachHang(MaKH);
Sử dụng lệnh UNIQUEÁp dụng trong bảng KhachHang đến trường DienThoai
Tạo bắt đầu bảng
Cách 1:
CREATE TABLE KhachHang (
MaKH char(10) NOT NULL,
HoTen nvarchar(50) NOT NULL,
DiaChi nvarchar(50) NOT NULL,
DienThoai varchar(50) UNIQUE,
NgaySinh date
);
Cách 2:
CREATE TABLE KhachHang (
MaKH char(10) NOT NULL,
HoTen nvarchar(50) NOT NULL,
DiaChi nvarchar(50) NOT NULL,
DienThoai varchar(50),
CONSTRAINT unique_dien_thoai quality (DienThoai)
NgaySinh date
);
Sửa đổi bảng:
ALTER TABLE KhachHang
ADD CONSTRAINT unique_dien_thoai quality (DienThoai);
Sử dụng lệnh kiểm tra constraint trong sqlALTER TABLE NhanVien
ADD CONSTRAINT check_ngay_vao_lam check (NgayVaoLam > ‘1997-1-1’);
Tao Constraint kiểm tra trên trường NgayHetHan phải to hơn NgayVay của bảng Vay
ALTER TABLE Vay
ADD CONSTRAINT check_ngayhethan check (NgayHetHan > NgayVay);
Tao Constraint chất vấn trên trường GiaTri>=2 của bảng TaiSan
ALTER TABLE TaiSan
ADD CONSTRAINT check_gia_tri kiểm tra (GiaTri > 2);
Tao Constraint kiểm tra trên trường ThoiHan khoảng 1 cho 12 mon của bảng Vay
ALTER TABLE Vay
ADD CONSTRAINT check_thoi_han check (ThoiHan BETWEEN 1 và 12);
Lệnh xóa bỏ
ALTER TABLE
DROP CONSTRAINT
Ví dụ: xóa bỏ kiểm tra trên trường ThoiHan tự 1-12 tháng gán ngơi nghỉ trên
ALTER TABLE Vay
DROP CONSTRAINT check_thoi_han check (ThoiHan BETWEEN 1 & 12);
Đôi khi chúng ta không ước ao lệnh CONSTRAINT chuyển động nhưng lại không muốn xóa chúng. Đừng lo ngại vì đã gồm lệnh quăng quật và kích hoạt lại lệnh.
Câu lệnh là:
ALTER TABLE
NOCHECK CONSTRAINT
Ví dụ: loại bỏ hóa Constraint kiểm tra trên trường NgayHetHan phải lớn hơn NgayVay của bảng Vay
ALTER TABLE Vay
NOCHECK CONSTRAINT check_ngayhethan check (NgayHetHan > NgayVay);
Trường hợp mong mỏi kích hoạt lại ràng buộc, bạn sử dụng lệnh sau:
ALTER TABLE
WITH check CHECK CONSTRAINT
Ví dụ: Kích hoạt lại lấy ví dụ trên
ALTER TABLE Vay
WITH kiểm tra CHECK CONSTRAINT check_ngayhethan check (NgayHetHan > NgayVay);
Integrity constraint (ràng buộc toàn vẹn) nên làm sử dụng khi bạn có nhu cầu đảm bảo 100% sự đúng đắn và tính đồng nhất trong những dữ liệu của cửa hàng dữ liệu.
Integrity constraint được sử dụng trải qua khái niệm toàn vẹn tham chiếu (referential integrity – RI)
Như vậy là tôi đã hướng dẫn các bạn add constraint vào sql. Khá đơn giản và dễ dàng thôi, nhưng chúng ta cần nỗ lực thực hiện nay mỗi ngày. Đón chờ các nội dung bài viết tiếp theo của mình nữa nhé.