MySQL之约束
文章目录
约束—Constraint
约束实际上就是表中数据的限制条件
作用
表在设计的时候加入约束的目的就是为了保证表中记录完整性和有效性
分类
主键约束 primary key–pk
唯一约束+非空约束
一个列或者多列,唯一标识表中的每一行,提高查询效率
添加单列主键
两种方式 一
Create table 表名(
<字段名><数据类型> primary key
·······
)
方式二
Create table 表名(
·······
[constraint]<约束名>] primary key[字段名]
)
添加联合主键
注意:当主键由多个字段组成时,不能直接在字段名后声明主键约束 一张表只能有一个主键,联合主键也是一个主键
Create table 表名(
·····
Primary key (字段1,字段2···,字段n)
)
通过修改表结构添加主键
Create table 表名(
·····
);
Alter table <表名>add primary key(字段列表)
删除
Alter table <数据表名> drop primary key
自增长约束 auto_increment
定义自增长后,这个主键就不在需要输入数据了,而由数据库系统根据定义自动赋值
字段名 数据类型 auto_increment
Delete和truncate在删除后自增长的变化
Delete数据之后自动增长从断点开始
truncate数据之后自动增长从默认起始值开始
非空约束 not null
字段的值不能为空
1.<字段名><数据类型> not null
2.alter table <表名> modify 字段 类型 not null
删除
alter table <表名> modify 字段
唯一约束 unique
是指所有记录中字段的值不能重复出现
1.<字段名><数据类型>unique
2.alter table 表名 add constraint 约束名 unique( 列)
删除
Alter table <表名>drop index(唯一约束)
默认约束 default
约束用来指定某列的默认值
1.<字段名><数据类型>default<默认值>
2.alter table 表名 modify 列名 类型 default 默认值
删除
Alter table<表名>change column<字段名><类型>default null
零填充约束 zerofill
插入数据时,该字段的值长度定义小于定义的长度时,会在该值的前面补上相应的0
zerofill默认为int(10)
当时用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原来值的2倍
例如 有符号-128~+127 无符号0-256
<字段名><数据类型>zerofill
删除
Alter table<表名>modify 字段 类型
外键约束 foreign key
经常与主键约束一起使用,对于两个具有关联关系的表而言,相关字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)
create table 表名(
字段名 字段类型,
外键名称 --命名规则:主表名称_从表名称_fk
foreign key(字段名) -- 作用在这个字段id上
references 主表名称(id) --关联主表的主键id
)
删除
Alter table<表名>drop foreign key<外键约束名>