表的增删改查 进阶(二)

  • 🎥 个人主页: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。

  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【GitHub项目推荐--一键换脸】【转载】

FaceSwap 是一种利用深度学习算法来换掉图片和视频中的人脸的工具。基于 Tensorflow、Keras 和 Python,Faceswap 可以在 Windows、macOS 和 Linux 上运行。 安装了这个应用,你就能在你电脑上通过可视化交互的方式构建自己的换脸模型了。 地址&#xff…

时序分解 | Matlab实现CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵计算

时序分解 | Matlab实现CEEMDANPE自适应噪声完备集合经验模态分解排列熵计算 目录 时序分解 | Matlab实现CEEMDANPE自适应噪声完备集合经验模态分解排列熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 CEEMDANPE自适应噪声完备集合经验模态分解排列熵计算 运行环境m…

第六回 花和尚倒拔垂杨柳 豹子头误入白虎堂-安装服务器管理面板AMH和cyberpanel

且说鲁智深踏入菜园之时,二三十个泼皮无赖正聚集于此,他们手持果盒酒礼,脸上嬉皮笑脸,口称前来庆贺。然而,当这群人走到粪窖边缘,打头阵的张三和李四竟妄想搬动鲁智深,结果却被他轻描淡写地一脚…

element中表格组件的row-class-name和class-name属性的使用以及无效处理

1.这两个属性的使用&#xff0c;row-class-name用在el-table标签上&#xff0c;class-name用在el-table-column标签上。两个属性即可绑定类名也可绑定函数 <!-- 这里是绑定函数&#xff0c;也可以绑定类名 --> <el-table :data"tableData" selection-chang…

【C++】string的基本使用

从这篇博客开始&#xff0c;我们的C部分就进入到了STL&#xff0c;STL的出现可以说是C发展历史上非常关键的一步&#xff0c;自此C和C语言有了较为明显的差别。那么什么是STL呢&#xff1f; 后来不断的演化&#xff0c;发展成了知名的两个版本&#xff0c;一个叫做P.J.版本&am…

Liunx:线程控制

目录 创建线程&#xff1a;pthread_create(); 线程等待&#xff1a;pthread_join(); 线程退出&#xff1a;pthread_exit(); 线程取消&#xff1a;pthread_cancel() 说线程的时候说过&#xff0c;liunx没有选择单独定义线程的数据结构和适配算法&#xff0c;而是用轻量级进程…

关于java的继承

关于java的继承 我们在上一篇文章中&#xff0c;了解到了封装&#xff0c;我们本篇文章来介绍一下面向对象的第二大特点&#xff0c;继承&#xff0c;还是遵循结合现实生活中的实际情况&#xff0c;理解着去学习&#xff0c;能更好的加深印象&#x1f600;。 一、继承 继承的…

【从零开始学习Java重要知识 | 第三篇】暴打ReentrantLock底层源码

目录 前言&#xff1a; 前置知识&#xff1a; 什么是公平锁与非公平锁&#xff1f; 尝试自己构造一把锁&#xff1a; ReentrantLock源码&#xff1a; 加锁&#xff1a; 解锁&#xff1a; 总结&#xff1a; 前言&#xff1a; 在并发编程中&#xff0c;线程安全是一个重…

力扣 | 49. 字母异位词分组

这里使用HashMap Java package _49;import java.util.*;public class Problem_49_GroupAnagrams {public List<List<String>> groupAngrams(String [] strs){Map<String,List<String>> map new HashMap<>(); // int [] arr new int[]{}…

建筑能源管理系统

建筑能源管理系统是一种集成了先进的监测、控制、分析和优化技术的智能化系统&#xff0c;旨在提高建筑能源效率&#xff0c;降低能源消耗&#xff0c;减少环境污染&#xff0c;并为用户提供舒适、安全的建筑环境。通过监测建筑内的各种能源消耗情况&#xff0c;如电力、热水、…

Halcon基于形变的模板匹配

Halcon基于形变的模板匹配 形变分为两种&#xff0c;一种是基于目标局部的形变&#xff0c;另一种是由于透视关系而产生的形变。基于形变的模板匹配也是一种基于形状的匹配方法&#xff0c;但不同的是&#xff0c;其返回结果中不仅包括轻微形变的形状.形变的位置和参数&#x…

Python基础第二篇(Python基础语法)

文章目录 一、字面量二、注释三、变量四、数据类型五、数据类型转换六、标识符七、运算符八、字符串扩展内容&#xff08;1&#xff09;字符串定义&#xff08;2&#xff09;字符串拼接、&#xff08;3&#xff09;字符串格式化&#xff08;4&#xff09;字符串格式化的精度控制…

java spring cloud 企业工程管理系统源码+二次开发+定制化服务

随着企业规模的不断扩大和业务的快速发展&#xff0c;传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring CloudSpring BootMybat…

【AI绘画+本地部署】基于krita的AI绘画(含windows一键整合包)

comfyuikrita所有相关资源整合包(无需下载后面链接)百度网盘&#xff1a;https://pan.baidu.com/s/1iwNRpdTaD26YbzSDm6WLDA?pwdbur8 –来自百度网盘超级会员V4的分享 krita绘画软件官网地址 https://krita.org/en/download/krita-desktop/ krita-ai-diffusion 插件&#xff…

python 自动化模块 - pyautogui初探

python 自动化模块 - pyautogui 引言一、安装测试二、简单使用三、常用函数总结 引言 在画图软件中使用pyautogui拖动鼠标&#xff0c;画一个螺旋式的正方形 - (源码在下面) PyAutoGUI允许Python脚本控制鼠标和键盘&#xff0c;以自动化与其他应用程序的交互。API的设计非常简…

【答案】2023年国赛信息安全管理与评估正式赛答案-模块1任务一

1.根据网络拓扑图所示&#xff0c;按照IP 地址规划表&#xff0c;对防火墙的名称、各接口IP 地址进行配置。共8 分&#xff0c;每错1 处&#xff08;行&#xff09;扣1 分&#xff0c;扣完为止。地址、安全域、接口&#xff08;状态为UP&#xff09;、名称都正确。 2.根据网络…

QT设置QTableWidget左上角文字(CornerButton)

关于这个左上角 在QTableWidget中&#xff0c;左上角有一个可以点击的空白区域&#xff0c;如图&#xff1a; 默认情况下&#xff0c;点击它会全选所有的单元格。 它即不属于列表头&#xff0c;也不属于行表头&#xff0c;它的名称叫Corner Button 在QTableWidget中&#xf…

java数据结构与算法刷题-----LeetCode209. 长度最小的子数组

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 代码:时间复杂度O(n).空间复杂度O(1) class Solution {public in…

红队打靶练习:BOB: 1.0.1

目录 信息收集 1、netdiscover 2、nmap 3、nikto 4、whatweb 目录探测 1、dirb 2、gobuster 3、dirsearch WEB 主页&#xff1a; robots.txt 其他页面 反弹shell 提权 系统信息收集 jc账户 本地提权 信息收集 1、netdiscover ┌──(root㉿ru)-[~/kali] └…

rviz可视化机械臂(python)

一、准备的东西 一个机械臂的urdf 规划的路径点 二、launch文件的撰写 1.初始化 <?xml version"1.0" encoding"utf-8"?> <launch><param name"robot_description" textfile"机械臂.urdf" /><node name&qu…