Các loại ràng buộc trong SQL Server

20/06/2016 Nguyễn Hồng Vân

Để hiểu hơn về SQL server chúng ta cần phải hiểu về các loại ràng buộc, vậy hãy cùng nhau tìm hiểu bài viết sau đây.

1. Ràng buộc CHECK

Ràng buộc CHECK được sử dụng nhằm chỉ định điều kiện hợp lệ đối với dữ liệu. Mỗi khi có sự thay đổi dữ liệu trên bảng (INSERT, UPDATE), những ràng buộc này sẽ  được sử dụng nhằm kiểm tra xem dữ liệu mới có hợp lệ hay không.

Ràng buộc CHECK được khai báo theo cú pháp như sau:

[CONSTRAINT tên_ràng_buộc] CHECK (điều_kiện) Ví dụ: create table students

( studentid int identity(1,1) primary key, studentname nvarchar(50) not null, address nvarchar(100) not null, score1 tinyint not null constraint chk_score1 CHECK (score1 >= 0 and score1 <= 10), score2 tinyint not null constraint chk_score2 CHECK (score2 between 0 and 10), score3 tinyint not null constraint chk_score3 CHECK (score3 in (1,2,3,4,5,6,7,8,9,10)),

)

Thực hiện việc thêm một dòng có dữ liệu không thỏa điều kiện insert into students

values('Nguyen Van Dung', '12 Tran Quang Khai', 10, 10, -2)

Có thể gộp chung các ràng buộc CHECK lại trong một ràng buộc duy nhất như sau create table students

( studentid int identity(1,1) primary key, studentname nvarchar(50) not null, address nvarchar(100) not null, score1 tinyint not null , score2 tinyint not null,

score3 tinyint not null, constraint chk_score  CHECK( ( score1>= 0 and score 1 <=10) and (score2 between 0 and 10) and (score3 in (1 ,2,3,4,5,6,7, 8,9,10)))

)

2. Ràng buộc PRIMARY KEY

Ràng buộc PRIMARY KEY được sử dụng để định nghĩa khoá chính của bảng. Khoá chính của một bảng là một hoặc một tập nhiều cột mà giá trị của chúng là duy nhất  trong bảng.  Hay  nói  cách  khác,  giá  trị  của  khoá  chính  sẽ  giúp  cho  ta  xác  định được duy nhất một dòng (bản ghi) trong bảng dữ liệu. Mỗi một bảng chỉ có thể có duy nhất  một  khoá  chính và  bản  thân  khoá  chính  không  chấp  nhận  giá  trị  NULL.  R àng buộc PRIMARY KEY là cơ sở cho việc đảm bảo tính toàn vẹn thực thể cũng như toàn vẹn tham chiếu.

Để khai báo một ràng buộc PRIMARY KEY, ta sử dụng cú pháp nh ư sau:

[CONSTRAINT tên_ràng_buộc] PRIMARY KEY [(danh_sách_cột)]

Nếu khoá chính của bảng chỉ bao gồm đúng một cột v à ràng buộc PRIMARY KEY được chỉ định ở mức cột, ta không cần thiết phải chỉ định danh sách cột sau từ khoá PRIMARY KEY. Tuy nhiên, nếu việc khai báo khoá chính được tiến hành ở mức bảng (sử dụng khi số lượng các cột tham gia vào khoá là từ hai trở lên) thì bắt buộc phải chỉ định danh sách cột ngay sau từ khóa PRIMARY KEY và tên các cột được phân cách nhau bởi dấu phẩy. Ví dụ 1: Định nghĩa một bảng chỉ có một khóa chính

create table customers

( customerid int identity(1,2) constraint chk_primarykey primary key, customername nvarchar(50) not null, address nvarchar(100) not null, gender bit not null

)

Hoặc là create table customers

( customerid int identity(1,2) primary key, customername nvarchar(50) not null, address nvarchar(100) not null, gender bit not null

)

Ví dụ 2: Định nghĩa bảng có hai khóa chính:

create table orderdetail

( customerid int, orderid int, itemid int not null, quantity decimal(8,2) not null, constraint chk_primarykey primary key (customerid, orderid)

)

3. Ràng buộc FOREIGN KEY

FOREIGN KEY là một cột hay một sự kết hợp của nhiều cột được sử dụng để áp đặt mối liên kết dữ liệu giữa hai table. FOREIGN KEY của một bảng sẽ giữ giá trị của PRIMARY KEY của một bảng khác và chúng ta có thể tạo ra nhiều FOREIGN KEY trong một table.

FOREIGN KEY có thể tham chiếu vào PRIMARY KEY hay cột có ràng buộc duy nhất.

FOREIGN KEY có thể chứa giá trị NULL. Mặc dù mục đích chính của ràng buộc FOREIGN KEY là để kiểm soát dữ liệu chứa trong bảng có FOREIGN KEY (tức table con) nhưng thực chất nó cũng kiểm soát luôn cả dữ liệu trong bảng chứa PRIMARY KEY (tức table cha). Ví dụ nếu ta xóa dữ liệu trong bảng cha thì dữ liệu trong bảng con trở nên "mồ côi" (orphan) vì không thể tham chiếu ngược về bảng cha. Do đó ràng buộc FOREIGN KEY sẽ đảm bảo điều đó không xảy ra. Nếu bạn muốn xóa dữ liệu trong bảng cha thì trước hết bạn phải xóa hay vô hiệu hóa ràng buộc FOREIGN KEY trong bảng con trước.

Ràng buộc FOREIGN KEY được định nghĩa theo cú pháp dưới đây:

[CONSTRAINT tên_ràng_buộc] FOREIGN KEY [(danh_sách_cột)]

REFERENCES tên_bảng_tham_chiếu(danh_sách_cột_tham_chiếu)

[ ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT ]

[ ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT ]

Việc định nghĩa một ràng buộc FOREIGN KEY bao gồm các yếu tố sau:

Tên  cột  hoặc  danh  sách  cột  của  bảng  được  định  nghĩa tham  gia  vào  khoá ngoài.

Tên của bảng được tham chiếu bởi khoá ngoài và danh sách các cột được tham chiếu đến trong bảng tham chiếu.

Cách thức xử lý đối với các bản ghi trong bảng đ ược định nghĩa trong trường hợp các bản  ghi  được  tham  chiếu  trong  bảng  tham  chiếu  bị  xoá  (ON DELETE) hay cập nhật (ON

UPDATE). SQL chuẩn đưa ra 4 cách xử lý

CASCADE: Tự động xoá (cập nhật) nếu bản ghi được tham chiếu bị xoá (cập nhật).

NO  ACTION:  (Mặc  định)  Nếu  bản  ghi  trong  bảng  tham  chiếu đang  được  tham chiếu  bởi  một  bản  ghi  bất  kỳ  trong  bảng  đ ược định nghĩa thì bàn ghi đó không được phép xoá hoặc cập nhật (đối với cột được tham chiếu).

SET  NULL:  Cập  nhật  lại  khoá  ngoài  của  bản  ghi  thành  giá  trị NULL (nếu cột cho phép nhận giá trị NULL).

SET DEFAULT: Cập nhật lại khoá ngoài của bản ghi nhận giá trị mặc định (nếu cột có qui định giá trị mặc định).

Ví dụ: drop table orderdetail create table orderdetail

( orderid int constraint fk_orderdetail_orders foreign key references orders(orderid) on delete cascade on update cascade, customerid int constraint fk_orderdetail_customer foreign key references customers(customerid) on delete cascade on update cascade, itemid int

constraint fk_orderdetail_items foreign key references items(itemid) on delete cascade on update cascade, quantity decimal(18,2) not null,

)

Tag: Sql 2005sql server 2005giáo trình sql servergiao trinh sql servertự học sql 2005tu hoc sql 2005tìm hiểu sql serversql serverCác loại ràng buộc trong SQL Server

Đang phát triển ...

Bài viết liên quan

SQL Alter Table

Bài viết sau đây sẽ giới thiệu tới các bạn về sql, SQL Alter Table, lợi ích của nó trong công việc, học tập của chúng ta.

SQL Tạo Cơ sở dữ liệu và Bảng

Bài viết sau đây sẽ giới thiệu tới các bạn cách tạo cơ sở dữ liệu và bảng trong sql, chúng ta hãy cùng nhau đi tìm hiểu bài viết.

SQL Join trong SQL.

Bài viết sau đây sẽ giới thiệu tới các bạn về sql, SQL Join trong SQL. Chúng ta hãy cùng nhau tìm hiểu bài viết.

Các bí danh (Alias) SQL

Bài viết sau đây sẽ giới thiệu tới các bạn về Các bí danh (Alias) SQL trong sql server 2005, chúng ta hãy cùng nhau tìm hiểu.

SQL Group By và SQL Having

Bài viết sau đây sẽ giới thiệu tới các bạn về chuyên mục SQL Group By và SQL Having trong SQL server 2005.

Các hàm SQL

Bài viết sau đây sẽ giới thiệu với các bạn về các hàm SQL trong sql server 2005, chúng ta hãy cùng nhau tìm hiểu ngay sau đây.

Các hàm SQL Count

Hiểu về SQL cũng chính là hiểu về các hàm trong đó. Bài viết sau đây sẽ giới thiệu tới các bạn bài học về các hàm SQL Count.

SQL Delete

Bài viết này sẽ giúp các bạn hiểu và biết cách xóa trong sql, chúng ta hãy cùng nhau tìm hiểu về SQL Dalete.

SQL Update

Bài viết giới thiệu về SQL Update trong sql server 2005, chúng ta hãy cùng nhau tìm hiểu bài viết để hiểu hơn về SQL.

SQL INSERT INTO

Bài viết sau đây sẽ giới thiệu tới các bạn về SQL INSERT INTO  trong sql server 2005. chúng ta hãy cùng nhau tìm hiểu bài viết.

SQL Order By

Bài viết sau đây sẽ giới thiệu tới các bạn về Sql Order By trong sql server 2005. chúng ta hãy cùng nhau tìm hiểu bài viết.

SQL Select Distinct

Bài viết sau đây sẽ giới thiệu với các bạn về sql, sql server 2005, SQL Select Distinct.

Tấn công ransomware cực lớn trên toàn cầu, tải về bản vá lỗi ngay

Tấn công ransomware cực lớn trên toàn cầu, tải về bản vá lỗi ngay

Cuộc tấn công vào NHS đã sử dụng một dạng ransomware có tên Wanacryptor và nhắm mục tiêu vào hàng nghìn tổ chức ở 74 quốc gia. Ransomware là một dạng tấn công mạng có liên quan đến việc các hacker nắm quyền kiểm soát máy tính hoặc thiết bị di động và yêu cầu đòi tiền chuộc. Bằng nhiều cách, những kẻ tấn công tải phần mềm độc hại vào thiết bị và mã hóa thông tin của nạn nhân.

Kỹ thuật tìm kiếm và thay thế từ cơ bản đến nâng cao trong MS Office (Word)

Kỹ thuật tìm kiếm và thay thế từ cơ bản đến nâng cao trong MS Office (Word)

Trong Word nói riêng, Office nói chung, có lẽ ai cũng biết chức năng tìm kiếm và thay thế nội dung văn bản, nhưng ngoài ra, còn nhiểu chức năng khác trong hộp thoại tìm kiếm và thay thế mà không phải ai cũng biết để sử dụng. Trong đó có tìm kiếm và thay thế định dạng, sử dụng các ký hiệu đại diện, các ký tự đặc biệt… 

Bài 6: Thủ thuật outlook 2010

Bài 6: Thủ thuật outlook 2010

Bài viết giới thiệu đến các bạn một số thủ thuật được dùng trong outlook 2010, để giúp công việc của các bạn được dễ dàng hơn.

Bài 5: Quản lý các thông tin trong  outlook 2010

Bài 5: Quản lý các thông tin trong outlook 2010

Bài viết giới thiệu về phương pháp quản lý thông tinn trong outlook 2010. Chúng ta hãy cùng tìm hiểu xem có điểm gì khác và nổi bật so với outlook 2007

Bài 4: Sử dụng lịch làm việc một cách hiệu quả outlook 2010

Bài 4: Sử dụng lịch làm việc một cách hiệu quả outlook 2010

Để công việc của đạt hiệu quả cao hơn, chúng ta hãy cùng nhau tìm hiểu cách sử dụng lịch làm việc một cách hiệu quả hơn trong outlook 2010

Bài 3: Quản lý hộp thư của bạn về dung lượng và lưu trữ outlook 2010

Bài 3: Quản lý hộp thư của bạn về dung lượng và lưu trữ outlook 2010

Bài viết sau đây sẽ giới thiệu về mục quản lý hộp thư của bạn về dung lượng và lưu trữ trong microsoft outlook 2010.

Hàm SLEEP trong PHP

Hàm SLEEP trong PHP

Có những lúc trong công việc lập trình ta cần mã tạm dừng theo một thời gian định trước thì trong php có hỗ trợ hàm sleep để các bạn làm điều này.

Hàm Rand trong PHP

Hàm Rand trong PHP

Đôi lúc chúng ta lập trình cần đến những con số sinh ngẫu nhiên vào những công việc khách nhau hôm này mình xin giới thiệu với mọi người hàm sinh số ngẫu nhiên trong PHP

Bài 9: Giới thiệu lập trình hướng đối tượng trong PHP (OOP)

Bài 9: Giới thiệu lập trình hướng đối tượng trong PHP (OOP)

Các bạn tự học PHP nên biết về lập trình hướng đối tượng trong PHP, kỹ thuật lập trình hỗ trợ công nghệ đối tượng

Bài 8: Hàm có sẵn thông dụng trong PHP

Bài 8: Hàm có sẵn thông dụng trong PHP

Hàm thông dụng trong php cần biết, các bạn mới bắt đầu lên nắm rõ ý nghĩa cấu trúc cách dùng những hàm này để bổ trợ kiến thức sau này

Bài 7: Hàm trong PHP

Bài 7: Hàm trong PHP

Hàm do người sử dụng định nghĩa cho phép bạn xử lý những tác vụ thường lặp đi lặp lại trong ứng dụng. cách khai báo, cú pháp của hàm trong php