表的增删改查 进阶(二)

  • 🎥 个人主页:Dikz12
  • 🔥个人专栏:MySql
  • 📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香
  • 欢迎大家👍点赞✍评论⭐收藏

目录

3.新增

 4.查询

聚合查询 

聚合函数 

GROUP BY子句

 HAVING

 联合查询 

内连接(重点)

外连接(重点)

 左外连接

右外连接 

自连接

子连接 

合并查询 


3.新增

  •  先创建两个列数,类型相匹配的表

  • 在第一张表(student)里添加一些数据 

  •  把查询语句的查询结果,作为插入的数据

此处操作,要求查询出来的结果集合的列数和类型必须要和插入的表相匹配!

 4.查询

聚合查询 

表达式查询,是针对 列 和 列之间进行运算的;聚合函数,相当于是在 行 与 行 之间进行运算。 

聚合函数 

函数说明
COUNT([DISTINCT] expr)返回查询到的数据的 数量
SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT] expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT] expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT] expr)返回查询到的数据的 最小值,不是数字没有意义
  • COUNT

 

先执行select * ,在针对结果集合进行统计(看看具体有几行);、

count(*)和count(列名)这两种计算方式,如果有空null,计算的count就不同了。

 指定具体列,是可以进行去重的;

  • SUM 

把这一列的若干行,给进行求和.(算术运算)只能针对数字类型使用;字数串可以相加,不会报错,但不是算术运算,没有意义。

 sum(表达式) 查询; sum,avg,max,min基本相同;

GROUP BY子句

针对指定的列进行分组,把这一列中,相同的行,分到一组中,得到若干组,针对这些组使用聚合函数。

select 列名, sum(列名), ... from 表名 group by 列名;

 

使用group by 往往还是要搭配聚合函数,否则查询的结果,基本都是没有意义的!

使用group by 时,还可以搭配条件.需要区分是你该条件是分组之前的还是分组之后的.

  • 查询每个岗位的平均工资,排除张三

 这个就是分组之前的,使用WHERE 即可. 写在group by的前面。

 HAVING

GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用HAVING.

  • 查询每个岗位的平均工资,排除平均工资超过2w的结果

 

 联合查询 

联合查询也称为多表查询;前面的查询都是针对一个表,有些查询,则是要一次性从多个表中进行查询.联合查询的关键思路,在于理解“笛卡尔积”工作过程。会把所有情况都穷举一遍,也包含了一些非法数据无意义的数据。进行多表查询就是根据一些条件要把有意义的数据筛选出来保留,无意义的数据过滤掉。

                                  

内连接(重点)

select ... from 表1,表2 where 条件
-- inner可以缺省
select ... from 表1 [inner] join 表2 on 条件 
  • 例如:查询 许仙同学的成绩 

1. 先把这两个表进行笛卡尔积。

 

 

2.加上连接条件,筛选出有效数据

本体示例连接条件:

学生表的id = 分数表的seudent_id .(建议写作表名.列名

3. 结合需求,进一步添加条件,得到自己想要的结果

 注意:一旦表的数据量很大,或者表数目很多,此时得到的笛卡尔积就会非常庞大;因此,如果针对表进行笛卡尔积(多表查询),就会生成大量的临时结果,这个过程是非常消耗时间的,此时,sql就会非常复杂,可读性大大降低。

外连接(重点)

-- 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;

 如果两个表,里面的记录都是存在对应关系,则内连接和外连接的结果是一致;不存在对应关系,结果就会有一些差别。

 

 (内连接

 左外连接

 左外连接,就是以左侧为基准,保证左侧表的每个数据都会出现在最终结果里;如果在右侧表中不存在,对应的列就填成null。

 

右外连接 

 

 

自连接

自连接,就是一张表,自己跟自己进行笛卡尔积;sql里写个条件,都是列与列之间进行比较,但是有的时候可能会涉及到需求是进行行与行之间进行比较.就需要使用自连接,把行的关系转换成列的关系.

 注意:在进行笛卡尔积时,不能直接用表名,要对表进行起别名。

 

在根据自己需要的结果,找到连接条件,筛选数据 

子连接 

就是把多个简单的SQL拼成一个复杂的SQL;平时写代码都时把复杂的拆分成多个简单的,违背了一贯的编程原则;子连接很少使用,简单了解一下,即可。 

 单行子查询:

合并查询 

把多个sql查询结果集合,合并到一起。关键字:union.

合并两个sql结果集的列是要匹配的,列的个数和类型,是要一致的,合并的时候是会去重的,不想去重可以使用union all。

  

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

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

相关文章

【MySQL进阶】索引

索引机制 索引介绍 MySQL 官方对索引的定义为:索引(index)是帮助 MySQL 高效获取数据的一种数据结构,**本质是排好序的快速查找数据结构。**在表数据之外,数据库系统还维护着满足特定查找算法的数据结构,这…

无版权免费用!二次元爆萌AI壁纸

一、什么是AI壁纸? AI壁纸,顾名思义,是由人工智能精心设计的壁纸。它们不仅具有高度的审美价值,还能根据你的喜好和需求进行个性化定制。可爱风的AI壁纸,更是融合了萌系元素,让你的数字世界充满温馨与活力…

数据库经典面试题

习题一 1.1 创建表 ①创建Student表 mysql> create table Student ( -> Sno int primary key, -> Sname varchar(255), -> Ssex varchar(10), -> Sdept varchar(50) -> ); Query OK, 0 rows affected (0.01 sec) ②创建Course表 mysql…

【算法】使用优先级队列(堆)解决算法题(TopK等)(C++)

文章目录 1. 前言2. 算法题1046.最后一块石头的重量703.数据流中的第K大元素 2.5 如何选择大根堆 与 小根堆? 为什么选择大根堆(小根堆)?692.前K个高频单词295.数据流的中位数 1. 前言 我们知道:优先级队列是一种常用…

神器yakit之web fuzzer功能

前言 yakit并不像burp一样单独设置爆破模块,但是yakit也是可以爆破的,并且更好用(个人感觉)。 手工测试场景中需要渗透人员对报文进行反复的发送畸形或者特定的payload进行查看服务器的反馈并以此来进行下一步的判断。 Fuzz标签便…

C#MQTT编程08--MQTT服务器和客户端(cmd版)

1、前言 前面完成了winform版,wpf版,为什么要搞个cmd版,因为前面介绍了mqtt的报文结构,重点分析了【连接报文】,【订阅报文】,【发布报文】,这节就要就看看实际报文是怎么组装的,这…

016-Vue-黑马2023:前后端分离开发(在线接口文档),前端工程化、Element、vue编写一个完成页面、Vue路由、vue打包部署到nginx

第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发:传统开发模式 前后端分离开发:当前最为主流的开发模式 页面原型需求案例:分析出接口文档 离线开发文档示例: 2、YAPI(官网已停用) 202…

手机改直供电移除电池后使用改充电器供电改充电宝供电反复重启无法启动进入界面后重启黑屏

手机改直供电移除电池后使用改充电器供电改充电宝供电反复重启无法启动进入界面后重启黑屏 手机直供电改造拆电池问题接二连三无法连接电脑手机突然关机,反复重启 供电的解决方案新的希望 安装米家APP总结 手机直供电改造 首先我还是要声明一下,我非专业…

php反序列化之pop链构造(基于重庆橙子科技靶场)

常见魔术方法的触发 __construct() //创建类对象时调用 __destruct() //对象被销毁时触发 __call() //在对象中调用不可访问的方法时触发 __callStatic() //在静态方式中调用不可访问的方法时触发 __get() //调用类中不存在变量时触发(找有连续箭头的…

cusor编程IDE + 配置gpt3.5 api

1、购买gpt3.5的api 可以使用这个 https://www.mailline.org?from1726 也可以自己想办法去官网获取 如果是mailline,需要选择第一个,可以先买一个看看,我每次都是买10个,一个0.8元,有5美刀的额度。 下单后获取到ke…

Windows电脑桌面便利贴,桌面便签记事本怎么设置?

在繁忙的工作中,因为有很多重要的事需要等忙完手头上的事后或者明后天才能去做,但又怕忘记,经常会用便利贴先记录下来。对于Windows电脑桌面便利贴,不仅需要随时可以记录图文内容,还要能添加待办清单,设置提…

MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成

文章目录 前言问题分析解决方案方案一&#xff1a;使用 CDATA 区块&#xff0c;依然使用 “ > ” 或者 “ < ”方案二&#xff1a;使用转义字符 个人简介 前言 今天在使用 MyBatis 时出现报错&#xff1a; Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式…