MySQL约束
主键约束(primary key)
主键约束是一列或多列的组合,其值能唯一标识表中每一行,方便在数据库中快速找到某一行。
主键约束相当于唯一约束+非空约束的组合。
添加主键约束
在create table语句中,通过primary key关键字来指定主键。
语法格式:
方法一:
create table 表名(
<字段名> <数据类型> primary key,
...
...
)
方法二:
create table 表名(
<字段名> <数据类型>,
<字段名> <数据类型>,
<字段名> <数据类型>,
constraint 主键名 primary key(字段名) #constraint 主键名可省略
)
多列主键(联合主键)
这个主键由一张表中多个字段组成
注意:
当这个主键由多个字段组成时,不能直接在字段名后声明主键约束。
一张表只能有一个主键,联合主键也是一个主键
语法:
create table 表名(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
...
primary key(字段名,字段名,...)
);
通过修改表结构来添加主键(联合主键同理)
语法:
create table 表名(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型
);
alter table 表名 add primary key(字段名);
删除表主键
语法:
alter table 表名 drop primary key;
自增长约束
语法:
字段名 数据类型 primary key auto_increment
操作:
create table t_user1(
id int primary key auto_increment,
name varchar(20)
);
指定自增长的初始值
方法一:创建表时指定
create table t_user2(
id int primary key auto_increment,
name varchar(20)
)auto-increment = 100;
方法二:创建表之后指定
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,'张三');
#delete和truncate在删除后自增列的变化
#delete数据之后自动增长从断点开始
#truncate数据之后自动增长从默认初始值开始
非空约束
添加非空约束
方法一:
<字段名><数据类型> not null;
方法二:
alter table 表名 modify 字段名 数据类型 not null;
删除非空约束
alter table 表名 modify 字段名 数据类型;
唯一约束
添加唯一约束
方法一:
<字段名><数据类型> unique;
方法二:
alter table 表名 add constraint 主键名(约束) unique(列);
删除唯一约束
格式:
alter table <表名> drop index <唯一约束名>;
#如果没有约束名,那么该约束所在列的列名默认是约束名。
默认约束
概念:
mysql默认值约束用来指定某列的默认值。
语法:
<字段值><数据类型> default <默认值>;
alter table 表名 modify 列名 类型 default 默认值;
添加默认约束——方法1:
create table t_user10(
id int,
name varchar(20),
address varchar(20) default '浙江' --指定默认约束
);
添加默认约束——方法2:
create table t_user11(
id int,
name varchar(20),
address varchar(20)
);
alter table t_user11 address varchar(20) default '浙江';
insert into t_user11(id,name) values(1001,'张三');
删除默认约束
alter table <表名>change column <字段名> <类型> default null;
例子:
alter table t_user11 change column address varchar(20) default NULL;
零填充约束(zerofill)
概念:
1.插入数据时,当该字段的值的长度时,会在该值的前面补上相应的0
2.zerofill默认为int(10)
3.当使用zerofill时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128+127,无符号为0256
操作:
create table t_user12(
id int zerofill,
name varchar(20)
);
删除:
alter table t_user12 modify id int;