Thiết lập ràng buộc trong sql server (Bài 2)

Thiết lập ràng buộc trong sql server là thao tác thiết lập những qui định khi thêm mới hay thay đổi dữ liệu. Xét ví dụ thêm mới hoặc thay đổi dữ liệu cột giới tính của bảng SinhVien, chúng ta chỉ được nhập dữ liệu hoặc là Nam hoặc là Nữ, …

Thiết lập ràng buộc trong sql server

Thiết lập ràng buộc trong sql server – Các loại ràng buộc dữ liệu

Ràng buộc khoá chính (primary key constraint) có thể được thiết lập trong quá trình tạo bảng. Tuy nhiên, chúng ta có thể thiết lập ràng buộc này sau khi đã tạo xong bảng với cú pháp sau

alter table tên_bảng add constraint tên_constraint primary key(tên_cột)

Ví dụ thiết lập khoá chính cho bảng Lop là cột MaLop

alter table Lop add constraint Lop_MaLop_PK primary key(MaLop)

Ràng buộc khoá ngoại (foreign key constraint) cũng có thể được thiết trong quá trình tạo bảng. Nếu trong khi tạo bảng chúng ta chưa thiết lập ràng buộc này thì hãy sử dụng cú pháp sau

alter table tên_bảng add constraint tên_constraint
foreign key (tên_cột) references tên_bảng_tham_chiếu

Ví dụ thiết lập khoá ngoại cho bảng SinhVien là cột MaLop

alter table SinhVien add constraint SinhVien_MaLop_FK
foreign key (MaLop) references Lop

Ràng buộc dữ liệu duy nhất (Unique constraint) không cho phép dữ liệu bị trùng lặp. Ràng buộc này được sử dụng để thiết lập cho những cột mà dữ liệu nếu được nhập thì không được trùng lặp. Tuy nhiên đối với những cột này, chúng ta có thể không chỉ định dữ liệu (null). Đây chính là điểm khác biệt giữa primary key và unique.

alter table tên_bảng add constraint tên_constraint unique(tên_cột)

Ví dụ thiết lập ràng buộc dữ liệu duy nhất cho cột TenLop của bảng Lop

alter table Lop add constraint Lop_TenLop_U unique(TenLop)

Ràng buộc check (Check constraint) qui định dữ liệu được thêm mới hoặc thay đổi phải thoả điều kiện được chỉ định trong lúc thiết lập.

alter table tên_bảng add constraint tên_constraint check(điều_kiện)

Ví dụ thiết lập ràng buộc check cho cột GioiTinh của bảng SinhVien chỉ được phép nhập dữ liệu là Nam hoặc Nữ

alter table SinhVien add constraint SinhVien_GioiTinh_C check(GioiTinh = N'Nam' or GioiTinh = N'Nữ')

Ràng buộc dữ liệu mặc định (Default constraint) sẽ chỉ định dữ liệu mặc định cho những cột khi thêm mới bị bỏ qua

alter table tên_bảng add constraint tên_constraint default giá_trị for tên_cột

Ví dụ thiết lập ràng buộc dữ liệu mặc định cho cột NgaySinh là ngày hiện hành của bảng SinhVien. Sử dụng hàm getdate() để lấy ngày hiện hành của máy chủ.

alter table SinhVien add constraint SinhVien_NgaySinh_D default getdate() for NgaySinh

Tổng kết bài thiết lập ràng buộc trong sql server

  • Ràng buộc khoá chính
  • Ràng buộc khoá ngoại
  • Ràng buộc dữ liệu duy nhất
  • Ràng buộc check
  • Ràng buộc dữ liệu mặc định

Bài tập thực hành thiết lập ràng buộc trong sql server

Câu 1: Tạo các ràng buộc cho bảng VATTU

  • Tên vật tư phải duy nhất
  • 0 <= PhanTram <= 100
  • Giá trị mặc định cho cột đơn vị tính là ‘Tấn’

Câu 2: Tạo các ràng buộc cho bảng NHACC

  • Tên nhà cung cấp và địa chỉ nhà cung cấp phải duy nhất
  • Giá trị mặc định cho cột điện thoại là ‘Chưa có’

Câu 3: Tạo các ràng buộc cho bảng DONDH:

  • Giá trị mặc định cho cột ngày đặt hàng là ngày hiện hành

Câu 4: Tạo các ràng buộc cho bảng CTDONDH

  • Giá trị cho cột là SLDat > 0

Câu 5: Tạo các ràng buộc cho bảng CTPNHAP

  • Giá trị cho cột SLNhap > 0  và DGNhap > 0

Câu 6: Tạo các ràng buộc cho bảng CTPXUAT

  • Giá trị cho cột SLXuat > 0 và DGXuat > 0

Câu 7: Tạo các ràng buộc cho bảng TONKHO

  • SLDau >= 0
  • TongSLN >= 0
  • TongSLX >= 0
  • Giá trị mặc định cho các cột SLDau, TongSLN, TongSLX là 0

Trả lời