使用SQL語句建立和刪除約束

2022-03-09 08:33:30 字數 2185 閱讀 8095

原文:

約束的目的就是確保表中的資料的完整性。

常用的約束型別如下:

主鍵約束:(primary key constraint)      要求主鍵列唯一,並且不允許為空

唯一約束:(unique constraint)              要求該列唯一,允許為空,但只能出現乙個空值

檢查約束:(check constraint)                某列取值範圍限制、格式限制等。如有關年齡的限制

預設約束:(default constraint)               某列的預設值,如我們的男性學員比較多,性別預設為男

外來鍵約束:(foreign key constraint)       用於在兩表之間建立關係,需要指定引用主表的哪一列

一、新增約束

在建立表時,我們可以在字段後新增各種約束,但一般不這樣混用,推薦將新增約束和建表的語句分開編寫。

新增約束的語法如下:

alter table 表名   

add constraint 約束名 約束型別 具體的約束型別

上述語法標識修改某個表,新增某個約束,其中約束名的命名規則推薦採用"約束型別_約束字段"這樣的形式。

--新增主鍵約束   

alter table stuinfo

add constraint pk_stuno primary key(stuno)

---新增唯一約束

alter table stuinfo

add constraint uq_stuid unique(stuid)

---新增預設約束

alter table stuinfo

add constraint df_stuaddress

default('

位址不詳

') for

stuaddress

---新增檢查約束

alter table stuinfo

add constraint ck_stuage check(stuage between

15 and 40

)

---新增外來鍵約束

alter table stumarks

add constraint fk_stuno foreign key(stuno) references stuinfo(stuno)

二、刪除約束

如果錯誤的新增了約束,則可以刪除約束

刪除約束的語法如下:

alter table 表名   

drop constraint 約束名

附加:在建立表的時候同時新增約束的寫法:

use studb   

go

if exists(select * from sysobjects where name = '

stuinfo

')

drop table stuinfo

go

create table stuinfo

(

stuname varchar(

20) not null

primary key(stuname)

,stuid

int not null

unique(stuid)

,stuaddress varchar(

20) not null

default('

位址不詳

')

,stuage

int not null check(stuage between 15 and 40

)

)

(非常感謝樓主!)

使用SQL語句建立和刪除約束

約束的目的就是確保表中的資料的完整性。常用的約束型別如下 主鍵約束 primary key constraint 要求主鍵列唯一,並且不允許為空 唯一約束 unique constraint 要求該列唯一,允許為空,但只能出現乙個空值 檢查約束 check constraint 某列取值範圍限制 格...

sqlserver建立和刪除外來鍵約束

原文 x先找出約束名字 然後刪除它 我給個例子 測試環境 主表 create table test1 id int primary key not null,value int insert test1 select 1,2 go 從表 create table test2 id int refer...

ylb 使用sql語句實現新增 刪除約束

ylbtech sql server sql server 使用sql語句實現新增 刪除約束 主鍵約束 primary key constraint 要求主鍵列的資料唯一,並且不允許為空。唯一約束 unique constraint 要求該列唯一,允許為空,但只能出現乙個空值。檢查約束 check ...