1、主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。
2、唯一约束(Unique constraint):要求该列唯一,允许为空,但只能出现一个空值。
3、检查约束(Check constraint):某列取值范围限制,格式限制等,如有关年龄、邮箱(必须有@)的约束。
4、默认约束(Default constraint):某列的默认值,如在数据库里有一项数据很多重复,可以设为默认值。
5、外键约束(Foreign Key constraint):用于在两个表之间建立关系,需要指定引用主表的哪一列。
扩展资料:
对于存在外键约束的表,如果进行删除非空的外键,可能会出现错误。 如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。
列级 FOREIGN KEY 约束的 REFERENCES 子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。表级 FOREIGN KEY 约束的 REFERENCES 子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。
在SQLServer中,有3种不同类型的约束。
1、实体约束
实体约束是关于行的,比如某一行出现的值就不允许出现在其他行,例如主键。
2、域约束
域约束是关于列的,对于所有行,某一列有那些约束,例如CHECK约束。
3、参照完整性约束
如果某列的值必须与其他列的值匹配,那就意味着需要一个参照完整性约束,例如外键。
SQL Server中的约束条件
1、默认约束:定义该列未输入值时应该具有的默认值
SQL-------alter table 表名 add constraint dt_列名 default 默认值 for 列名
2、空值约束:定义该列是否允许为空值
SQL-------定义表的时候在对应列列数据类型后面添加not null
3、检查约束:又叫check约束,用来限制列的取值,它根据定义的逻辑表达式来强制域的完整性
SQL-------alter table 表名 add constraint ck_列名 check(逻辑表达式)
4、唯一约束:确保在非主键列不输入重复值
SQL-------alter table 表名 add constraint uq_列名 unique[clustered | nonclustered](列名)
5、外键约束:用于建立两个表数据之间连接的一列或多列
SQL-------alter table 表名 add constraint fk_列名 foreign key(列名) references 另一表名(列名)
6、主键约束:用来惟一地标识表中的每一行
SQL-------alter table 表名 add constraint pk_列名 primary key(列名)
新增列:alter table 表名 add 新列名 数据类型
删除列:alter table 表名 drop column 列名
删除约束:alter table 表名 drop constraint 约束名
修改列数据类型:alter table 表名 alter column 列名 新数据类型
修改列名需要调用存储过程sp_rename
在 SQL 中,我们有如下约束:
NOT NULL – 指示某列不能存储 NULL 值。
UNIQUE – 保证某列的每行必须有唯一的值。
PRIMARY KEY – NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY – 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK – 保证列中的值符合指定的条件。
DEFAULT – 规定没有给列赋值时的默认值。
在下面的章节,我们会详细讲解每一种约束。
--添加主键约束
alter table 表名
add constraint 约束名 primary key(要设为主键的列名)
--添加唯一约束
alter table 表名
add constraint 约束名 unique(stuName)
--添加检查约束
alter table 表名
add constraint 约束名 check(条件,如:stuSex='男' or stuSex='女')
--添加默认约束
alter table 表名
add constraint 约束名 default(要设置的默认值) for stuSex
--添加外键约束
alter table 表名
add constraint 约束名 foreign key(本表的列名) references 主键表名(列名)
什么意思