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;










