「MySQL」数据库约束

这篇具有很好参考价值的文章主要介绍了「MySQL」数据库约束。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎇个人主页:Ice_Sugar_7
🎇所属专栏:数据库
🎇欢迎点赞收藏加关注哦!


所谓约束,就是在创建表时给这个表指定一些规则,后续插入、修改、删除操作都要遵循这些规则
引入规则是为了进行更强的数据校验

🍉约束类型

🍌NOT NULL

  • NOT NULL - 指示某列不能存储 NULL 值
    「MySQL」数据库约束,数据库,数据库,mysql,android

🍌UNIQUE

  • UNIQUE - 保证某列的每行必须有唯一的值,加入 unique 约束之后,后续进行插入、修改时都会先进行查询,看当前这个值是否已经存在
    「MySQL」数据库约束,数据库,数据库,mysql,android
    如果插入重复的 id 那就会报错:
    「MySQL」数据库约束,数据库,数据库,mysql,android

🍌DEFAULT

  • DEFAULT - 规定没有给列赋值时的默认值,默认情况下默认值为NULL。进行指定列插入时,没有指定到的列就会被设为默认值
    default 放在你想给默认值的列的后面
    「MySQL」数据库约束,数据库,数据库,mysql,android

🍌主键

  • PRIMARY KEY - 主键,是数据库中最重要的约束,它相当于是 NOT NULL 和 UNIQUE 的结合。用来作为一个记录的身份标识,有助于更容易更快速地找到表中的一个特定的记录。一个表中只能有一个主键
    注意:我们通常是将 xxx id(比如 student_id、class_id 这些)设为主键

语法为:

主键 数据类型 primary key;

既然主键不允许重复,那具体该怎么保证不重复呢?MySQL提供了一种机制——自增主键。主键可以通过 auto_increment 关键字来实现自增功能

「MySQL」数据库约束,数据库,数据库,mysql,android
举个例子:
「MySQL」数据库约束,数据库,数据库,mysql,android

然后关于自增的规则有一点需要注意,自增是从当前列的最大值继续递增下去,举个例子:

「MySQL」数据库约束,数据库,数据库,mysql,android

上面这个例子,就算我们再手动插个3下去,下一次照样是从9开始递增


🍌外键

  • FOREIGN KEY - 外键,保证一个表中的数据匹配另一个表中的值的参照完整性

语法:把前面所有列都定义好之后,在最后面通过 foreign key 创建外键约束
假设现在有两个表:记录学生信息的学生表(学生在几班)、记录班级信息的班级表

create table class(classId int primary key);
create table student(name varchar(10),classId int,foreign key(classId) references class(classId));

这种情况下,我们可以认为班级表约束了学生表,我们把班级表这种约束别人的表,称为父表;把学生表这种被别人约束的表,称为子表
从语法上看,我们是在创建子表时建立外键约束,其中子表需要约束的列位于foreign key后面,父表的列位于references的后面

那么外键是如何进行约束的呢?

省流:使用外键约束时,操作子表,要先查询父表;操作父表,也要先查询子表

下面我们通过一个例子来了解一下:

mysql> insert into students values('张一',1,1);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`students`, CONSTRAINT `students_ibfk_1` FOREIGN KEY (`classid`) REFERENCES `class` (`id`))
# 报错,因为此时班级表中没有 id 为 1 的记录

mysql> insert into class values(1),(2),(3);
mysql> insert into students values('张一',1,1); # 插入成功


mysql> insert into student values('张一',1);  
Query OK, 1 row affected (0.00 sec)  #插入成功
mysql> insert into students values('张三',2,4); # 报错,因为班级表中没有 4 这个记录

通过上面往子表插入记录的例子我们可以得到这样的结论:引入外键约束之后,新增一个记录,就会先在对应的父表中查询,看看是否存在,如果不存在,就会报错

外键约束其实是双向的,就是说表面上看是父表约束了子表,但与此同时,子表对父表也是有约束的,比如刚才我们在班级表中创建了3个班级,现在要删除1班,就会报错

mysql> delete from class where id = 1;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`test`.`students`, CONSTRAINT `students_ibfk_1` FOREIGN KEY (`classid`) REFERENCES `class` (`id`))

尝试删除 or 修改父表中的记录时,也会先查询子表看看当前这个结果是否在子表中被引用,如果被引用,那就没法删除
要想删除父表这个记录,我们必须先删除子表中对应数据,确保子表中没有数据引用父表的记录,才能执行删除

不难看出,使用外键约束时,会伴随很多查询操作,而如果表的数据很多,那么查询就会非常低效
为了让上述查询操作更高效一些,往往需要让子表中的列和父表中被引用的列,都要带有“索引”

那这个“索引”是啥?

我们前面创建班级表的时候,将 classid 设为主键,当表里有了主键之后,就会自动创建出索引,就可以加快查询速度
注意:如果没把 classid 设为主键,那么在创建学生表使用外键约束就会报错,因为父表被引用的列得带有索引,才能被子表引用


🍌CHECK

  • CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句

不过MySQL并不支持这个操作,就是说我们可以写check,不会报错,但是check并没有真正生效(oracle之类就支持这种操作)文章来源地址https://www.toymoban.com/news/detail-843824.html

到了这里,关于「MySQL」数据库约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库 12:约束

    在MySQL中, 约束是一种限制数据表中列值的规定 。保证数据库中的数据正确,有效性和完整性。MySQL中的约束有以下几种: 1. 主键约束(Primary Key Constraint) :主键是用于唯一标识表中每行记录的列。主键约束要求 每个主键列的值都是唯一的,且不能为NULL 。一个表只能有一

    2024年02月08日
    浏览(35)
  • MySQL:数据库的约束

    目录 1.数据库约束 1.1 非空:not null 1.2 唯一:unique         ​​​​​​​ 1.3 默认值:default 1.4 列描述:comment 1.5 主键约束:primary key 1.6 外键约束 1.7 综合案例 2.插入查询结果 3.聚合函数 4.group by(分组查询) 关系型数据库的一个重要功能,就是需要保证数据的完整性

    2024年02月05日
    浏览(76)
  • 【MySQL数据库 | 第十二篇】:约束

    在MySQL中, 约束是一种限制数据表中列值的规定 。保证数据库中的数据正确,有效性和完整性。MySQL中的约束有以下几种: 1. 主键约束(Primary Key Constraint) :主键是用于唯一标识表中每行记录的列。主键约束要求 每个主键列的值都是唯一的,且不能为NULL 。一个表只能有一

    2024年02月08日
    浏览(38)
  • MySQL数据库:数据库的约束以及数据的聚合、联合查询

    目录 一.关系模型的简要概述 二.数据库的约束  2.1约束类型         2.2NULL约束 2.3 UNIQUE:唯一约束 2.4 默认约束 2.5 PRIMARY KEY:主键约束 2.6 FOREIGN KEY:外键约束 2.7 CHECK约束 三.高效率查询 3.1高效率查询的分类 3.2聚合查询 3.2.1聚合函数 3.2.2 GROUP BY子句 3.2.3HAVING 3.3.联合查询

    2024年02月10日
    浏览(53)
  • MySQL数据库基础(九):SQL约束

    文章目录 SQL约束 一、主键约束 二、非空约束 三、唯一约束 四、默认值约束 五、外键约束(了解) 六、总结 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。 遵循原

    2024年02月19日
    浏览(46)
  • 【数据库】MySQL数据约束和表关系详解

    目录 1.数据库约束 1.1约束类型 1.2NULL约束 1.3UNIQUE:唯一约束 1.4DEFAULT:默认值约束 1.5PRIMARY:主键约束 1.6FOREIGH KEY:外键约束 2.表的关系 2.1一对一 2.2一对多 2.3多对多 数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候

    2024年02月04日
    浏览(35)
  • 【MySQL】一文带你了解数据库约束

    作用: 数据库约束是用于限制数据输入或数据更新的规则。数据库约束确保在表中只能插入符合规则的数据,以确保数据的完整性和一致性。 常见的数据库约束包括: 主键约束:用于唯一标识表中的每一行数据,确保数据唯一性和完整性。 外键约束:用于确保表之间数据的

    2024年02月08日
    浏览(50)
  • MySQL的约束类型、数据库操作、数据表操作大全(简述)

    目录 一.数据库的操作语法 二.MySQL数据库约束 三.数据类型 四.数据表操作 作者简介:  tq02,一个想成为编程高手的梦中人 作者主页:  tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 学习专栏:  🎥  MySQL基础          🎥  JavaSE                🎥   C语言 本

    2024年02月12日
    浏览(61)
  • {MySQL} 数据库约束& 表的关系& 新增&&删除& 修改& 查询

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 承接上文,继续讲一下MySQL 提示:以下是本篇文章正文内容,下面案例可供参考 NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值

    2024年02月03日
    浏览(41)
  • MySQL数据库干货_11—— MySQL中的非空约束(Not Null)

    非空约束(Not Null) 添加非空约束 使用DDL语句添加非空约束。 示例: 向 emp 表中的 salary 添加非空约束。 删除非空约束 使用DDL语句删除非空约束。 示例: 删除emp表中salary 的非空约束。 创建表时添加约束 查询表中的约束信息: 示例: 创建 depts 表包含 department_id 该列为主键且

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包