表的增删改查 进阶(二)

news2024/11/17 7:26:07

  • 🎥 个人主页: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.coloradmin.cn/o/1396850.html

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

相关文章

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

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

Git学习笔记(第3章):Git常用命令

目录 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地库状态 3.4 添加暂存区 3.5 提交本地库 3.6 历史版本 3.7 修改文件 3.8 版本穿梭 小结 命令 作用 git config --global user.name 用户名 设置用户签名 git config --global user.email 邮箱 设置用户签名 …

机器学习顶会ICLR 2024录用论文合集,包含时间序列、图大模型、agent等热门主题

朋友们,ICLR 2024这周放榜了!据统计,本届会议共收到了7262篇论文,整体接收率约为31%,与去年(31.8%)基本持平。其中Spotlight论文比例为5%,Oral论文比例为1.2%。 不知道各位看完有什…

排序链表(LeetCode 148)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4]示例 2: 输入&#xff…

经典计算机网络面试题

1.说说HTTP常用的状态码及其含义? 状态码 类别 1xx 信息性状态码 2xx 成功状态码 3xx 重定向状态码 4xx 客户端错误状态码 5xx 服务端错误状态码 日常开发中的状态码: 状态码 含义 101 切换请求协议 200 请求成功 301 永久性重定向&…

网络:FTP

1. FTP 文件传输协议,FTP是用来传输文件的协议。使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。 2. 特点 明文传输。 作用:可以从服务器上下载文件,或将本地文件上传到服务器。 3. FTP原理 FTP有控制层面…

原神官网切换效果

这两天来研究一下原神游戏官网的效果,地址:《原神》官方网站-全新4.3版本「蔷薇与铳枪」上线! (mihoyo.com) 继续用我之前的模板项目: 等我把这一页写满,会上传原码。 效果很多,我们先看第一个&#xff…

数学建模美赛资料(赛题+获奖论文更新)

数学建模美赛历年真题可以帮助我们了解比赛的出题思路,对建模比赛有一个大致的了解。 在备赛过程中,通过往年真题,我们可以了解考试的范围和重点,做到心中有数,可以有的放矢。通过真题,我们可以感受到各个…

逻辑运算符

逻辑运算符 什么是逻辑运算符&#xff1f; 在数学中&#xff0c;一个数据x大于5&#xff0c;小于15&#xff0c;我们可以这样来进行表示&#xff1a;5<x<15.在Java中&#xff0c;需要把上面的式子先进行拆解&#xff0c;再进行合并表达。 拆解为&#xff1a;x>5和 x…

Python中HTTP代理的配置和使用

在Python中&#xff0c;HTTP代理是一种常用的技术&#xff0c;用于控制和修改HTTP请求和响应。通过使用HTTP代理&#xff0c;我们可以更好地控制网络请求的行为&#xff0c;提高安全性、隐私性和效率。下面我们将详细介绍如何在Python中配置和使用HTTP代理。 一、配置HTTP代理…

泛型编程——模板详解

文章目录 1. 前言2. 泛型编程3. 函数模板3.1 函数模板的概念3.2 函数模板的格式3.3 函数模板的原理3.4 函数模板的实例化3.5 模板参数的匹配原则 4. 类模板4.1 类模板的定义格式4.2 类模板的实例化 5. 模板参数6. 模板的特化6.1 概念6.2 函数模板特化6.3 类模板特化6.3.1 全特化…

【STM32】STM32学习笔记-I2C通信外设(34)

00. 目录 文章目录 00. 目录01. I2C简介02. I2C外设简介03. I2C框图04. I2C基本结构05. 主机发送06. 主机接收07. 软件/硬件波形对比08. 预留09. 附录 01. I2C简介 I2C(Inter&#xff0d;Integrated Circuit)总线是一种由NXP&#xff08;原PHILIPS&#xff09;公司开发的两线式…

链表练习 Leetcode234.回文链表

题目传送门&#xff1a;Leetcode234 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&…

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…

Ubuntu安装zsh

安装zsh sudo apt install zsh安装git&#xff08;如果有跳过&#xff09; sudo apt install git(1条消息) 关于Git这一篇就够了_17岁boy想当攻城狮的博客-CSDN博客 安装oh my zsh git clone https://github.com/robbyrussell/oh-my-zsh切换目录到oh-my-zsh文件夹下的tools…

VUE--插槽slot(将父级的模块片段插入到子级中)

组件可以接收任意类型的JS值作为props&#xff0c;但我们想要为子组件传递一些模板片段&#xff0c;并在子组件中进行渲染时&#xff0c;此时可以采用插槽slot来实现 简单来说&#xff0c;插槽时组件内留一个或多个插槽的位置&#xff0c;供组件传递对应的模板代码&#xff08;…

ASCII码常用

ASCII码的意义 对程序员来说真的是意义重大啊&#xff01; 作为一名程序员一定要牢记&#xff01; 常用A&#xff1a;65 a&#xff1a;97

设计模式⑦ :简单化

文章目录 一、前言二、Facade 模式1. 介绍2. 应用3. 总结 三、Mediator 模式1. 介绍2. 应用3. 总结 一、前言 有时候不想动脑子&#xff0c;就懒得看源码又不像浪费时间所以会看看书&#xff0c;但是又记不住&#xff0c;所以决定开始写"抄书"系列。本系列大部分内容…

c# 自定义 滑块TrackBar

辛苦半天做出来的&#xff0c;如果觉得好用&#xff0c;记得点赞 效果图如下&#xff1a; 具体操作&#xff1a; 1 、添加代码&#xff08;代码在下面&#xff09;&#xff0c;重新生成下整个工程&#xff0c;在工具栏中就出现控件&#xff0c;将控件拖到窗体中 2、只需要调整…

1434. 数池塘(四方向)-深度优先搜索-DFS

代码&#xff1a; #include<iostream> using namespace std; char a[200][200]; int fx[4]{0,1,0,-1}; int fy[4]{1,0,-1,0}; int k0; int n,m; void dfs(int x,int y){a[x][y].;int tx,ty;for(int i0;i<4;i){txxfx[i];tyyfy[i];if(tx>1&&tx<n&&am…