DataBase【MySQL基础夯实使用说明(下)】

MySQL数据库

🏆当领导表示关心时,您怎么回复?
⚠️不要傻傻的说应该的,这样不仅会抹杀掉你的辛苦,也让领导没办法接话!
🔔文章末尾彩蛋!


文章目录

  • MySQL数据库
  • 前言
  • 一、约束
    • 1.1.外键约束
      • 1.1.1. 外键约束删除/更新行为
  • 二、多表查询
    • 2.1.多表关系
    • 2.2.多表查询分类
      • 2.2.1.消除笛卡尔积集
      • 2.2.2.连接查询
        • 2.2.2.1.内连接
        • 2.2.2.2.外连接
          • 2.2.2.2.1.左外连接
          • 2.2.2.2.2.右外连接
      • 2.2.3.自连接
      • 2.2.4.联合查询【union】【union all】
      • 2.2.5.子查询
  • 彩蛋


前言

在信息技术飞速发展的当下,数据的价值日益凸显,如同深埋地下的宝藏,等待着被挖掘和利用。而数据库管理系统,就像是开启这座宝藏的钥匙,其中 MySQL 更是这把钥匙中的佼佼者。它凭借自身独特的优势,在开源数据库领域中占据着举足轻重的地位,广泛应用于从个人网站到大型企业级应用的各个角落。本文将深入剖析 MySQL,从它的诞生背景、核心特性,到存储引擎的奥秘,以及丰富多样的应用场景,带你全方位认识这款备受瞩目的数据库管理系统,探寻它在数据管理世界中长盛不衰的秘诀。


提示:以下是本篇文章正文内容,下面案例仅供学习参考:

一、约束

约束是作用于表中字段上的规则,用于限制存储在表中的数据。以此来保证数据库中数据的正确、有效性和完整性。

约束描述关键字
非空约束限制该字段的数据不能为nulNOT NULL
唯一约束保证该字段的所有数据都是唯一、不重复的UNIQUE
主键约束主键是一行数据的唯一标识,要求非空且唯一PRIMARY KEY
默认约束保存数据时,如果未指定该字段的值,则采用默认值DEFAULT
外键约束用来让两张表的数据之间建立连接,保证数据的一致性和完整性FOREIGN KEY
检查约束保证字段值满足某一个条件CHECK

⭐️约束是作用在表字段上的,可以在创建数据库或修改表的时候添加约束!

1.1.外键约束

外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性!

语法:

-- 建表时添加外键
CREATE TABLE 表名(字段名 字段类型,...[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
);
-- 建表后添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);
-- 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

1.1.1. 外键约束删除/更新行为

行为说明
NO ACTION当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与 RESTRICT一致)
RESTRICT当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与 NO ACTION 一致)
CASCADE当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
SET NULL当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为nul(这就要求该外键允许取null)
SET DEFAULT父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持)

语法:

-- 用于外键的删除和更新
ALTER TABLE 表名 
ADD CONSTRAINT 外键名称 
FOREIGN KEY (外键字段) 
REFERENCES 主表名(主表字段名) 
ON UPDATE CASCADE 
ON DELETE CASCADE;
  • ON UPDATE CASCADE 是一种级联更新操作。当主表中被关联的字段(主表字段名)的值发生更新时,当前表中对应的外键字段的值也会自动进行相同的更新。这样可以确保两个表之间的数据一致性。
  • ON DELETE CASCADE 是一种级联删除操作。当主表中的某条记录被删除时,当前表中所有外键字段值与该记录主表字段值匹配的记录也会被自动删除。同样,这也是为了保证数据的一致性和完整性。

二、多表查询

在 SQL 里,多表查询指的是从两个或多个表中提取数据的操作。当数据分散存储在不同表中,而你又需要将这些数据关联起来进行分析时,就会用到多表查询。同时也是为了避免数据冗余、以此来提高数据的存储效率和可维护性!

2.1.多表关系

在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:

关系如何实现
一对一在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
一对多(多对一)在多的一方设立外键,指向一方的主键
多对多建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

2.2.多表查询分类

2.2.1.消除笛卡尔积集

-- 笛卡尔积【笛卡尔积是指两个集合中所有可能的元素组合。对于数据库表来说,就是将第一个表的每一行与第二个表的每一行进行组合,最终生成的结果集行数为两个表行数的乘积。】
-- 在多表查询时,需要消除无效的笛卡尔积!
SELECT [字段] FROM 表名1,表名2 WHERE 表名1.字段 = 表名2.字段;

2.2.2.连接查询

2.2.2.1.内连接

相当于两张表的交集数据!

隐式内连接语法:

SELECT 字段列表 FROM1,2 WHERE 条件...;

显式内连接语法:

SELECT 字段列表 FROM1 INNER JOIN2 ON 连接条件;

2.2.2.2.外连接
2.2.2.2.1.左外连接

查询左表的所有数据,以及两张表交集的部分!

左外连接语法:

SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;
2.2.2.2.2.右外连接

查询右表的所有数据,以及两张表交集的部分!

右外连接语法:

SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

2.2.3.自连接

当前表与自身的连接查询,其可以是内连接,也可以是外连接!自连接必须使用表别名!

自连接语法:

SELECT 字段列表 FROM1 别名1 JOIN1 别名2 ON 条件;

2.2.4.联合查询【union】【union all】

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集!

  • union all:直接将符合条件的数据显示出来,不会进行去重!
  • union:将符合条件的数据显示出来并进行去重!

语法:

SELECT 字段列表 FROM1
UNION [ALL]
SELECT 字段列表 FROM2 ...;

⚠️对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致!


2.2.5.子查询

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询!

语法:

SELECT 字段列表 FROM1
WHERE column =(
SELECT column FROM2
);

⭐️子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT 的任何一个!

子查询结果分类:

  • 标量子查询(子查询结果为单个值,常用的操作符:= <>、>、>=、<、<=)
  • 列子查询(子查询结果为一列,常用的操作符:IN、NOT IN、ANY、SOME、ALL)
操作符描述
IN在指定的集合范围之内,多选一
NOT IN不在指定的集合范围之内
ANY子查询返回列表中,有任意一个满足即可
SOME与ANY等同,使用SOME的地方都可以使用ANY
ALL子查询返回列表的所有值都必须满足
  • 行子查询(子查询结果为一行,常用的操作符:=、<>、IN、NOTIN)
  • 表子查询(子查询结果为多行多列,常用的操作符:IN)

⭐️根据子查询位置,分为:WHERE之后、FROM之后、SELECT之后!


彩蛋

👑谢谢领导的关心,这段时间虽然大家都挺忙的,但只要项目成功这些都是值得的!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/17199.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ与kafka如何解决消息丢失问题?

0 前言 消息丢失基本是分布式MQ中需要解决问题&#xff0c;消息丢失时保证数据可靠性的范畴。如何保证消息不丢失程序员面试中几乎不可避免的问题。本文主要说明RocketMQ和Kafka在解决消息丢失问题时&#xff0c;在生产者、Broker和消费者之间如何解决消息丢失问题。 1.Rocket…

APP端网络测试与弱网模拟!

当前APP网络环境比较复杂&#xff0c;网络制式有2G、3G、4G网络&#xff0c;还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异&#xff0c;都会对用户使用app造成一定影响。另外&#xff0c;当前app使用场景多变&#xff0c;如进地铁、上公交、进电梯等&#xff0c;使…

deepseek-r1 训练流程

deepseek-r1 训练流程 技术创新deepseek-v3 && deepseek-r1deepseek-r1-zero训练过程aha moment准确度提升思考时间增加 deepseek-r1冷启动推理场景强化学习数据采样&&SFT全场景强化学习结果 参考文献 技术创新 极致的成本控制&#xff0c;媲美openAI的性能&a…

网络工程师 (35)以太网通道

一、概念与原理 以太网通道&#xff0c;也称为以太端口捆绑、端口聚集或以太链路聚集&#xff0c;是一种将多个物理以太网端口组合成一个逻辑通道的技术。这一技术使得多个端口能够并行工作&#xff0c;共同承担数据传输任务&#xff0c;从而提高了网络的传输能力和可靠性。 二…

win11电脑其他WiFi可以连,只有一个WiFi连不上

这个问题卡了一小会&#xff0c;查了一些资料 后面发现 点击“诊断网络问题” 显示没有响应 第一步 重启wlan网络适配器 解决&#xff01;&#xff01;&#xff01; 重新连接那个有问题的wifi&#xff0c;丝滑连接&#xff01;

【网络通信】传输层之UDP协议

【网络通信】传输层之UDP协议 传输层端对端通信实现端到端通信的关键技术 UDP协议再谈端口号端口号划分关于端口号的两个问题 UDP协议基本格式UDP通信的特点UDP的缓冲区UDP数据报的最大长度基于UDP的应用层协议如何封装UDP报文以及如何交付UDP报文进一步理解封装和解包 传输层 …

时间盲注、boolen盲注

获取当前数据库名 获取数据库表 获取表的列

2025_2_13 二叉搜索树(一)

1.完全二叉树和满二叉树的概念 满二叉树&#xff1a;每一层都达到最大值 完全二叉树&#xff1a;只能右下角空&#xff0c;其他位置满&#xff0c;即最后一排从左到右的中间不能由缺 2.二叉搜索树 左子树中所有结点的 key 值都比根结点的 key 值小&#xff0c;并且左子树也…

DeepSeek 突然来袭,AI 大模型变革的危机与转机藏在哪?

随着人工智能技术的飞速发展&#xff0c;大模型领域不断涌现出具有创新性的成果。DeepSeek 的横空出世&#xff0c;为 AI 大模型领域带来了新的变革浪潮。本文将深入探讨 DeepSeek 出现后 AI 大模型面临的危机与转机。 冲冲冲&#xff01;&#xff01;&#xff01; 目录 一、…

高速差分总线比较--RS422, LVDS,PECL

1. RS422A&#xff0c; 如RS422 & RS485总先&#xff0c; 0/5V的差分电平&#xff0c;匹配电阻120ohm. S2D&#xff0c; Transmitter D2S, Receiver LVDS 如SN65LVDS1&#xff0c;驱动器&#xff1a;DS90LV031&#xff08;支持预加重&#xff09;&#xff0c;接收器&…

idea 错误: 找不到或无法加载主类 @C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448

idea 错误: 找不到或无法加载主类 C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448 该错误往往和左下角爱弹出的如下提示是一个意思 Error running ‘PayV3Test1.testTransferBatchesBatchId’ Error running PayV3Test1.testTransferBatchesBatchId. Command lin…

Java中如何高效地合并多个对象的List数据:方法与案例解析!

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云/阿里云/华为云/51CTO&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互…

23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。

在使用这个非线性激活函数的时候&#xff0c;其实我们重点还是学习的是他们的正向怎么传播&#xff0c;以及反向怎么传递的。 如下图所示&#xff1a; 第一&#xff1a;relu函数的正向传播函数是&#xff1a;当输入值&#xff08;隐藏层&#xff09;值大于了&#xff0c;就输出…

React源码揭秘 | scheduler 并发更新原理

React 18增加了并发更新特性&#xff0c;开发者可以通过useTransition等hooks延迟执行优先级较低的更新任务&#xff0c;以达到页面平滑切换&#xff0c;不阻塞用户时间的目的。其实现正是依靠scheduler库。 scheduler是一个依赖时间片分片的任务调度器&#xff0c;React团队将…

腿足机器人之二- 运动控制概览

腿足机器人之二运动控制概览 高层运动规划MPCRL 中层逆运动学和逆动力学底层执行器控制传感器校正 上一篇博客是腿足机器人的骨架和关节的机械和电气组件&#xff0c;关节不仅需要通过机械设计实现复杂的运动能力&#xff0c;还必须通过电子组件和控制系统来精确控制这些运动。…

企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略

一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…

软件项目估算偏差的5 大源头及解决方案

软件项目成本估算偏差往往导致资金紧张&#xff0c;资源投入受限&#xff0c;进度延误无法按时交付&#xff0c;为控制成本还可能牺牲质量&#xff0c;引发团队士气低落、客户不满&#xff0c;严重时项目直接失败 。 因此&#xff0c;及时解决或降低项目偏差就非常重要&#xf…

树莓派学习

树莓派4B 基础操作 开机 开机要主要先接好线再通电 关机 先在系统里面关机再断电 可以在界面里面点击关机&#xff0c;或者使用命令行 使用网线连接到树莓派 用笔记本的以太网口接线到树莓派 在网络连接里面打开WLAN的网络共享&#xff0c;共享选择以太网口 在cmd里面输…

Jenkins 新建配置 Freestyle project 任务 六

Jenkins 新建配置 Freestyle project 任务 六 一、新建任务 在 Jenkins 界面 点击 New Item 点击 Apply 点击 Save 回到任务主界面 二、General 点击左侧 Configure Description&#xff1a;任务描述 勾选 Discard old builds Discard old builds&#xff1a;控制何时…

一场始于 Selector Error 的拯救行动:企查查数据采集故障排查记

时间轴呈现事故进程 17:00&#xff1a;开发人员小李正在尝试利用 Python 爬虫从企查查&#xff08;https://www.qcc.com&#xff09;抓取公司工商信息。原本一切正常&#xff0c;但突然发现信息采集失败&#xff0c;程序抛出大量选择器错误。17:15&#xff1a;小李发现&#x…