原文:
約束的目的就是確保表中的資料的完整性。
常用的約束型別如下:
主鍵約束:(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 studbgo
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 ...