聚合查询、联合查询【mysql数据库】

14 篇文章 0 订阅
订阅专栏

把查询结果插入到另一个表中(相当于复制表)

 要求查询结果临时表的列数和列的类型,要和student2这里匹配

聚合查询

本质上是针对行和行之间的运算

聚合查询需要搭配聚合函数

1、count 

 

 不一定非要写星号(*),还可以写成任意的 列名/表达式

 虽然有一行是全NULL,count计算会把全为NULL的行也给计算进去

 2、sum

sum求和,把这一列的所有行进行加和,要求这个列得是数字(不能是字符串/日期)

3、AVG

4、MAX&&MIN

 求和,平均,最大,最小这些操作都是针对数字类型的列进行的。

 表达式的聚合计算

 联合查询

包括:内连接,外连接,子查询,合并查询

多表查询的基本执行过程:笛卡尔积

 

 笛卡尔积通过排列组合:列数是两个表列数的和,行数是两个表行数的积

 通过条件,排除无意义的数据。

 练习:

drop table if exists classes;
drop table if exists student;
drop table if exists course;
drop table if exists score;

create table classes (id int primary key auto_increment, name varchar(20), `desc` varchar(100));

create table student (id int primary key auto_increment, sn varchar(20),  name varchar(20), qq_mail varchar(20) , classes_id int);

create table course(id int primary key auto_increment, name varchar(20));

create table score(score decimal(3, 1), student_id int, course_id int);

insert into classes(name, `desc`) values 
('class1', 'desc1'),
('class2','desc2'),
('class3','desc3');

insert into student(sn, name, qq_mail, classes_id) values
('09982','likui','xuanfeng@qq.com',1),
('00835','puti',null,1),
('00391','baisuzhen',null,1),
('00031','xuxian','xuxian@qq.com',1),
('00054','buxiangbiye',null,1),
('51234','haohaoshuohua','say@qq.com',2),
('83223','tellme',null,2),
('09527','laowai','foreigner@qq.com',2);

insert into course(name) values
('Java'),('wenhua'),('yuanli'),('chinese'),('math'),('english');

insert into score(score, student_id, course_id) values
-- likui
(70.5, 1, 1),(98.5, 1, 3),(33, 1, 5),(98, 1, 6),
-- puti
(60, 2, 1),(59.5, 2, 5),
-- baisuzhen
(33, 3, 1),(68, 3, 3),(99, 3, 5),
-- xuxian
(67, 4, 1),(23, 4, 3),(56, 4, 5),(72, 4, 6),
-- buxiangbiye
(81, 5, 1),(37, 5, 5),
-- haohaoshuohua
(56, 6, 2),(43, 6, 4),(79, 6, 6),
-- tellme
(80, 7, 2),(92, 7, 6);

 4个表:student 学生表 、 classes 班级表 、 course 课程表 、 score 分数表

 

 查询许仙同学的成绩

写法1:from多个表 

 1、先笛卡尔积

 2、引入连接条件

 3、根据必要需求,加入必要的条件即可

 4、把不必要的列去掉,保留想关注的列

写法二:join on

 写法三:inner join

注意: from多个表只能够实现内连接,而join on既可以实现内连接也可以使用外连接。

查询所有同学的总成绩及个人信息

 第一步:笛卡尔积

 第二步:加上连接条件

 第三步:加上聚合查询,把同一个学生的行合并到一个组里,同时计算总分

 

第一步:笛卡尔积

 第二步:引入连接条件:三张表需要两个连接条件

 第三步:精简一些不必要的列

 ​​​

 用join on也是没问题的

         内连接和外连接在大多数情况下是没有区别的,比如要连接的两个表里面的数据都是一一对应的,这时是没有区别的,如果不是一一对应,内连接和外连接就有区别了。

 

 如果不是一一对应

 

自连接:自己和自己进行笛卡尔积

SQL中无法针对行和行之间的条件比较,需要使用自连接,把行转成列

 显示所有‘计算机原理’成绩比‘java’成绩高的成绩信息

 

 

子查询:把多个SQL组合成一个,把一个查询作为另一个查询的一部分条件(套娃),代码可读性非常差,执行效率也非常差(慎用)

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

insert into classes(name, `desc`) values
('计算机系2019级1班', '学习了计算机原理、C和Java语言、数据结构和算法'),
('中文系2019级3班','学习了中国传统文学'),
('自动化2019级5班','学习了机械自动化');
insert into student(sn, name, qq_mail, classes_id) values
('09982','黑旋风李逵','xuanfeng@qq.com',1),
('00835','菩提老祖',null,1),
('00391','白素贞',null,1),
('00031','许仙','xuxian@qq.com',1),
('00054','不想毕业',null,1),
('51234','好好说话','say@qq.com',2),
('83223','tellme',null,2),
('09527','老外学中文','foreigner@qq.com',2);
insert into course(name) values
('Java'),('中国传统文化'),('计算机原理'),('语文'),('高阶数学'),('英文');
insert into score(score, student_id, course_id) values
-- 黑旋风李逵
(70.5, 1, 1),(98.5, 1, 3),(33, 1, 5),(98, 1, 6),
-- 菩提老祖
(60, 2, 1),(59.5, 2, 5),
-- 白素贞
(33, 3, 1),(68, 3, 3),(99, 3, 5),
-- 许仙
(67, 4, 1),(23, 4, 3),(56, 4, 5),(72, 4, 6),
-- 不想毕业
(81, 5, 1),(37, 5, 5), 
4.2.1 内连接  
-- 好好说话
(56, 6, 2),(43, 6, 4),(79, 6, 6),
-- tellme
(80, 7, 2),(92, 7, 6);

查询“不想毕业”的同学的同班同学

 

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

查询“语文”或“英语”课程的成绩信息

  1. 先根据课程名字查询出课程id
  2. 再根据课程id查询出课程分数

 

注意:查询结果放在内存中,如果查询结果太大了,内存放不下,in就用不了了,可以使用exists代替,exists本质上就是让数据库执行很多个查询操作, 但是exists可读性比较差,执行效率也大大低于in(适合解决特殊场景)

合并查询:本质上是把两个查询的结果集合成一个,union、union all

查询id小于3,或者名字为“英文”的课程: 

 or和union的区别:

        or查询只能来自同一张表,union查询可以是来自不同的表,只要查询的结果的列匹配即可。

union和union all的区别:

        union 会进行去重(把重复的行只保留一行),union all可以保留多份,不会去重。

100道MySQL数据库经典面试题
06-12
MySQL数据库在IT行业中是广泛应用的关系型数据库管理系统,其性能优化和面试知识点对于后端开发者至关重要。以下是关于MySQL数据库的一些核心知识点: 1. **索引使用注意事项**: - **索引失效情况**:查询条件...
MySQL数据库学习教程从入门到进阶全套笔记
08-06
MySQL数据库是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用中,从个人项目到大型企业级系统。本教程涵盖了MySQL从基础到高级的全方位学习,旨在帮助初学者快速入门并逐步提升技能。 首先...
SQL UNION 聚合
Flykos的博客
07-28 836
简单的聚合函数: 表一:table1(任务表) 字段:mid,name,age,mission(任务量),cardID(身份证) 表二:table2(完成量表) 字段:cid,complete(完成量) 要求: 1、合并两张表的数据 2、任务量和完成量,没有任何关联,某人可以只有任务量,可以只有完成量,或者两者都有,这是三种情况。 困难: 如果通过cardID字段inner jo
MySQL】一文带你掌握聚合查询联合查询
是小辰
06-11 1848
内连接是一种关系型数据库的查询方式,它是联合查询的一种,但并不是所有联合查询都是内连接。在数据库中,外连接(outer join)是指通过两个或多个表中的一个或多个共同数据列将它们连接起来,产生一个新的查询结果集。左连接(left join)返回左表中的所有数据行,即使在右表中没有匹配的数据行,也不会过滤掉左表中的数据。全连接通常不常用,因为它可能会返回非常大的结果集。自链接的语法格式与普通的表之间连接非常相似,只需要在表名后加上别名即可,这里的别名可以是任何合法的标识符,用于区分同一个表中不同的记录。
mysql中union、or和union all区别
ZQHCSD的博客
08-11 1614
sql中常用union all对数据集进行合并。使用union代替or,解决or导致全表扫描。union 是带去重功能的。
MySQL表中的联合查询
小小码农
02-02 632
MySQL表中的联合查询
MySQL——聚合函数&多表查询
ShirleyZ1007的博客
08-28 1702
数据库增删改查进阶:聚合函数和多表查询
MySql基本查询、连接查询、子查询、正则表达查询讲解
08-24
查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...
MySQL数据库零基础到精通视频教程
05-19
18-联合查询 19-作业讲解与模糊查询 20-外连接查询 21-数据库表设计一 22-数据库表设计二 23-视图 24-数据库建模一(PowerDesigner) 25-数据库建模二与事务 26-开启事务、回滚与提交事务 27-脏读 28-不可重复读 29-...
MySQL笔试题一条语句解决问题多表联查聚合查询
03-16
中等难度笔试题,包括select / insert / update / delete 语法...多表联合查询,排序、分组等功能运用 包括但不限于MySQL,也可推广至Oracle、DB2等常见关系型数据库 考验的包括基本的CRUD水平,以及边界情况的判断处理
mysql基础操作及案例分析
05-25
DML操作(数据插入,数据修改,数据删除) 主键的作用(主键约束,自增长约束auto_increnment,非空约束-not null,唯一约束unique,默认约束default...多表联合查询(交叉连接查询,内连接查询,外连接查询,子查询)
MySQL高级查询详细.ppt
09-05
本课程主要介绍了MySQL数据库的安装,管理,数据类型,SQL语句语法和使用,高级查询等方面的知识, 以应用为目标,具有较强的实践性。 大纲: 聚合函数 分组查询 联合查询 连接查询 子查询
详解MySql基本查询、连接查询、子查询、正则表达查询
12-16
MySQL中是使用SELECT语句来查询数据的。在这一章中将讲解的内容包括。 1、查询语句的基本语法 2、在单表上查询数据 3、使用聚合函数查询数据 4、多表上联合查询 5、子查询 6、合并查询结果 7、为表和字段取别名 8、...
(010)《第五部分-练习题3:MySQL三表联合查询》【包含公司面试题】
07-16
在本题目中,我们面临的是一个关于MySQL数据库的三表联合查询的问题,涉及到的学生表A、成绩表B和课程表C。以下是对每个查询操作的详细解析: 1. 查询出学习成绩及格以上的学生姓名与成绩: ```sql select A.SNAME,...
MySQL入门到精通-基础篇
最新发布
11-21
DQL 语言用于查询数据库中表的记录,包括基础查询、条件查询、聚合函数、分组查询、排序查询、分页查询等操作。 基础查询可以使用 SELECT 语句,例如:SELECT * FROM 表名; 条件查询可以使用 WHERE 子句,例如:...
MySQL多表查询(联合查询、连接查询、子查询)
热门推荐
m0_49864110的博客
07-27 1万+
EXCEPT 将两张表的某些字段的公共记录减去,然后返回一张表的剩余记录(差集)(MySQL不存在,使用NOT IN字段实现)3、作为联合查询的多表之间的列数、以及列数的类型必须相同(例如:表1查询哪些列,表2就查询哪些列)1、通过联合查询,可以得到两张表中记录的集合或者公共记录的集合,或者其中某张表中的记录的集合。将两张表的全部记录交叉组合,在添加了其他表字段的同时,所得的记录数是两张表行数的乘积。#查询张三入职之后的所有员工信息(先查询张三的入职信息,再查询此时间之后的员工信息。
集合查询
qq_42640067的博客
08-19 3147
前言 我们在学习数学的时候,接触过集合的概念,数学中集合的运算有交集、并集、差集。同样的,在SQL中这个概念也是适用的,值得注意的是,MySQL中只支持并集union、union all,对于交集和差集并不能很好的支持,但是可以采用其他的操作来实现,只是比较麻烦一点,这里就不做介绍了。而oracle能直接提供语法来支持并集、交集、差集操作,使用起来比较方便,下面将逐一介绍。 集合运算图 在介绍之前,我们先看一下并集、交集、差集的运算图,概念就不说了。 并集 并集有重叠的部分,运算时会去除掉重复的部分。 交
MySQL必知必会:组合查询(Union)
weixin_33775572的博客
12-26 574
本篇文章主要介绍使用Union操作符将多个SELECT查询组合成一个结果集。本文参考《Mysql必知必会》+工作实践融合 组合查询 定义 在大多数开发中,使用一条SELECT查询就会返回一个结果集。如果,我们想一次性查询多条SQL语句,并将每一条SELECT查询的结果合并成一个结果集返回。就需要用到Union操作符,将多个SELECT语句...
mysql的union和or
weixin_30855761的博客
07-08 1138
实践出真知! 使用union连接 select `id` from `表名` where 0=0 and active=1 and `fullname` like '王%' union select `id` from `表名` where 0=0 and active=1 and `username` like '王%' union select `id` from `表名` where...
mysql数据库 - 复杂查询(一)
06-28
MySQL数据库支持各种类型的复杂查询,包括聚合函数、联合查询、子查询、嵌套查询等等。下面是一些复杂查询的示例: 1. 聚合函数:使用聚合函数可以对一列数据进行统计计算,如求平均值、最大值、最小值等等。 2. ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用) 141201
  • strcmp函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncmp的区别) 119407
  • strstr函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 ) 90536
  • getchar函数详解看这一篇就够了-C语言(函数功能、使用、返回值) 86949
  • strncpy函数详解看这一篇就够了-C语言(函数实现、使用用法举例、与strcpy的区别) 60853

分类专栏

  • leetcode刷题 73篇
  • 初学java 34篇
  • 数据结构 4篇
  • 前端 27篇
  • 软件测试 11篇
  • 计算机组成原理(王道) 1篇
  • spring 12篇
  • redis 3篇
  • 初学c语言 82篇
  • mysql 14篇
  • 学校作业 14篇

最新评论

  • strncat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strcat的区别)

    only-lucky: 我想问下使用strncat函数会直接core 怎么解决,strcat就不会 *** stack smashing detected ***: terminated Aborted (core dumped)

  • 两数之和-力扣算法(c语言)

    庞ha: 嗷嗷我明白了谢谢谢谢

  • 两数之和-力扣算法(c语言)

    庞ha: 我想问下,main函数中 returnrize=-1是什么意思

  • 两数之和-力扣算法(c语言)

    庞ha: 可以更加通俗一点吗,最后一句话是什么意思啊

  • 两数之和-力扣算法(c语言)

    不见b: 为什么函数的形参上面有的地方用到了指针有的地方没有用到指针呀表情包

大家在看

  • codeArts Snap:辅助你的编程神器 583
  • LoRA用于高效微调的基本原理 770
  • [晕事]今天做了件晕事39 惯性一例 90
  • 深入解析 iOS 应用启动过程:main() 函数前的四大步骤

最新文章

  • 栈 和 队列
  • 动态修改的数组 - ArrayList
  • 测开(性能测试---LoadRunner)
2023年53篇
2022年204篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司吕梁网站推广系统推荐泸州网站优化推广哪家好横岗英文网站建设哪家好镇江网站优化软件推荐同乐SEO按天计费云浮至尊标王价格泰州关键词按天计费推荐丽水网站建设设计价格宜春网站关键词优化推荐沧州网站优化软件哪家好德阳关键词按天收费哪家好天门外贸网站建设公司普洱网站优化按天收费价格营口网站优化软件哪家好临沂网站推广方案报价和县网站优化按天扣费报价喀什百度网站优化达州SEO按天收费哪家好林芝seo网站优化多少钱潜江百度seo哪家好常德网站建设设计价格荆门品牌网站设计推荐宁波网站搜索优化推荐珠海网站seo优化报价爱联建站公司珠海百度竞价海东SEO按天扣费报价咸阳网站建设公司嘉兴网站建设设计多少钱包头seo排名歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化