MySQL约束详接

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。

为什么需要约束?



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


从以下四个方面考虑:


d5a96914f7904cb3adbbe55e86676612.png

什么是约束

约束是表级的强制规定。

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

约束的分类

b64afc0e811d47669571c7087204b752.png2a9fe361b6504b52903f1185b59994d1.png76b53ac442cb4b67a3a451df178dda25.png

非空约束



关键字 NOT NULL


b09f5c101bec46f793cadd7e41fa6c5a.png

特点

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

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

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

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


  添加非空约束


CREATE TABLE 表名称(
 字段名 数据类型,  
 字段名 数据类型 NOT NULL,    
 字段名 数据类型 NOT NULL);

6dbea165dfce4d8289ea7b7cef7e9b3b.png


建表后


alter table 表名称 
modify 字段名 
数据类型 not null;

daf083a7541e4ba6ae8d42f559391424.png


删除非空约束


4bbd2327fe654fa9aa5aaab300095b86.pnga812ffc3e70a4b33a516f3467e841bc2.png


唯一性约束


关键字 UNIQUE


特点


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


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


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


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


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


添加唯一约束


310184590f8d4b28b0d15e9de66484f0.png


举例:


4709bef4664c4997a38db6da1c5c1826.png


删除唯一约束


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


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


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


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


dd2456a0a1ee4d76b7a49d3b32c10624.png

PRIMARY KEY 约束



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

关键字 primary key


特点

db0eafc1595d44beabcb01cc32c034de.pngd631797ba09d461c8ae52604df91ff9b.png



添加主键约束


建表时指定主键约束


6d77710355e74f3aa16866cde3dc2530.png

建表后增加主键约束

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

26475e2bb41c477ca3b72f4a9410e707.png

a94463d318874d4b8c4c2eeed98b1b26.png


删除主键约束


1e545d05e8424bad93ca23f64eb79124.png


自增列:AUTO_INCREMENT



作用 某个字段的值自增

关键字 auto_increment


e12092c24fc646768dc61de64957b138.png5e0800dec52d4aa6a263a7d238618765.png


如何指定自增约束


15b9acf620174b278250e9b2c4685b7d.png


建表后


alter table 表名称 
modify 字段名 数据类型 auto_increment;

fff50eff34b64eef93086f492565b268.png

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


FOREIGN KEY 约束



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

89722552c1504df0ac867b1c6b2fd236.png


FOREIGN KEY关键字



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


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


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


e56afb5e028e4300bbfe27908abe50cd.png9032b069e97946f8a865a0c78098487d.pngc39de72dc8444334bf6dd23445b697e1.png6a27b50fcf8747568c924404427d85a3.png0c1bfb8df85e45048bc18968930a9a0c.png721f0290131646e9a058e98c1ac3f26e.png


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


cbf6fbd24b9c4b188f26ca08a22d6619.png


删除外键约束


de0c4821220e46ccaa29666d3f479891.pngcefe1eaf476a4b1b8707bb3eb7911c00.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
25天前
|
存储 安全 关系型数据库
MySQL数据库约束条件概述及其重要性讨论。
正确地实现并管理好各类紧缩条件将直接影响到企业信息管理水平与服务质量,在当今大数据背景下更显得格外重要;任何设计师都需要深刻理解其原理与运作机晰承担起责任使得所托管资料安全稳固同时又具备良好伸缩灵活度迎合日益复杂商务需求变动.
79 11
|
10月前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(4-2)作者——LJS[含MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法]
24MySQL非空、唯一性、PRIMARY KEY、自增列/自增约束举例说明等详解步骤及常见报错问题对应的解决方法(4-2) 学不会你来砍我!!!
|
9月前
|
存储 SQL 关系型数据库
【MySQL基础篇】MySQL约束语法
文章介绍了MySQL中表的约束概念,包括非空、唯一、主键、默认和外键约束,以及如何在创建和修改表时指定这些约束。外键约束用于保持数据的一致性和完整性,文章通过示例展示了添加、删除外键的语法,并讨论了不同的删除/更新行为,如CASCADE和SETNULL。
【MySQL基础篇】MySQL约束语法
|
关系型数据库 MySQL
MYSQL-多表操作-外键约束
MYSQL-多表操作-外键约束
|
关系型数据库 MySQL
MYSQL:约束(主键约束)
MYSQL:约束(主键约束)
|
10月前
|
关系型数据库 MySQL 数据处理
MySQL函数与约束
MySQL 提供了丰富的函数和强大的约束机制,用于数据处理和完整性维护。通过掌握这些工具,可以有效地管理和分析数据库中的数据,确保数据的一致性和准确性。无论是在日常数据查询中使用内置函数,还是在数据库设计中应用各种约束,都是确保数据库系统稳定、高效运行的关键。希望本文对您理解和应用 MySQL 函数与约束有所帮助。
106 1
|
9月前
|
存储 关系型数据库 MySQL
MySQL(条件约束)
为了校验数据,让数据的正确性能够得到保证,约束,能够引进更多的检查操作,但是也会增加系统的成本开销
|
11月前
|
Ubuntu 关系型数据库 MySQL
ubuntu使用aliyun源+mysql删除有外键约束的数据+查看特定目录的大小
ubuntu使用aliyun源+mysql删除有外键约束的数据+查看特定目录的大小
153 4
|
12月前
|
SQL 关系型数据库 MySQL
MySQL中外键的使用及外键约束策略
这篇文章讨论了MySQL中使用外键的重要性,包括外键的概念、不使用外键可能导致的问题、如何设置外键约束以及不同的外键约束策略(如CASCADE和SET NULL),并通过示例演示了这些概念。
MySQL中外键的使用及外键约束策略
|
存储 关系型数据库 MySQL
MySQL数据库基础:约束
约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
176 1

推荐镜像

更多