【轉】SQL Server的幾種約束

SQL Server中有五種約束類型,分別是 PRIMARY KEY約束、FOREIGN KEY約束、UNIQUE約束、DEFAULT約束、和CHECK約束ci

使用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

相關文章
相關標籤/搜索