为了保证数据的完整性,可以通过约束来实现。
自动保持数据完整性的一种方法。
可以对单个表或同表中多列的组合来实现条件限制。
约束可以分为:主键约束、外键约束、唯一约束、检查约束、缺省约束等
–1、主键约束
/*
一列或者多列的组合在表中具有唯一性,每个表中只有一列可以
注意:image和 text 类型列不可以作为主键约束
*/
use [MyLuoLuo.Com]
go
create table Table1
(
ID int not null,
Name varchar(20) not null,
Memo varchar(200) null,
constraint pk_ID primary key(ID,Name)
/*
语法:
constraint 约束列明 primary key(clustened,noclustened)
如:constraint pk_ID primary key(ID,Name)
*/
)on [primary]
–2、外键约束
/*
定义了表与表之间的关系。主关键字列值更新时,与它关联的表的数据也会跟着自动更新
如果插入数据过程中,主关键字数据不存在时,数据库系统会拒绝提交数据
注意:image与text不能使用
*/
use [MyLuoLuo.Com]
go
create table Student
(
StuID int identity(1000,1) not null,
StuName varchar(20)not null,
Age int null,
Memo varchar(200) null,
ClassID int not null,
foreign key(ClassID)references Classes(ClassID)
/*
语法:
Foreign key(列名) references 外键表名(外键列)
*/
)on [primary]
–3、唯一约束
/*
保证数据值具有唯一性,防止插入重复的数据。
唯一约束可以有null值
*/
use [MyLuoLuo.Com]
go
create Table Users
(
UserID int identity(1,1) not null,
Name varchar(20) not null,
Account varchar(20) not null,
Pwd varchar(12) not null,
constraint uk_Account unique(Account)
/*
constraint 约束名 unique(列名)
*/
)on [primary]
–检查约束
/*
列或者表设置检查条件
*/
use [MyLuoLuo.Com]
go
create table Scores
(
ID int identity(1,1) not null,
StuID int not null,
Score int not null,
constraint chk_Score check(score>0)
)on [primary]
–按约束范围可以分为表约束和列约束。主键约束就属于表约束,而检查约束就属于列约束。