13_MySQL中的约束(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 13_MySQL中的约束(一)

1. 约束(constraint)概述


1.1 为什么需要约束


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

实体完整性( Entity Integrity ) :例如,同一个表中,不能存在两条完全相同无法区分的记录

域完整性( Domain Integrity ) :例如:年龄范围 0-120 ,性别范围 “ 男 / 女 ”

引用完整性( Referential Integrity ) :例如:员工所在部门,在部门表中要能找到这个部门

用户自定义完整性( User - defined Integrity ) :例如:用户名唯一、密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5 倍。


1.2 什么是约束


约束是表级的 强制规定 。

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


1.3 约束的分类


根据约束数据列的限制,约束可分为:

单列约束:每个约束只约束一列

多列约束:每个约束可约束多列数据

根据约束的作用范围,约束可分为:

列级约束:只能作用在一个列上,跟在列的定义后面

表级约束:可以作用在多个列上,不与列一起,而是单独定义

                  位置                       支持的约束类型                             是否可以起约束名

列级约束: 列的后面                语法都支持,但外键没有效果       不可以

表级约束: 所有列的下面         默认和非空不支持,其他支持       可以(主键没有效果)

根据约束起的作用,约束可分为:

NOT NULL 非空约束,规定某个字段不能为空

UNIQUE 唯一约束,规定某个字段在整个表中是唯一的

PRIMARY KEY 主键(非空且唯一)约束

FOREIGN KEY 外键约束

CHECK 检查约束

DEFAULT 默认值约束

注意:MySQL不支持check约束,但可以使用check约束,而没有任何效果

查看某个表已有的约束


#information_schema数据库名(系统库)
#table_constraints表名称(专门存储各个表的约束)
SELECT * FROM information_schema.table_constraints
WHERE table_name = '表名称';


SELECT * FROM information_schema.table_constraints
WHERE table_name = 'employees';


5d7614b59b99ff47b6486e7ec719a632_41f5a68b5f8b4c3e8d5aaa79328deb75.png


2. 非空约束


2.1 作用


限定某个字段 / 某列的值不允许为空


fc1b00898c332b9e879ffb5a7d110320_38cdb607d2a642929e0e4257da4860d9.png


2.2 关键字


NOT NULL


2.3 特点


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

FLOAT等数据类型

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

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

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


2.4 添加非空约束


(1)建表时


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


(2)建表后


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


2.5 删除非空约束


alter table 表名称 modify 字段名 数据类型 NULL;#去掉not null,相当于修改某个非注解字段,
该字段允许为空
alter table 表名称 modify 字段名 数据类型;#去掉not null,相当于修改某个非注解字段,
该字段允许为空


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL
MYSQL-多表操作-外键约束
MYSQL-多表操作-外键约束
|
3月前
|
关系型数据库 MySQL
MYSQL:约束(主键约束)
MYSQL:约束(主键约束)
|
12天前
|
存储 关系型数据库 MySQL
MySQL数据库基础:约束
约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
28 1
|
1月前
|
数据采集 关系型数据库 MySQL
在 MySQL 中使用约束
【8月更文挑战第11天】
35 0
在 MySQL 中使用约束
|
3月前
|
SQL 关系型数据库 MySQL
MySQL----约束
MySQL----约束
27 1
|
3月前
|
数据采集 关系型数据库 MySQL
MySQL数据库基础第三篇(约束)
MySQL数据库基础第三篇(约束)
|
3月前
|
关系型数据库 MySQL
MYSQL约束(自增长,以及非空约束)
MYSQL约束(自增长,以及非空约束)
|
3月前
|
存储 关系型数据库 MySQL
【MySQL技术内幕】4.6-约束
【MySQL技术内幕】4.6-约束
34 1
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)一
40 5
|
3月前
|
存储 关系型数据库 MySQL
【MySQL】表的约束
【MySQL】表的约束

热门文章

最新文章