MySQL约束

1.主键约束

概念:

唯一的标识每一行,方便在RBDMS中尽快找到某一行

主键约束=唯一约束(不允许重复)+非空约束(不允许出现空值)

每个表最多只有一个主键

关键字:prinmary key

当创建主键约束时,系统默认在所在列或者列组合上建立唯一索引

操作

添加单列主键(两种方式)

(1)在定义字段时添加主键

use mydb1;
create table emp1(
eid int primary key,#在定义eid时添加主键
name VARCHAR(20),
deptTd int,
salary double
);

(2)在定义字段之后再添加主键

create table emp2(
eid INT,
name VARCHAR(20),
deptid INT,
salary double,
constraint pk1 primary key(id)#(constraint pk1可以省略)
);

主键不能重复

insert into emp2(eid,name,deptId,salary) values(1001,'张总','10',10,5000);
insert into emp2(eid,name,deptId,salary) values(1001,'张1总','110',110,50000);

注意:联合主键的每一列都不能为空

添加多列主键(联合主键)

注意:当主键是由多个字段组成,不能直接在字段后面声明主键约束。一张表只能有一个主键,联合主键也是一个主键。

实现:

create table emp3(
name varchar(20),
deptId int,
salary dounle,
primary key(name,deptId)#name和depid合在一起作为一个主键
);

通过修改表结构添加主键

在修改表时添加主键

create table emp4(
eid int,
name varchar(20),
deptid int,
salary double,
);
alter table emp4 add primary key (eid);

删除主键

--删除单列主键
alter table emp1 drop primary key;
--删除联合主键
alter table emp5 drop primary key;

2.MySQL-自增长约束(auto_increment)

概念

在MySQL中,当主键定义为自增长后,这个主键的值就不需要用户再输入数据了,而由数据库系统定义自动赋值。每增加一条记录,主键以相同的步长进行增长。

通过给字段添加auto_increment属性来增加主键自增长。

操作

create table t_user1(
id int primary key auto_increment,
name varchar(20)
);

即使不给主键赋值,也默认给值(从1)

insert into t_user1 values(NULL,'张三');#不给id值
insert into t_user1(name) values('李四');

特点

默认情况下,auto_increment的初始值为1,每新增一条记录,字段字段增加1.

 一个表中只有一个字段使用auto_increment约束,且该字段必须有唯一的索引,以避免序号重复(即为主键或者主键的一部分)

auto_increment约束字段必须具备NOT NULL属性。

auto_increment约束字段只能是整数类型

auto_increment约束字段的最大值受该字段的数据类型约束,如果达到上限,auto_increment就会失效。

指定自增长字段初始值

如果第一条记录设置了该字段的初始值,那么新增加的记录就会从这个初始值自增。例如,如果表中插入的第一条记录的id值设置为5,那么再插入记录时,id值就会从5开始自增长。

--方式1,创建表时指定
create table t_user2(
id int primary key auto_increment,
name varchar(20)
)auto_increment=100;

delete和truncate在删除后自增列的变化

delete数据之后自增长从断点开始

truncate数据之后自动增长从默认起始值开始


3.MySQL非空约束

概念

MySQL非空约束(not null)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。

实现

添加非空约束

--方式1 创建表时指定
create table t_yser6(
id int,
name varchar(20) not null,
adress varchar(20) not null
);
--方式2,创建表之后指定
create table t_user7(
id int,
name varchar(20),
address varchar(20)
);
alter table t_user7 modify name varchar(20) not null;
alter table t_user7 modify address varchar(20) not null;

--注意
insert into t_user6(id) value(1001);--不可以
insert into t_user(id,name,address) value(1001,NULL,NULL);--不给值不可以
insert into t_user(id,name,address) value(1001,'NULL','NULL');--可以
insert into t_user(id,name,address) value(1001,'','');--空串可以

删除非空约束

alter table t_user7 modify name varchar(20) ;#把not null去掉,其他不变
alter table t_user7 modify address varchar(20) ;

4.MySQL唯一约束

概念

唯一约束(unique Key)是指所有记录中字段的值不能重复出现,例如,为ID字段假设唯一性约束后,每条字段的id值都是唯一的,不能出现重复的情况。

实现

create table t_user8(
id int,
name varchar(20),
phone_number varchar(20) unique
);

insert into t_user9 add conssraint unique_pn unique(phone_number);
--删除为一下约束
alter table t_user9 drop index unique_pn;

注意:NULL和任何值都不相同,和自己也不相同。


5.MySQL默认约束

概念

MySQL默认值约束用来指定某列的默认值

create table t_user10(
id int,
name varchar(20),
adress varchar(20) default '北京'
);

6.零填充约束(zerofill)

概念

插入数据时,当该字段的值长度小于定义的长度时,会在该值前面补上相应的0.

zerofill默认为int(10)

当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128~+127,无符号为0~256.

实现

--添加
create table t_user12(
id int zerofill,
name varchar(20)
);
--删除
alter table t_user12 modify id int;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值