MySQL约束

洲行

关注

阅读 77

2022-01-22

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)
)

添加联合主键

注意

  1. 联合主键不能直接在字段名后声明主键约束。
  2. 一张表只能有一个主键,联合主键也是一个主键
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. 默认初始值为1
  2. 一个表中只能由一个字段使用auto_increment,并且有唯一索引,避免序号重复
  3. 约束必须为 not null
  4. 只能为整数类型
  5. 约束字段的最大值受到数据类型的约束

指定自增约束初始值

  1. 创建表时指定

    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;

精彩评论(0)

0 0 举报