MySql教程

MySQL约束汇总

本文主要是介绍MySQL约束汇总,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 数据库约束
    • 1.NOT NULL(必填项)
    • 2.UNIQUE(唯一约束)
    • 3.DEFAULT(默认值)
    • 4.PRIMARY KEY(主键约束)
      • auto_increment:
    • 5.FOREIGN KEY(外键约束)
    • 6.CHECK(约束)
  • 总结


数据库约束

1.NOT NULL(必填项)

not null 指示某列不能存储 NULL 值,也就是插入数据不能为空。

 create table student (
    id int,
    -- 学生姓名不能为空
    name varchar(20) not null
 );

在这里插入图片描述

2.UNIQUE(唯一约束)

保证某列的每行必须有唯一的值

create table student (
	-- id不能为空
    id int not null,
    -- 学号不能重复
    sn int unique
);

在这里插入图片描述

3.DEFAULT(默认值)

当数据没有指定值的时候,会给一个默认值。如果不显示指定默认值,默认值就为null

create table student (
	-- id不能为空
    id int not null,
    -- 学号不能重复
    sn int unique,
    -- 没给学生指定名字则为默认值 未命名
    name varchar(15) default '未命名'
);

在这里插入图片描述

4.PRIMARY KEY(主键约束)

主键就相当于: not null + unique
一张表只能有一个主键,主键就相当于一条记录的唯一身份标识,不能为且是唯一的

create table student (
	-- id设置为主键
    id int primary key,
    -- 不能重复
    sn int unique,
    -- 默认值
    name varchar(15) default '未命名'
);

在这里插入图片描述

auto_increment:

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1

create table student (
	-- id设置为主键
    id int primary key auto_increment,
    -- 不能重复
    sn int unique,
    -- 默认值
    name varchar(15) default '未命名'
);


在这里插入图片描述
自增主键,在MySQL内部维护了一个全局变量,每次插入的记录如果指定的是null,全局变量++
即使你删除了前面的一些数据,全局变量也不受影响,会继续++。
如果手动插入的值,超过当前的全局变量,全局变量就会直接更新。
就算表的数据清空了,全局变量还是会保存。除非把表删除。

注意:这样自增主键策略只是局限于单台数据库,如果是多个数据库(分表分库的情况),自增主键就无能为力了(没法保证id不重复)。

5.FOREIGN KEY(外键约束)

语法:

foreign key (字段名) references 主表(列)

外键是MySQL中比较复杂的一个约束,外键一般和主键搭配使用。
主键所在的表就是主表,而外键所在的表就是父表

定义外键需要注意几个点:

  1. 必须为主表定义一个主键且链接的也必须是主表的主键
  2. 往子表插入数据时,外键对应的数据在主表中必须存在
  3. 子表外键的数据类型必须和主表主键的数据类型一致
  4. 主表与子表建立连接后就产生了关联关系,此时就不能随便删除主表中的数据

代码示例:

创建一张学生表

-- 创建一个班级表,id为主键
create table class (
    id int primary key auto_increment,
    name varchar(20)
);

再创建一张班级表,通过学生表里的 class_id 字段来关联班级表中的主键id。
一个班级对应多个学生,一个学生对应一个班级

-- 创建一张学生表
create table student (
    id int primary key auto_increment,
    sn int unique,
    name varchar(15) not null,
    class_id int,
    foreign key (class_id) references class(id)
);

这样学生表就依赖于班级表存在了

6.CHECK(约束)

注意:在MySQL中使用此约束不会报错,但时没有任何效果。所以请忽略此约束。

总结

  1. not null :非空
  2. unique:唯一值
  3. default:默认值
  4. primary key (not null + unique) :主键,唯一标识
  5. foreign key :外键
  6. check:MySQL中此约束无效!

在这里插入图片描述

这篇关于MySQL约束汇总的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!