约束
1、约束类型:
主键约束(PRIMARY KEY):
1、要求主键列不能为空
2、约束唯一标识数据库表中的每一条记录
3、主键必须包含唯一的值
4、每张表都应该有一个主键
5、语法:
1、创建主键(创建表时):create table <表名> (StudentID int not null primary key)
2、创建主键(表已存在):alter table <表名> add constraint pk_列名 primary key (列名)
3、删除主键约束:1、alter table <表名> drop constraint primary key
2、alter table <表名> drop constraint <主键约束名> 主键
约束名可以使用sp_help查询
非空约束(NULL、NOT NULL):
1、要求该列不能存在空值
2、语法:
创建表时:CREATE TABLE <表名> (name varchar(10) not null)
唯一约束(unique):
1、要求该列的值必须是唯一的,允许为空,但只能有一个。
2、每张表中只有一个primary key约束,但可以有多个unique约束。
3、unique和primary key都是为数据提供唯一性约束
4、语法:
1、创建主键(创建表时):create table <表名> (StudentID int unique)
2、创建主键(表已存在):1、constraint <列名> uniqe (列名,列名) --添加多个约束
2、alter table <表名> add unique (列名)
3、删除主键约束:1、alter table <表名> drop constraint unique
2、alter table <表名> drop constraint <主键约束名> 主键
检查约束(CHECK):
1、限制某列取值的范围
2、如果对单个列做check约束,那么该列只能输入特定的数值
3、如果一张表定义了check约束,那么会在特定的列队值进行限制
4、语法:
1、StudentID int not null check (<列名>>0) --要求StudentID要大于0
2、sex varchar(2) not null check (sex='男' or sex='女') --要性别只能输入男或女
3、alter table <表名> add constraint ck_列名 check (列名>0) --向已有列添加check约束
4、alter table <表名> drop constraint check 约束名 --删除约束
默认约束(DEFAULT):
1、设计某列的默认值
2、如果这列没有输入值,那么会将默认值添加到记录中
3、语法:
1、name verchar(40) not null default '李四' --该列默认插入李四
2、endtime data default getedata() --默认插入当前时间
3、alter table <表名> add contraint df_列名 default(0) for 列名
外键约束(FOREIGN KEY):
1、用于在两表之间建立关系,需要指定引用主表的那一列(primary key)
2、foreign key约束用于防止破坏表之间的连接
3、foreign key约束也能防止非法数据插入该列,因为该列的值必须是他指向那张表的列的值的其中之一
4、语法:
1、foreign key (列名) references 主表名 (主键列名)
2、列名 int foreign key references 主表名 (主键列名)
3、alter table 表名 add constraint fk_列名 foreign key (列名) references 主表名 (主键列名)
4、alter table 表名 drop constraint 外键约束名
主键约束与唯一约束的区别:
1、主键约束所在的列不允许有空值,唯一约束可以为空
2、每张表中只有一个主键、可以有多个唯一键
2、SQL添加约束类型
列:
USE <数据库>
GO
ALTER TABLE <表名>
ADD CONSTRAINT PK_<字段名> PRIMARY KEY (字段名),
ADD CONSTRAINT CK_<字段名> CHECK(LEN(字段名)>6),
ADD CONSTRAINT CK_<字段名> CHECK(字段名=1, OR 字段名=0,),
ADD CONSTRAINT DF_<字段名> DEFAULT(0) FOR 字段名,
ADD CONSTRAINT CK_<字段名> CHECK(字段名 like '%@%'),
ADD CONSTRAINT PK_<> PRIMARY KEY (),