前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL约束详接

MySQL约束详接

作者头像
一个风轻云淡
发布2022-11-13 10:59:59
1.8K0
发布2022-11-13 10:59:59
举报
文章被收录于专栏:java学习java

为什么需要约束?

数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。

从以下四个方面考虑:

什么是约束

约束是表级的强制规定。

可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定约束。

 约束的分类

非空约束 

 关键字 NOT NULL

 特点

默认,所有的类型的值都可以是NULL,包括INT、FLOAT等数据类型

非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空

一个表可以有很多列都分别限定了非空

空字符串''不等于NULL,0也不等于NULL

 添加非空约束

代码语言:javascript
复制
CREATE TABLE 表名称(
 字段名 数据类型,  
 字段名 数据类型 NOT NULL,    
 字段名 数据类型 NOT NULL);

 建表后

代码语言:javascript
复制
alter table 表名称 
modify 字段名 
数据类型 not null;

 删除非空约束 

 唯一性约束 

关键字 UNIQUE

特点 

同一个表可以有多个唯一约束。

唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。

唯一性约束允许列值为空。在创建唯一约束的时候,

如果不给唯一约束命名,就默认和列名相同。

MySQL会给唯一约束的列上默认创建一个唯一索引。

添加唯一约束

举例: 

  删除唯一约束

添加唯一性约束的列上也会自动创建唯一索引。

删除唯一约束只能通过删除唯一索引的方式删除。

删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样。

如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。

PRIMARY KEY 约束 

 作用 用来唯一标识表中的一行记录。

关键字 primary key

特点

 添加主键约束

建表时指定主键约束

 建表后增加主键约束

代码语言:javascript
复制
ALTER TABLE 表名称 ADD
 PRIMARY KEY(字段列表);
 #字段列表可以是一个字段,也可以是多个字段,
#如果是多个字段的话,是复合主键

删除主键约束 

 自增列:AUTO_INCREMENT

作用 某个字段的值自增

关键字 auto_increment

如何指定自增约束 

 建表后

代码语言:javascript
复制
alter table 表名称 
modify 字段名 数据类型 auto_increment;

 MySQL 8.0将自增主键的计数器持久化到重做日志中。每次计数器发生改变,都会将其写入重做日志中。如果数据库重启,InnoDB会根据重做日志中的信息来初始化计数器的内存值。

FOREIGN KEY 约束

作用 限定某个表的某个字段的引用完整性。比如:员工表的员工所在部门的选择,必须在部门表能找到对应的部分。

FOREIGN KEY关键字

 主表和从表/父表和子表 主表(父表):被引用的表,被参考的表从表(子表):引用别人的表,参考别人的表

例如:员工表的员工所在部门这个字段的值要参考部门表:部门表是主表,员工表是从表。

例如:学生表、课程表、选课表:选课表的学生和课程要分别参考学生表和课程表,学生表和课程表是主表,选课表是从表。

总结:约束关系是针对双方的添加了外键约束后,主表的修改和删除数据受约束添加了外键约束后,从表的添加和修改数据受约束在从表上建立外键,要求主表必须存在删除主表时,要求从表从表先删除,或将从表中外键引用该主表的关系先删除

删除外键约束 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 非空约束 
    •  添加非空约束
      •  唯一性约束 
        • PRIMARY KEY 约束 
          •  自增列:AUTO_INCREMENT
            • FOREIGN KEY 约束
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档