約束的目的就是確保表中的數據的完整性。
常用的約束類型如下:
主鍵約束:(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)
- )
原文鏈接:https://blog.csdn.net/hamber_bao/article/details/6504905
