Mysql约束

约束其实就是创建表的时候给表的某些列加上限制条件。

主键约束和自增长约束比较重要

一、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)

删除约束:alter table 表名 modify 字段名 数据类型;

七、总结

思维导图:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值