MySQL 多种查询方法

article/2025/9/15 7:20:27

这里写目录标题

    • 查询
      • 1、单表查询
        • 1.选择表中的若干列
        • 2.选择表中的若干元组
        • 3.order by子句
        • 4.聚集函数
        • 5.group by分组
      • 2、连接查询
        • 1、等值与非等值连接查询
        • 2、自身连接
        • 3、外连接
        • 4、多表连接
      • 3、嵌套查询
        • 1、带有IN谓词的子查询
        • 2、带有比较运算符的子查询
        • 3、带有ANY或ALL谓词的子查询
        • 4、带有EXISTS谓词的子查询
      • 4、集合查询

查询

作为案例的三个表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击获取建表语句和表数据

1、单表查询

1.选择表中的若干列

1.查询指定列

select Sno,Sname from Student;

2.查询全部列

select*from Student;

3.查询经过计算的值

3.1、查询到同学的出生年份

select Sname,2022-Sage from student;

在这里插入图片描述
3.2、起别名,增加列,通过函数转换大小写

select Sname 姓名,'Brith',2022-Sage,lower(Sdept) from Student;

在这里插入图片描述

2.选择表中的若干元组

1.消除取值重复行

select distinct Sno from SC;

在这里插入图片描述
2.查询满足条件的元组

2.1、比较大小

select * from Student where Sage<20;

在这里插入图片描述
2.2、确定范围

select * from Student where Sage between 20 and 30;

在这里插入图片描述
2.3、确定集合

select * from Student where Sdept in ('CS','MA');

在这里插入图片描述
2.4、字符匹配

  • %(百分号)代表任意长度(长度可以为0)的字符串
  • _(下横线)代表任意单个字符
select * from Student where Sname like '刘%';
select * from Student where Sname like '刘_';select * from Student where Sname not like '刘%';
select * from Student where Sname not like '刘_';

2.5、空值查询

select * from Student where Grade is null;

3.order by子句

用户可以用order by 子句对查询结果按照一个或多个属性列的升序(ASC)降序(DESC)排列,默认值升序

select * from SC order by Grade;

在这里插入图片描述

4.聚集函数

select count(*) from Student;
select count(Sno) from Student;
select avg(Grade) from SC;
select sum(Grade) from SC;
select max(Grade) from SC;
select min(Grade) from SC;

当聚集函数遇到空值时,除count(*)外,都跳过空值处理非空值
聚集函数只能用于select子句和group by中的having子句

5.group by分组

select Sno,count(*) from Student group by Sno;

在这里插入图片描述

select Sno from SC group by Sno having count(Sno)>3;

在这里插入图片描述

2、连接查询

若一个查询同时涉及两个以上的表,则称之为连接查询

1、等值与非等值连接查询

  • 连接查询的where子句中用来连接两个表的条件成为连接条件连接谓词
  • 当连接运算符为=号时,称为等值连接,使用其他运算符称为非等值连接

例1、查询每个学生及其选修课程的情况

select * from Student,SC where Student.Sno=SC.Sno;

在这里插入图片描述
把目标列中重复的属性列去掉则为自然连接

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from Student,SC where Student.Sno=SC.Sno;

在这里插入图片描述

2、自身连接

连接操作不仅可以在两个表之间进行,也可以时一个表与自身进行连接,称之为表的自身连接
例2、查询每一门课的间接先修课(即先修课的先修课)

select first.Cno,second.Cpno from Course first,Course second where first.Cpno=second.Cno;

在这里插入图片描述

3、外连接

有时想以Student 表为主体列出每个学生的基本情况和选课情况。若某个学生没有选课,仍把Student的悬浮元组保存在结果关系中,而在SC表的属性上填空值NULL,这时就需要使用外连接

select * from Student left outer join SC on (Student.Sno=SC.Sno);

在这里插入图片描述
左外连接列出左边关系中所有元组,右外连接列出右边关系中所有的元组

4、多表连接

连接操作除了可以时两表连接、一个表与自身连接外,还可以是两个以上的表进行连接,后者通常称为多表连接
例4、查询每个学生的学号、姓名、课程名、成绩

select Student.Sno,Sname,Cname,Grade from Student,Course,Sc where Student.Sno=SC.Sno and SC.Cno=Course.Cno;

在这里插入图片描述

3、嵌套查询

在SQL语言中,一个select-from-where 语句称为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询称为嵌套查询例如:
查询选修课程号为2的学生姓名

select Sname from Student where Sno in (select Sno from SC where Cno='2');

本例中,下层查询块 select sno from sc where cno=‘2’是嵌套在上层查询块select sname from student where sno in 的where条件中的,上层的查询块称为外查询父查询,下层查询块称为内查询子查询

子查询的select语句中不能使用 order by 子句,order by子句只能对最终查询结果排序

1、带有IN谓词的子查询

例1、查询与“刘晨”在同一个系学习的学生

select * from student where Sdept in (select Sdept from Student where Sname='刘晨');

在这里插入图片描述

本例中,子查询条件不依赖于父查询,称为不相关子查询

例2、查询选修了课程名为“信息系统”的学生学号和姓名

select Sno,Sname from Student where Sno in(select Sno from SC where Cno in (select Cno from Course where Cname='信息系统'));

在这里插入图片描述

2、带有比较运算符的子查询

带有比较运算符的子查询是指父查询与子查询之间用比较运算符进行连接。当用户明确知道内层查询返回的是单个值时,可以用>、<、=、>=、<=、!=或<>等比较运算符

例3、找出每个学生超过他自己选修课程平均成绩的课程号

select Sno,Cno from SC x where Grade>(select avg(Grade) from SC y where y.Sno=x.Sno);

在这里插入图片描述
x 是表SC的别名,又称为元组变量,可以用来表示SC的一个元组,内层查询是求一个学生所有选修课平均成绩的,至于是哪个学生的平均成绩要看参数x.Sno的值,而该值是与父查询相关的,因此这类查询称为相关子查询

3、带有ANY或ALL谓词的子查询

>ANY 大于子查询结果中的某个值
>ALL 大于子查询结果中的所有值
<ANY 小于子查询结果中的某个值
<ALL 小于子查询结果中的所有值>=ANY 大于等于子查询结果中的某个值
>=ALL 大于等于子查询结果中的所有值
<=ANY 小于等于子查询结果中的某个值
<=ALL 小于等于子查询结果中的所有值

例4、查询非计算机科学系中比计算机科学系任意一个学生年龄小的学生姓名和年龄

select Sname,Sage from Student where Sage<ANY(select Sage from Student where Sdept='CS') and Sdept!='CS';

在这里插入图片描述

4、带有EXISTS谓词的子查询

EXISTS代表存在量词,带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”

例5、查询所有选修了1号课程的学生姓名

select Sname from Student where exists (select * from SC where Student.Sno=SC.Sno and Cno='1');

使用存在量词exists后,若内层查询结果非空,则外层的where子句返回真值,否者返回假值

例6、查询选修了全部课程的学生姓名
SQL中没有全称量词(for all),但是可以把带有全称量词的谓词转换为等价的带有存在量词的谓词,可以将题目转换成等价的存在量词的形式:没有一门课程是他不选修的

select Sname from Student where exists (select * from Course where exists (select * from SC where SC.Sno=Student.Sno and SC.Cno=Course.Cno));

在这里插入图片描述

4、集合查询

集合操作主要包括并操作NUION交操作INTERSERT差操作EXCEPT
例1、查询计算机科学系的学生及年龄不大于19岁的学生

select * from Student where Sdept='CS' union select * from Student where Sage<=19;

在这里插入图片描述
例2、查询计算机科学系的学生与年龄不大于19岁的学生的交集

select * from Student where Sdept='CS' intersect select * from Student where Sage<=19;

这实际上就行查询计算机科学系中年龄不大于19岁的学生

select *from Student where Sdept='CS' and Sage<=19;

在这里插入图片描述

例3、查询计算机科学系的学生与年龄不大于19岁的学生的差集

select * from Student where Sdept='CS' except select * from Student where Sage<=19;

这实际上就行查询计算机科学系中年龄大于19岁的学生

select *from Student where Sdept='CS' and Sage>19;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/BSClLJ0A.shtml

相关文章

MySQL查询语句

一、基本查询 1、查询多个字段 SELECT 字段1&#xff0c;字段2&#xff0c;字段3... FROM 表名; SELECT * FROM 表名;2、设置别名 SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名;3、去除重复记录 SELECT DISTINCT 字段列表 FROM 表名;1、查询指定字段name&#xf…

webpack面试题整理

文章目录 webpack 面试题整理 谈谈你对Webpack的理解Webpack的打包过程/打包原理/构建流程&#xff1f;Webpack中loader的作用/ loader是什么&#xff1f; 常见的loader有哪些&#xff1f; Plugin有什么作用&#xff1f;/Plugin是什么 常见的Plugin有哪些Webpack 插件的执行顺序…

WebPack面试题汇总

1&#xff0c;Webpack有什么作用&#xff0c;谈谈你对它的理解 现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss、Les…

webpack的面试题(吐血整理)

以下为整理的webpack面试题&#xff0c;如有不足之处&#xff0c;还请大家多多指正。 一、webpack的构建流程 二、对webpack的理解 webpack是一个打包模块化js的工具&#xff0c;在webpack里一切文件皆模块&#xff0c;通过loader转换文件&#xff0c;通过plugin注入钩子&#…

webpack 面试题整理

文章目录 webpack 面试题整理谈谈你对Webpack的理解Webpack的打包过程/打包原理/构建流程&#xff1f;Webpack中loader的作用/ loader是什么&#xff1f;常见的loader有哪些&#xff1f; Plugin有什么作用&#xff1f;/Plugin是什么常见的Plugin有哪些Webpack 插件的执行顺序&a…

28道Webpack面试题及答案

1、webpack的作用是什么&#xff0c;谈谈你对它的理解&#xff1f; 现在的前端网页功能丰富&#xff0c;特别是SPA&#xff08;single page web application 单页应用&#xff09;技术流行后&#xff0c;JavaScript的复杂度增加和需要一大堆依赖包&#xff0c;还需要解决Scss&a…

程序员做自媒体变现,可以选择的平台有哪些?各自的特点是什么?

&#x1f4da;公众号&#xff1a;Python图书馆 (ID:python_library)整理&#xff1a;&#x1f4bb;兆锋 利益相关&#xff1a;我是一个在做自媒体的Python程序员&#xff0c;个人全网同名自媒体&#xff1a;Python自动化办公社区 本文分享自己使用的几个平台&#xff0c;并分析…

5个免费的高质量的自媒体学习网站,你值得拥有

今天就和大家分享5个我私下一直在用的学习网站&#xff0c;有些平台知道的人还不多&#xff0c;希望大家高调收藏&#xff0c;低调使用。 1 易撰网 自媒体必备网站&#xff0c;不管你做的是哪个方面的自媒体。都可以利用这款强大的文章写作工具&#xff0c;其中包括爆文分析、…

自媒体影视解说项目详解

我见过很多老师写项目,但很少有人愿意完整、毫无保留地透露项目运作的细节。尤其注意事项和避坑细节。 欣慧在写项目上的观点是,要么不写,要么写得让人明白,不隐瞒。 今天给大家分享一个自媒体影视解说一个盈利项目,零成本认真执行,年收入10万没有问题。 2018年第一次注…

《最强的 VLC 多媒体开发教程》

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 《VLC 多媒体开发》&#xff0c;是一个专注于 libVLC 开发的专栏&#xff0c;里面共包含几十个章节&#xff0c;从 0 到 1&#xff0c;图文并茂&#xff0c;详细地介绍了 lib…

入行自媒体怎么快速变现,详细教程,教你手把手运营

新手怎样做自媒体&#xff0c;才能达到日入500 &#xff1f;今天就给大家介绍一下&#xff0c;新手入行自媒体怎么快速变现&#xff0c;详细的自媒体教程&#xff0c;教你手把手运营&#xff01; 01 自媒体账号注册 账号注册其实很简单&#xff0c;直接浏览器搜索平台&#xf…

教你如何轻松玩转自媒体淘客,赚大钱!

“淘宝客“现在可谓是一种很流行的兼职&#xff0c;无论何时学生、上班族、自由职业等&#xff0c;都可以利用兼职来赚钱&#xff0c;但是也有很多人赚不到钱&#xff0c;为什么没有赚到钱&#xff0c;原因很简单&#xff1a;1、推广的商品没人购买&#xff0c;2、没有推广方法…

7个良心到难以置信的自媒体免费网站推荐

现在做自媒体还不晚&#xff0c;自媒体已经是成熟的阶段&#xff0c;所以大家可以积极参与进去&#xff0c;说不定哪天爆火了&#xff0c;小伙伴们抓住机会吧&#xff01;下面就和大家分享一下自媒体创作中需要用到的一些网站&#xff0c;助您打造爆款作品&#xff1a; 1、Cove…

如何拍摄自媒体?这些技巧可以帮到你

很多初入自媒体的小伙伴&#xff0c;对于如何拍摄自媒体还是十分模糊的&#xff0c;针对一些拍摄问题给大家分享一下相关技巧&#xff1a; 一、拍摄器材 1.手机或者单反相机 许多初学者在一开始拍摄短视频的情况下&#xff0c;总感觉应当挑选单反相机或是监控摄像头才可以作出…

同一篇文章多平台发布?自媒体多平台发布教程分享

如今自媒体行业的发展是十分火热的&#xff0c;加入到这个行业中的朋友越来越多&#xff0c;很多朋友都在自媒体平台撰写文章&#xff0c;如果文章具有价值&#xff0c;能够吸引读者&#xff0c;则作者就能够通过撰写文章赚取收益&#xff0c;自媒体平台并不是单一的&#xff0…

趣头条自媒体审核不过怎么办,趣头条伪原创工具教程

为了维护自媒体平台的和谐与健康,也是为了尽量的公平维护大多数自媒体作者的权益,趣头条的要求越来越高,审核力度也越来越大,而针对视频内容也开始有了明确的规定。 视频主要出现问题的分别是标题,封面,内容。 趣头条平台在公告中为学弟学妹们着重说明了以下几点: 1.…

比较好的自媒体平台推荐,揭秘哪个自媒体平台收入最高

如今,自媒体平台越来越多,对自媒体感兴趣,在自媒体路上赚到钱的人也越来越多,那么,面对如雨后春笋般的新型自媒体平台,我们究竟该如何选择合适自己的呢? 今天凯哥来聊聊新人进入自媒体,想通过平台来赚取广告分成的话,该如何选择适合自己的自媒体平台。 一、头条号 今日…

自媒体怎么快速入门?这几个技巧一定要掌握好

自媒体新手应该怎么快速学会自媒体运营&#xff0c;今天小编就给大家找了几个自媒体入门快速入门的技巧&#xff0c;一起来看看&#xff1a; 1、需要打造自己的影响力&#xff0c;但是时间可能需要久一点&#xff0c;半年以上。那么在这半年里不要考虑商业化和广告变现等问题&a…

怎么做自媒体,这份入门攻略,建议收藏

1. 选择合适的平台 现在的自媒体平台非常多&#xff0c;有短视频平台、长视频平台、图文平台等&#xff0c;你可以依照自己的喜好去选择&#xff0c;不过要尽量选择用户量大一些的&#xff0c;也可以直接多个平台分发。 2. 确定领域 这是很关键的一步&#xff0c;你要选择你擅…

如何做抖音自媒体?这些小技巧一定要掌握

当今时代&#xff0c;几乎每个人的手机上都会有抖音这个app,所以在当下抖音还是很有发展的前景的&#xff0c;今天就教教大家如何做好抖音自媒体&#xff0c;其实但凡一个视频能够火的原因有&#xff1a;首先这个视频内容能够解决一部分人的痛点&#xff0c;比如美妆博主&#…