前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL【知识改变命运】08

MySQL【知识改变命运】08

作者头像
用户11319080
发布于 2024-10-17 11:29:28
发布于 2024-10-17 11:29:28
12900
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

数据库约束是关系型数据库的一个重要约束 主要保证数据插入的有效性(数据本身是否正确,关联关系是否正确) 人工检查数据工作量太大了,在数据库中定义一些约束,那么数据在写入数据库时候,就会帮助我们做一些检查。

1:约束的几个类型

类型

说明

NOT NULl非空约束

指定非空约束列不能出现NULL 值

DEFALUT 默认约束

当前没有给指定列值时候。默认使用默认值。

UNIQUE 唯一约束

指定唯一约束的列,这条列上面不能出现相同的值

FRIMARY KEY 主键约束

NOT NULL和UNIQUE的结合,可以指定一个或者多个列(复合主键),但是只能有一个主键,有助于数据的查询

POREIGN KEY 外键约束

外键约束关联两张表

CHECK 约束

用于限制或数据库表中的值,确保数据可靠性,准确性

2:NOT NULL非空约束

创建一个表:

创建一个学生表中,name一般不能为NULL,名字为那样就没有意义。我们就要给名字加上NOTNULL 非空约束条件;

我们查询表结构,就可以看出来NULL那一列为no表示不能为NULL值

这样name这一列添加NULL就会报错。

3:UNIQUE 唯⼀约束

当我们设置让一个列有唯一值时候,就可以给这列设置UNIQUE ,比如我们让id列为唯一值; 创建一个表:

我们给id列限制了UNIQUE,id就不能插入重复值,所有当第二次插入数据时候,就报错了,但是可以插入NULL

4:PRIMARY KEY 主键约束

主键约束唯⼀标识数据库表中的每条记录。 主键必须包含唯⼀的值,且不能包含 NULL 值。 每个表只能有⼀个主键,可以由单个列或多个列组成。 通常为每张表都指定⼀个主键,主键列建议使⽤BIGINT类型 比

主键=唯一+非空。 我们也可以给主键加入自增列标识:

我们在设置AUTO_INCREMENT前id列是不可以插入NULL,但是设置后,可以插入NULL,但是NULL会被转化id自增列的数据

在这里插入图片描述
在这里插入图片描述

我们也可以手动设置主键列的值auto_increment

下次auto_increment 就是从1001开始计数。

每个表只能有一个主键

但是一个主键可以包含多个列:

如果是复合健必须所有列都是一样的才能被判定为一样。、

替换,如果存在冲突则替换,不存在冲突则插⼊

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 语法
REPLACE [INTO] table_name
 [(column [, column] ...)]
VALUES
 (value_list) [, (value_list)] ...
value_list: value, [, value] ...

4.1:回顾

接下来介绍一下自增操作: 自增操作不管插入数据失败还是成功都不会回退,自增操作在插入的前面。

5:FOREIGN KEY 外键约束

外键⽤于定义主表和从表之间的关系 外键约束主定义在从表的列上,主表关联的列必须是主键或唯⼀约束 当定义外键后,要求从表中的外键列数据必须在主表的主键或唯⼀列存在或为null。

5.1:创建班级表(主表),并初始化数据

5.2:重构学⽣表(从表),加⼊外键约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 语法:
foreign key (id) references class(id)
drop table if exists student;



# 重构表
create table student(
id bigint PRIMARY KEY auto_increment, 
 name varchar(20) not null,
 age int DEFAULT 18,
 class_id bigint,
 foreign key (class_id) references class(id) # 创建外键约束
);

查看表结构,Key列的值为MUL表⽰外键约束的列

正常插⼊数据

插⼊⼀个班级号为100的学⽣,由于主表中没有这个班级,插⼊失败

插⼊班级Id为NULL的记录,可以成功,表⽰当前学⽣还没有分配置班级

删除主表某条记录时,从表中不能有对该记录的引⽤

删除主表某条记录时,从表中不能有对该记录的引⽤

删除主表时要先删除从表

6:DEFALUT 默认值约束

DEFAULT 约束⽤于向列中插⼊默认值,如果没有为列设置值,那么会将默认值设置到该列 语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DEFALUT 默认值

7:CHECK 约束

可以应⽤于⼀个或多个列,⽤于限制列中可接受的数据值,从⽽确保数据的完整性和准确性。在8.0.16开始全⾯⽀持CHECK约束,之前的版本会忽略CHECK的定义 但是注意,一般再应用程序级别校验

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table student(
 id bigint PRIMARY KEY auto_increment, # 设置⾃增主键
 name varchar(20) not null,
 age int DEFAULT 18,
 gender char(1),
 check (age >= 16),
 check (gender = '男' or gender = '⼥')
);

列与列之间也可以⽐较,需要在单独⼀⾏中定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table t_check (
 c1 int check(c1 <> 0),
 c2 int check(c2 > 0),
 c3 int,
 check(c3 >= c2)
);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
表的约束(MySQL)
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。
ljw695
2025/05/31
630
表的约束(MySQL)
【MySQL基础篇】五、表的约束
​ 表中一定要有各种约束,通过约束让我们在未来使用数据库的时候,操作的结果都能是符合预期的!约束的本质就是通过技术手段倒闭程序员插入正确的数据!
利刃大大
2025/05/21
950
【MySQL基础篇】五、表的约束
【MySQL】不可忽视的数据库约束,维护数据秩序的幕后英雄
引言 在数据库管理的世界里,有一群默默无闻却又至关重要的“幕后英雄”——数据库约束。它们如同忠诚的卫士,时刻守护着数据的完整性和一致性,确保数据库系统的稳定运行。然而,在实际的数据库设计和开发过程中,数据库约束的重要性常常被忽视,导致数据混乱、错误频出。今天,我们就来深入探讨一下数据库约束的奥秘,以及它们在维护数据秩序方面的关键作用。
学无止尽5
2025/05/12
1480
【MySQL】不可忽视的数据库约束,维护数据秩序的幕后英雄
MySQL数据库基础:约束
如果已经手动指定了null的话,就按照手动指定的,用户指定的优先级高于默认的优先级
2的n次方
2024/10/15
1600
MySQL数据库基础:约束
MySQL常见约束条件「建议收藏」
约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败! 约束条件在创建表时可以使用, 也可以修改表的时候添加约束条件
全栈程序员站长
2022/11/04
1.7K0
【MySQL】表的约束
表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼用户,插入正确的数据。反过来,在 mysql 角度,凡是插入进来的数据,都是符合数据约束的!约束的最终目的就是保证数据的完整性和可预期性。因此我们需要更多的约束条件!
YoungMLet
2024/03/01
3330
【MySQL】表的约束
【MySQL探索之旅】MySQL数据表的增删查改——约束
对于整数类型的主键,常配搭自增长 auto_increment来使用。插入数据对应字段不给值时,使用最大 值 +1 ,而不是前一条记录 +1。
爱敲代码的小杨.
2024/05/07
1520
【MySQL探索之旅】MySQL数据表的增删查改——约束
【MySql】表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。约束的最终目标:保证数据的完整性和可预期性所以需要更多的约束。 表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primarykey,auto_increment,unique key 。
平凡的人1
2023/10/15
4700
【MySql】表的约束
一篇文章带你彻底了解MySQL各种约束
MySQL约束 <1> 概念 是一种限制,它是对表的行和列的数据做出约束,确保表中数据的完整性和唯一性。 <2> 使用场景 创建表的时候,添加约束 <3> 分类 default: 默认约束, 域完整性 not null: 非空约束,域完整性 unique: 唯一约束,实体完整性 primary key: 主键约束,实体完整性 foreign key: 外键约束,参照完整性 check: 检查约束(MySQL不支持),域完整性 auto_increment: 自增长约束 unsigned: 无符号约束 zer
ruochen
2021/02/14
1.1K0
一篇文章带你彻底了解MySQL各种约束
MySQL约束
约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。
阿年、嗯啊
2021/04/27
1.8K0
MySQL【知识改变命运】09
上面这个表就不符合第一范式,因为学校是一个对象,学校还可以再分,并且学校无法用基本数据类型表示。
用户11319080
2024/10/21
1460
MySQL【知识改变命运】09
MySQL 约束介绍
给某个字段/某列指定默认值,一旦设置默认值,在插入数据时,如果此字段没有显式赋值,则赋值为默 认值。
久绊A
2023/04/10
1.7K0
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解
在MySQL数据库中,约束是一种对数据表中数据进行限制和检查的方法,可以保证数据表中数据的完整性和一致性。本文将深入剖析MySQL中的各种约束,包括非空约束、唯一性约束、主键约束、自增列、外键约束、默认值约束以及CHECK约束等等,同时结合开发场景给出约束使用和实践的技巧和方法,帮助读者更好地掌握MySQL中数据表相关操作的技巧和方法。
默 语
2024/11/20
4570
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解
再谈表的约束
auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。 自增长的特点:
南桥
2024/08/15
1090
再谈表的约束
MySQL 约束
为了保证数据的完整性,SQL 规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:
恋喵大鲤鱼
2023/10/12
6130
⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....
NO ACTION:在父表进行更新/删除时,首先检查记录是否存在外键,存在则不允许删除/更新。(与RESTRICT行为一致)
.29.
2023/11/15
7250
⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、外键、非空....
Mysql之表的约束
案例:创建班级表时,班级名和教室名都设置为 NOT NULL,保证每个班级都有名称和教室。
猫咪-9527
2025/03/21
1260
Mysql之表的约束
【MySQL】数据库约束
喜欢做梦
2025/04/20
1900
【MySQL】数据库约束
【MYSQL】表的约束
可以看到我们插入空值的时候,这里是会报错的。 注:空字符串和null是不同的,这里可以插入空串,但是不能插入空数据。
青衫哥
2023/11/11
4420
【MYSQL】表的约束
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
这篇文章只是对以前的内容作个详细补充,想要速成操作的,可以参考这篇博客 【MySQL学习】:关系数据库标准语言SQL
IsLand1314
2025/02/09
1350
【Mysql】:linux环境下表的三部曲(数据操作 + 类型解析 + 约束规则)
相关推荐
表的约束(MySQL)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验