MySQL数据库基本操作03–约束
constraint 表中数据的限制条件
类型 | 英文 |
---|---|
主键约束 | primary key |
自增长约束 | auto_increment |
非空约束 | not null |
唯一性约束 | unique |
默认约束 | default |
零填充约束 | zerofill |
外键约束 | foreign key |
1. 主键约束
1.1 单列主键
# 方法1:在创建表时规定主键
create table student(
stu_id int primary key,
name varchar(20));
# 方法2:定义字段后再指定主键,constraint pk1 可省略
create table student(
stu_id int,
name varchar(20),
constraint pk1 primary key stu_id);
1.2 联合主键
create table emp3(
name varchar(20),
dept_id int,
salary double,
primary key(name,dept_id));
注:联合主键各列,不完全相同即可,任意列都不能为空
1.3 通过修改表结构添加主键
create table emp3(
name varchar(20),
dept_id int,
salary double,
);
alter table emp3 add primary key(name,dept_id);
1.4 删除主键
alter table emp3 drop primary key;
2. 自增长约束
2.1 概念及特点
create table t_user1(
id int primary key auto_increment,
name varchar(20));
insert into t_user1(name) values('张三');
2.2 指定自增字段初始值
# 方式1
create table t_user2(
id int primary key auto_increment,
name varchar(20)
)auto_increment = 100;
# 方式2
create table t_user3(
id int primary key auto_increment,
name varchar(20));
alter table t_user3 auto_increment = 200;
delete删除自增列后,自增长从断点开始
truncate则从默认起始值开始
3. 非空约束
# 方式1
create table t_user(
id int,
name varchar(20) not null);
# 方式2
create table t_user(
id int,
name varchar(20));
alter table t_user modify name varchar(20) not null;
# 删除非空约束
alter table t_user modify name varchar(20);
4. 唯一约束
# 方式1
create table t_user(
id int unique,
name varchar(20));
# 方式2
create table t_user(
id int,
name varchar(20));
alter table t_user add constraint unique_id unique(id);
# 删除唯一约束
alter table t_user drop index id;
注:MySQL中,null和任何值都不相同,即null != null
5.默认约束
# 方式1
create table t_user(
id int ,
name varchar(20),
address varchar(20) default '北京');
# 方式2
create table t_user(
id int,
name varchar(20),
address varchar(20));
alter table t_user modify address varchar(20) default '北京';
# 删除默认约束
alter table t_user modify address varchar(20) default null;
6. 零填充约束
create table t_user(
id int zerofill ,
name varchar(20),
);
insert into t_user values(123,'张三'); # 0000000123
# 删除零填充约束
alter table t_user modify id int;