约束其实就是创建表的时候给表的某些列加上限制条件。
主键约束和自增长约束比较重要
一、Mysql约束-主键约束
简介
指定的主键不能重复也不可以出现空值
1.添加单列主键
语法1:create table 表名(字段名 数据类型 primary key);
点开设计表,可以看到后面有一个键
语法2:create table 表名(字段名 数据类型
constraint pk1 primary key(eid)
);
constraint pk1 可省略
主键的作用:
主键约束的列非空且唯一
不可以重复
不可以为空值
2.联合主键
联合主键也是只有一个主键
语法create table 表名(... primary key(字段1,字段2,字段3...));
就是说这两个不要完全相同,一个相同也可以,只要不是完全一样就可以插入进去
作为联合主键的任意一个都不可以为空,同时为空也不可以
联合主键的各列,每一列都不能为空
3.修改表结构添加主键

既可以添加单列主键,也可以添加联合主键
语法:create table 表名(,,,);alter table 表名 add primary key (字段列表);
添加单列主键
添加多列主键
4.删除主键
语法:alter table 表名 drop primary key;
只有一个主键,删的时候不分单列主键和联合主键,语法都是一样的
二、Mysql约束-自增长约束-auto_increment
语法:字段名 数据类型 primary key auto_increment;
默认主键从1开始增长,每次加1
一个表只有一个主键,自增长约束是加在主键上的,所以自增长约束一个表也只有一个
指定自增字段初始值
方式1:创建表时指定
方式2:创建表之后指定
detele和truncate区别
detele 删除数据之后,自增长还是在最后一个值基础上加1
truncate是删除表,重新建一个,truncate删除之后,自增长从1开始,就算有初始值也是从1开始
-- 自增长约束
use mybd1;
create table t_user1(
id int primary key auto_increment,
name varchar(20)
);
insert into t_user1 values(NULL,'张三');
insert into t_user1(name) values('李四');
delete from t_user1;
insert into t_user1 values(NULL,'张三');
insert into t_user1(name) values('李四');
truncate t_user1;
insert into t_user1 values(NULL,'张三');
insert into t_user1(name) values('李四');
-- 指定自增长的初始值
create table t_user2(
id int primary key auto_increment,
name varchar(20)
)auto_increment = 100;
insert into t_user2 values(NULL,'张三');
create table t_user3(
id int primary key auto_increment,
name varchar(20)
);
alter table t_user3 auto_increment = 200;
insert into t_user3 values(NULL,'张三');
三、MySQL约束-非空约束-not null
就是限定字段的值不能为空,非空约束可以有很多个
方式1:字段名 数据类型 not null;
方式2:alter table 表名 modify 字段 类型 not null;
不传不可以,传NULL也不可以
这个可以传,传一个空串
desc 表名;可以查看非空约束
删除非空约束 语法 :alter table 表名 modify 字段 类型;
四、MySQL约束-唯一约束-unique
字段的值不能重复出现
在Mysql中,NULL和任何值都不相同,甚至和自己都不相同
方式1:字段名 数据类型 unique
方式2:alter table 表名 add constraint 约束名 unique(列);
删除唯一约束
语法:alter table 表名 drop index 唯一约束名;
没有规定唯一约束名,也可以使用字段名直接删除唯一约束
五、MySQL约束—默认约束-default
给一个默认值,如果你不传入默认值对应的那一列的值,就会添加一个默认值
语法1:字段名 数据类型 default 默认值;
你给他默认值指定一个值,他就不会添加默认值,而是去添加你指定的值
语法2:alter table 表名 modify 列名 类型 default 默认值;
删除默认约束:alter table 表名 modify 列名 类型 default null;
六、MySQL约束-零填充约束-zerofill
表示针对数据类型, 字段的值长度小于定义的长度时,会自动在前面补上相应的0
语法:字段名 数据类型 zerofill;
默认零填充的约束数字int(10)