常见约束
1.primary key(主键)
用于保证该字段的值具有唯一性,并且为空
比如学号,员工编号等
2.not null
非空,用于保证该字段的值不能为空
3.unique
唯一,用于保证该字段的唯一性,可以为空
比如座位号
4.forign key:
外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值在从表添加外键约束,用于引用主表中某列的值
5.check:
检查约束【mysql中不支持】
6.default:
默认,用于保证该字段有默认值
约束分类:创建时添加约束,修改时添加约束
表级约束:除了非空,默认
列级约束:外键约束没有效果
一.创建表时添加的约束
添加列级的约束
如:create table stuinfo(
id int,
stuname varchar(20),
age int
)
添加表级约束
语法:在各个字段的最下面
constraint 约束名 约束类型(字段名)
主键和唯一的对比
主键:非空,唯一性(在同一张表中主键只有一个)可以组合不推荐
唯一:唯一性,可以为空(在同一张表中唯一可以有多个)可以组合不推荐
可以将两个列合为一个主键例如:
在创建时,在最下面primary key(id,stuname)
外键:
1.要求在从表设置外键关系
2.从表的外键类型和主表的关联列的类型要求一致或兼容,名称无要求
3.主表的关联列必须是一个key(一般是主键或唯一)
4.插入数据时,先插入主表,再插入从表(删除数据时,先删除从表,再删除主表),简单一点就从表添加联系主表就行
外键的使用
可以在创建时
foreign key(a) references B(a);
添加主键
添加列级约束
alter table 表名 modify column id int primary key;
添加表级约束
alter table 表名 add primary key (id)
添加外键
alter table 表名 add constraint 约束名 约束类型(字段名)【外键的引用】;
三.修改表时删除约束
除了主键,外键,唯一如:
alter table 表名 drop primary key;
其他的只需要修改为相应的属性就行
标识列
#又称自增长列 可以不用手动插入,系统提供默认的序列值
在相关的列添加auto_increment
标识符一定要和key搭配(KEY为唯一,外键,主键等)
同一表中最多一个标识列
标识列只能是数值型
标识列可以通过set auto_increment_increment=2设置步长可以通过手动插入值,设置起始值