首页 > 技术文章 > MySQL约束

yuknight 2020-05-05 23:46 原文

202054

23:05

1、类型

分类

介绍

Not null

非空约束,用于指定改字段不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值, 数据库系统会报错。

default

默认值,用于指定字段的默认值,如果插入数据时没有插入值,则会使用默认值作为数据

unique

唯一值,唯一值,允许为空,但只得一个。确保这一字段中的数据为唯一值。

Primary key

主键,用于保证该字段的唯一性且不能为空,

foreign

外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性, 一个表的外键可以为空值, 若不为空值,贝lj每一个外键值必须等于另一个表中主键的某个值。

check

(MySQL中不支持)用于检查数据是否符合范围,

   

2、添加时机

  • 创建表时
  • 修改表时

3、约束添加类型

  • 列级约束

语法上,六种约束类型都支持在列中写,但是外键约束不起作用。

  • 表级约束

除了非空和默认都可以写。

4、使用方法

  • 添加列级约束
    • 案例
Create table table_constraint(

id int primary key auto_increment,#主键自增

name varchar(20) unique,#唯一姓名

sex varchar(2) default '',#默认性别

QQ int(11) not null#不能为空

);
  • 添加表级约束
    • 案例:
create table table_constraint(

id int,

name varchar(20),

gender char(1),

age int,

majorid int,

constraint pk primary key(id),

constraint uq unique(name),

constraint ck check(gender = '' or gender=''),

constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束

);
  • 常用的约束添加方法
Create table if not exists table_constraint(

id int primary key auto_increment,#主键自增

name varchar(20) unique,#唯一姓名

sex varchar(2) default '',#默认性别

QQ int(11) not null#不能为空

constraint fk_bookinfo_major foreign key (majorid) references major (id) #外键约束

);

5、区别

约束

是否可以为null

保证唯一性

一个表中可以有多少个

是否可以组合

主键

不可以

可以

至多一个

可以,但不推荐

唯一

可以,但是只能有一个为null

可以

可以包含多个

可以,但不推荐

   

6、外键特点

  • 要求再从表中设计外键关系
  • 要求主键的类型要和关联的列的类型一致并且要求一致,名称无要求
  • 要求必须先添加主表后创建从表的外键
  • 关联的字段必须是一个key(一般是主键或者是唯一)
  • 插入数据时要先插入主表后插入从表
  • 删除数据时要先删除从表后删除主表

7、修改时添加约束

  • 添加非空
alter table table_constraint modify column name varchar(20) not null;
  • 添加默认
alter table table_constraint modify column gender char(1) default '';
  • 添加主键
    • 列级约束
alter table table_constraint modify column id int primary key;
    • 表级约束
alter table table_constraint add primary key(id);
  • 添加唯一
    • 列级约束
alter table table_constraint modify column id int unique;
    • 表级约束

 

alter table table_constraint add unique(name);   
  • 添加外键
    • 列级约束
alter table table_constraint modify column id int primary key;
    • 表级约束
alter table table_constraint add foreign key (majorid) references major(id);

8、修改时删除约束(修改)

  • 删除非空
    alter table table_constraint modify column name varchar(20) null;
  • 删除默认
    alter table table_constraint modify column gender char(1);
  • 删除主键
    alter table table_constraint drop primary key;
  • 删除外键
    alter table table_constraint drop foreign key majorid;
  • 删除唯一
    alter table table_constraint drop indexname;

      

推荐阅读