【MYSQL表的增删改查(进阶)】

news2024/9/20 14:05:35

MYSQL表的增删改查(进阶)

  • 一、新增
  • 二、查询
      • 2.1 聚合查询
        • 2.1.1 聚合函数
            • count()
            • sum()
            • AVG()
            • MAX(),MIN()
            • GROUP_CONCAT()
        • 2.1.2 GROUP BY 子句
        • 2.1.3 HAVING 子句
      • 2.2 联合查询
        • 2.2.1 内连接
        • 2.2.2 外连接
            • 左外连接:
            • 右外连接:
        • 2.2.3 自连接
        • 2.2.4 子查询
            • 单行查询:返回一行子查询记录
            • 多行查询:返回多行记录的子查询
            • **关键字:[NOT]EXISTS**
            • from子句使用子查询生成临时表
        • 2.2.5 合并查询
            • UNION
            • UNION ALL

此篇博客希望对你有所帮助,不懂的或有错误的也可在评论区留言,错误必评论必回!!!

一、新增

语法:

insert into 表名[(字段1,字段2,...)]select(字段1,字段2,...)from 表名;

示例:
创建一个student表(id, name, sex, age, email);
在这里插入图片描述
创建一个test表(id, name, sex, age, email);并且给student表中插入两组数据,通过新增,把student表中的数据复制到test表中。
在这里插入图片描述

二、查询

2.1 聚合查询

2.1.1 聚合函数

常见的有以下六种:
在这里插入图片描述

count()

count()用来统计表中的行数。

select count(*) from 表名;//推荐大家使用这种方式,这种写法是SQL标准中规定的
select count(常数) from 表名;//这种方式也可以统计出表中的行数

在这里插入图片描述
也可以指定某一列进行统计。

select count(列名) from 表名;

在这里插入图片描述
count(列名),如果说列中有NULL值,则不会被统计在内!、
在这里插入图片描述

sum()

sum(列名)求和,把查询结果中所有行中的指定列进行相加
注意:列中的数据类型必须是数值型,不能是日期或字符…。如果不是对非数值类型的列进行计算,会得到警告信息。

select sum(列名) from 表名;

在这里插入图片描述

1.之前我们提起过,NULL与任何值运行的结果都是NULL。但通过这里发现,sum()求和NULL 值不参与运算。
2.这里的结果是在一个临时表中,结果不受表中字段长度约束。

AVG()

对所有行的指定列进行平均值运算。
在这里插入图片描述

MAX(),MIN()

求所有行中指定列的最大值,最小值

查出数学的最大值和最小值:

在这里插入图片描述

同一列可以使用不同的聚合函数

在这里插入图片描述

不同的一列可以使用不同的聚合函数

在这里插入图片描述

GROUP_CONCAT()

将来自多个记录的列值连接成一个字符串结果。通常与GROUP BY语句一起使用,以将多个行的值合并为一个逗号分隔的字符串。
示例:这里创建了一个employees表,其中包含员工的 id、department_id 和 name。并且给employees表中存储四组数据。
在这里插入图片描述
我们想要获取每个部门中所有员工的名字列表,可以使用 GROUP_CONCAT() 如下:
在这里插入图片描述
如果我们还想要按名字排序,并改变分隔符为分号(;),我们可以这样做:
在这里插入图片描述
注意事项:

1.GROUP_CONCAT() 默认的结果长度受到 group_concat_max_len 系统变量的限制,其默认值是 1024。如果你预期会有大量的数据被合并,可能需要调整这个值。
2.如果你在一个没有 GROUP BY 语句和其他聚合函数的查询中仅使用 GROUP_CONCAT(),MySQL 可能会将整个结果集视为一个大的组,并尝试将所有行的相关列值连接成一个单一的字符串。这通常不是预期的行为,因为它可能会导致生成一个非常长的字符串,特别是当查询结果集很大时。

2.1.2 GROUP BY 子句

GROUP BY 子句:SELECT中使用GROUP BY 子句可以对指定列进行分组查询。然后,对于每个组,它会计算聚合函数的值。如果查询中没有指定聚合函数,但使用了 GROUP BY,则每个组将只返回一行,通常是分组列的值(尽管这取决于选择的列和数据库的具体实现)。

语法:

select 列名(分组的列名),聚合函数(列名)...from 表名 group by 列名(分组的列名),列名(分组的列名);

示例:假设我们有一个名为 sales 的表,包含列 year, product_id, 和 amount。
在这里插入图片描述

然后我们根据product_id进行分组,查看一下它的销售总额。
在这里插入图片描述
group by 后面可以跟order by子句
在这里插入图片描述

2.1.3 HAVING 子句

GROUP BY 子句进行分组之后,需要对分组结果进行条件过滤时,不能使用WHERE 语句,而需要使用HAVING;
示例:这里为了大家更方便简单观察到,这里我又插入了6组数据。
在这里插入图片描述
这里我们需要通过HAVING子句过滤掉销售量小于800的产品。
在这里插入图片描述

2.2 联合查询

联合查询(也称为联结查询或JOIN查询)是一种通过两个或多个表中的列之间的关系来查询、组合或合并表中的数据的方法。联合查询是SQL中一个非常强大的功能,它允许你根据需要在不同的表中检索相关信息。

联合查询是如何执行的?

1.取多张表的笛卡尔积。
在这里插入图片描述
举例:创建一张class表,包含列id,name;创建一张student表,包含列class_id,name,sex。
c
在这里插入图片描述

并且分别给两张表中插入数据!
生成笛卡尔积:
在这里插入图片描述

2.通过连接条件过滤掉无效数据

在这里插入图片描述
3.能通过指定列查询,来精简结果集
在这里插入图片描述

2.2.1 内连接

内连接(INNER JOIN)是SQL查询中使用的一种连接类型,用于返回两个或多个表中符合连接条件的记录。内连接仅返回那些在连接条件上有匹配的行。如果在一个表中有行在另一个表中没有匹配的连接条件,那么这些行就不会出现在查询结果中。

语法:

select 字段 from1 as 别名1 [inner] join 表名2 as 别名2 on 连接条件 and 其他条件;//标准的内连接写法
select 字段 from1 as 别名1 , 表名2 as 别名2 where 连接条件 and 其他条件;

示例:查询班级编号,班级名称,学生姓名
在这里插入图片描述
注意:当你使用别名时,那么select 后面的字段也必须是别名.字段名,否则则无法识别;

2.2.2 外连接

外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接,右侧的表完全显示我们就说是右外连接。

语法:
左外连接:表1全显示

select 字段名 from 表名1 left join 表名2 on 连接条件;

右外连接:表2全显示

select 字段名 from 表名1 right join 表名2 on 连接条件;

示例:假设class表为表1,student表为表2。
在这里插入图片描述

左外连接:

在这里插入图片描述

右外连接:

在这里插入图片描述

外连接:通过right和left确认基准表,没有与基准表匹配的记录,用null填充。

2.2.3 自连接

自连接(Self-Join)是一种特殊的连接查询,它指的是表与其自身进行连接。自连接通常用于查询表中存在层次或递归关系的数据。

案例:查询比‘雨欣’数学成绩高的学生。
在这里插入图片描述

1.去笛卡尔积
在这里插入图片描述

2.观察结果集,确认条件
在这里插入图片描述
也可以用join on 语句进行自连接查询

 select * from score s1 join score s2 on s1.name='雨欣' and s1.math<s2.math;
2.2.4 子查询

子查询是指嵌入在其他sql语句中select语句,也叫嵌套查询。由于嵌套查询没有固定的限制,多层嵌套的效率是不可控的,所以谨慎使用。

在这里插入图片描述

单行查询:返回一行子查询记录

案例:查询数学成绩为69,语文成绩为66的学生的信息。
在这里插入图片描述

多行查询:返回多行记录的子查询

返回一个集合,使用关键字IN
在这里插入图片描述

关键字:[NOT]EXISTS
select * from where exists(select * from 表名);

解释:exists后面括号中的查询语句,如果有结果返回,则执行外层查询,如果返回值为空,则不执行外层查询。

在这里插入图片描述

from子句使用子查询生成临时表

在from子句中使用子查询:子查询语句出现from子句中,这里要用到数据查询的技巧,把一个子查询当成一个临时表来使用。

在这里插入图片描述

2.2.5 合并查询

合并查询通常指的是将多个查询的结果集合并成一个结果集。这可以通过 UNION 或 UNION ALL 操作符来实现。使用 UNION 或 UNION ALL 时,前后查询的结果集中,字段需要一致。

UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集,并自动去除重复的记录,只保留唯一的记录。每个 SELECT语句必须拥有相同数量的列,且对应列的数据类型也必须兼容。

在单表中可以去用逻辑运算符去连接不同的查询条件;但多表中,就没办法用逻辑运算符,如果最终结果从多表中获取的,必须要用UNION来进行合并。
案例:自动去除结果集中的重复行!
在这里插入图片描述
列名不匹配,返回的结果值就是错误的,这种查询就是没有意义的!
在这里插入图片描述

UNION ALL

与 UNION 类似,UNION ALL 也用于合并两个或多个 SELECT 语句的结果集,但它会包含所有的重复记录。也就是说,它不会去除任何重复的行。这通常在你需要包含所有行,包括重复行时非常有用。

案例:不会去除结果集中的重复行!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端学习杂乱记录

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、Html二、CSS1. BFC布局2. 定位总结3. 动画1. transform变换2. transition过渡3. keyframes 和 animation 3. 伸缩盒模型&#xff1a;flex布局 三、JS1. 逻辑中断…

nvm安装实现node多版本的切换

nvm安装实现node多版本的切换 方式一 下载安装包安装下载安装包解压安装设置 nvm 环境变量查看 nvm 是否安装完成安装 node 环境切换 node 版本列出已经安装的版本 方式二 一键脚本安装下载安装查看 nvm 是否安装完成安装 node 环境切换 node 版本列出已经安装的版本nvm相关命令…

PyTorch中的学习率预热(warmup)

PyTorch提供了学习率调度器(learning rate schedulers)&#xff0c;用于在训练过程中实现各种调整学习率的方法。实现在torch.optim.lr_scheduler.py中&#xff0c;根据epoch数调整学习率。大多数学习率调度器可以称为背对背(back-to-back)&#xff0c;也称为链式调度器&#x…

Linux入门2

文章目录 一、Linux基本命令1.1 文件的创建和查看命令1.2 文件的复制移动删除等命令1.3 查找命令1.4 文件的筛选和管道的使用1.5 echo、tail和重定向符 二、via编辑器三、权限控制3.1 root用户&#xff08;超级管理员&#xff09;3.2 用户和用户组3.3 权限信息3.4 chmod命令 一…

Streamlit:使用 Python 快速开发 Web 应用

一、简单介绍 Streamlit 是一个开源 Python 库&#xff0c;官网地址&#xff1a; https://streamlit.io/http://StreamlitStreamlit 是一个开源的 Python 框架&#xff0c;旨在为数据科学家和 后端工程师们提供只需几行代码即可创建动态数据应用的功能。 让没有任何前端基础…

C#软键盘设计字母数字按键处理相关事件函数

应用场景&#xff1a;便携式设备和检测设备等小型设备经常使用触摸屏来代替键盘鼠标的使用&#xff0c;因此在查询和输入界面的文本或者数字输入控件中使用软件盘来代替真正键盘的输入。 软键盘界面&#xff1a;软键盘界面实质上就是一个普通的窗体上面摆放了很多图片按钮&…

使用SpringCloud构建可伸缩的微服务架构

Spring Cloud是一个用于构建分布式系统的开源框架。它基于Spring Boot构建&#xff0c;并提供了一系列的工具和组件&#xff0c;用于简化开发分布式系统的难度。Spring Cloud可以帮助开发人员快速构建可伸缩的微服务架构。 要使用Spring Cloud构建可伸缩的微服务架构&#xff0…

实时监控局域网计算机桌面怎么设置!五个可实现的方法分享,绝了!

员工在工作时间里究竟在做什么&#xff1f;他们的网络活动是否合规&#xff1f;如何确保敏感信息不被泄露&#xff1f; 在企业管理层面&#xff0c;实时监控局域网计算机桌面已成为提升工作效率、确保数据安全与规范员工行为的重要手段。 技术的不断进步&#xff0c;多种解决…

【C++进阶】map和set的使用

【C进阶】map和set的使用 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C&#x1f96d; &#x1f33c;文章目录&#x1f33c; 1. 序列式容器和关联式容器 2. set系列的使用 2.1 set 和 multiset 2.2 set 类的介绍 2.3 set 的构造和…

【Linux篇】常用命令及操作技巧(基础篇)

&#x1f30f;个人博客主页&#xff1a;意疏-CSDN博客 希望文章能够给到初学的你一些启发&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏支持一下笔者吧&#xff5e; 阅读指南&#xff1a; 开篇说明帮助命令常见的七个linux操作终端实用的技巧跟文件目录…

C++11之统一的列表初始化

一.{}初始化 在c98中&#xff0c;标准允许使用{}对数组或结构体元素进行统一的列表初始值设定&#xff1a; struct mess {int _x;string _str; }; int main() {//注意&#xff0c;使用new的一定是指针int* arr new int[4] {1, 2, 3, 4};//数组初始化int arr[] { 1,3,5,6 };…

基于Spring Boot和Vue的私人牙科诊所系统的设计与实现(毕业论文)

目 录 1 前言 1 1.1 研究目的与意义 1 1.2 国内外研究概况 1 1.3 主要研究内容 2 1.4 论文结构 3 2 系统分析 3 2.1 可行性分析 3 2.1.1 技术可行性分析 3 2.1.2 经济可行性分析 3 2.1.3 操作可行性分析 4 2.1.4 法律可行性分析 4 2.2 需求分析 4 2.2.1 管理员需求分析 4 2.2.2…

3.1 数据表的基本查询

我们学习的怎么管理逻辑空间&#xff0c;怎么创建数据表&#xff0c;怎么定义字段&#xff0c;怎么创建索引&#xff0c;这些都是DDL语句。从本次课开始&#xff0c;我们来学习DML语句&#xff0c;也就是该如何增删改查操作数据。我们学习DML语句的前提是数据表要有足够多的数据…

Moving Elevator System Fully functional

这是一个功能齐全的电梯系统,配有电梯箱车、电梯井、电缆和每层的门框 电梯完全被操纵,有动画门、电缆线、滑轮系统。 还有几个C#脚本文件控制电梯、门和灯。 此套餐还包括相关声音,如电梯移动、门打开/关闭、楼层铃叮。 电梯车厢有工作门和按钮,车顶还有一个逃生舱口。 每…

低投入、高效率 基于PHP+MySQL组合开发的求职招聘小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 这款求职招聘小程序源码系统是专门为求职招聘领域打造的综合性平台。它利用 PHP 强大的编程语言特性和 MySQL 稳定的数据存储功能&#xff0c;实现了一个功能齐全、性能优越的求职招聘系统。 整个系统架构设计合理&#xff0c;具备良好的扩展性和兼容性。无论是小型…

从《中国数据库前世今生》看中国数据库技术的发展与挑战

从《中国数据库前世今生》看中国数据库技术的发展与挑战 引言 在当今数字化浪潮中&#xff0c;数据库技术已成为支撑全球经济运行的核心基础设施。作为程序员&#xff0c;我一直对数据库技术的发展充满好奇。《中国数据库前世今生》纪录片深入探索了中国数据库技术的演变历程…

【Python报错已解决】libpng warning: iccp: known incorrect sRGB profile

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

怎么把图片压缩变小?把图片压缩变小的八种压缩方法介绍

怎么把图片压缩变小&#xff1f;在当今这个信息高度共享的时代&#xff0c;图片不仅仅是简单的视觉元素&#xff0c;它们承载着我们的记忆、故事和创意。无论是旅行的风景、家庭的聚会&#xff0c;还是工作中的项目展示&#xff0c;图片都在我们的生活中扮演着不可或缺的角色。…

帕金森患者必看!这5种水果成“抗抖”小能手,吃出健康好生活!

在这个快节奏的时代&#xff0c;健康成为了我们最宝贵的财富之一。而对于帕金森病患者而言&#xff0c;如何在日常生活中通过合理的饮食来缓解症状、提升生活质量&#xff0c;成为了许多家庭关注的焦点。今天&#xff0c;就让我们一起探索那些被誉为“抗抖”小能手的水果&#…

Pandas -----------------------基础知识(一)

目录 Series对象 属性和方法 布尔值列表获取Series对象中部分数据 运算 DateFrame对象 常用属性 常见方法 运算 总结 Series对象 是DataFrame的列对象或者行对象 生成Series对象生成索引使用元组创建Series对象使用字典创建Series对象 通过Pandas创建对象 自定义索引 …