使用SQL語句在初次創建數據表時,同時增長約束的方法很是簡單:
create table 表名
(列名 列的屬性 約束名
[,...n] )便可,可創建的約束包括primary key 、foreign key、null/not null、check、default等
例如create table student
( stu_no char(6) primary key,
stu_name char(10) not null,
stu_sex char(2) check(stu_sex='男' or stu_sex='女'), /*約束此列的值只能輸入「男」或「女」值*/
stu_nation char(10) default '漢族',
)
create table grade
( stu_no char(6) foreign key (stu_no) references student(stu_no), /*此爲定義外鍵約束*/
subject_no int,
grade decimal(4,1) check(grade>=0 or grade <=100) /*約束成績取值範圍在0-100分之間*/
可是若創建好數據表以後,想要再往列增長約束或修改約束,則格式根據約束的不一樣各有不一樣:
use xscj
go
create table abc
(s_no char(10),
s_name char(10),
s_sex char(2),
s_nation char(16)
) /*以上爲創建一個沒有任何約束的新數據表*/
go
alter table abc
alter column s_no char(10) not null
go
alter table abc
add primary key (s_no) /* 以上爲給表的s_no列加上primary key 約束*/
go
alter table abc
add check(s_sex='男'or s_sex='女') /*給x_sex列加check約束*/
go
alter table abc
add default '漢族' for s_nation /*加default約束時格式和其餘的有所不一樣*/
go
但若是是創建表時已經給列創建了某種約束,須要修改其約束的話,則須要先刪除掉原有約束,而後再增長新約束,至於刪除約束的命令格式爲:alter table 表名 drop constraint 約束名
此處的約束名因爲創建約束時給省略了,因此需經過「sp_helpconstraint 表名」命令查看到列上對應的constraint_name(即約束名)io
總結!!!table
create table test /*建立test表*/ class
( test_no char(6) primary key, /*新增字段test_no 並設置爲主鍵*/
test_name char(10) not null, /*建立字段test_name 並設置不能空*/
test_sex char(2) check(test_sex='男' or test_sex='女'), /*約束此列的值只能輸入「男」或「女」值 感受有點像 vb 哈哈*/
test_nation char(10) default '漢族', /*建立字段test_nation 並設置默認值爲漢族*/
) test
另外:再約束中 也能夠有 and 這個鏈接字。
如 check(test_age>0 and test_age<=150) #年齡再0到150之間
固然還能夠用 in 這個
如 check(test_sex in ('男','女','中性')) #性別是 男 女 或中性方法
附上:
刪除約束
alter table 表名 drop constraint 約束名
增長約束
alter table abc
add check(test_sex='男'or test_sex='女') /*給test_sex列加check約束*/ im