MySQL约束
约束分类 | 语法 | 描述 |
---|---|---|
主键约束 | primary key PK | 唯一且不为空 |
自增长约束 | auto_increment | 配合主键约束/自动增长 |
非空约束 | not null | 不能为空 |
唯一约束 | unique | 这一列的值不能重复 |
默认约束 | default | 默认赋值 |
零填充约束 | zerofill | 填充为0 |
外键约束 | foreign key FK | 多表操作 |
主键约束
创建单列主键
creat table tableName(
filedName type(size) primary key,
......
);
CREATE TABLE fortest.teach(
tname VARCHAR(20) PRIMARY KEY
);
creat table tableName(
filedName1 type(size),
filedName2 type(size),
constraint prk1 primary key(filedName)
)
添加联合主键
注意:
- 联合主键不能直接在字段名后声明主键约束。
- 一张表只能有一个主键,联合主键也是一个主键
create table tableName(
...
primary key(filedNAme1, filedName2)
)
修改表结构添加主键
create table tableName(
...
);
alter table tableName add primary key(filedName);
ALTER TABLE fortest.stu ADD PRIMARY KEY (sid);
删除主键约束
alter table tableName drop primary key;
ALTER TABLE fortest.stu DROP PRIMARY KEY;
自增长约束
通过给字段添加auto_increment
属性来实现自主增长
创建/自增长
filedName type auto_increment
CREATE TABLE fortest.school(
sid int(10) PRIMARY KEY auto_increment,
sname VARCHAR(10)
);
特点
- 默认初始值为1
- 一个表中只能由一个字段使用auto_increment,并且有唯一索引,避免序号重复
- 约束必须为 not null
- 只能为整数类型
- 约束字段的最大值受到数据类型的约束
指定自增约束初始值
-
创建表时指定
create table tableName(
id int primary key auto_increment,
name varchar(20)
)auto_increment = 100;
非空约束
-
概念
添加非空约束1
create table tableName(
filedName type(size) not null
)
添加非空约束2
alter table tableName modify filedName type(size);
非空约束有很多个
删除非空约束
alter table tableName modify filedName;
唯一约束
添加唯一约束1
fildName type unique;
添加唯一约束2
alter table tableName add constraint type unique;
删除唯一约束
alter table tableName drop index filedName;
默认约束
添加方式1
filedName type(size) default <默认值>;
####
CREATE TABLE fortest.sbook (
cname VARCHAR(20) NOT NULL,
caddress VARCHAR(40) DEFAULT "开封",
csex VARCHAR(4) DEFAULT "NULL"
)
添加方式2
alter table tableName modify 列名 filedName type default 默认值;
ALTER TABLE fortest.school MODIFY sname VARCHAR(10) DEFAULT "nothing";
varchar(size) 必须与 表中的相等
删除默认约束
alter table tableName modify filedName type default null;
ALTER TABLE fortest.school MODIFY sname VARCHAR(20) DEFAULT NULL;
零填充约束
增加
creat table tableName(
filedName type zerofill
)
CREATE TABLE fortest.spen(
stype int ZEROFILL
)
ALTER TABLE fortest.spen MODIFY slength int ZEROFILL;
删除
alter table tableName modify filedName filedName;
ALTER TABLE fortest.spen MODIFY slength int;