MySQL数据库基础(十二):子查询(三步走)

文章目录

子查询(三步走)

一、子查询(嵌套查询)的介绍

二、子查询的使用

三、总结


子查询(三步走)

一、子查询(嵌套查询)的介绍

在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询。

主查询和子查询的关系:

  • 子查询是嵌入到主查询中

  • 子查询是辅助主查询的,要么充当条件,要么充当数据源(数据表)

  • 子查询是可以独立存在的语句,是一条完整的 select 语句

二、子查询的使用

例1、查询学生表中大于平均年龄的所有学生

需求:查询年龄 > 平均年龄的所有学生

前提:

① 获取班级的平均年龄值

② 查询表中的所有记录,判断哪个同学 > 平均年龄值

第一步:写子查询

sql 复制代码
select avg(age) from students;

第二步:写主查询

sql 复制代码
select * from students where age > (平均值);

第三步:第一步和第二步进行合并

sql 复制代码
select * from students where age > (select avg(age) from students);

例2、查询学生在班的所有班级名字

需求:显示所有有学生的班级名称

前提:

① 先获取所有学员都属于那些班级

② 查询班级表中的所有记录,判断是否出现在①结果中,如果在,则显示,不在,则忽略。

第一步:编写子查询

sql 复制代码
select distinct cls_id from students is not null;

第二步:编写主查询

sql 复制代码
select * from classes where cls_id in (1, 2, 3);

第三步:把主查询和子查询合并

sql 复制代码
select * from classes where cls_id in (select distinct cls_id from students where cls_id is not null);

例3、查找年龄最小,成绩最低的学生

第一步:获取年龄最小值和成绩最小值

sql 复制代码
select min(age), min(score) from student;

第二步:查询所有学员信息(主查询)

sql 复制代码
select * from students where (age, score) = (最小年龄, 最少成绩);

第三步:把第一步和第二步合并

sql 复制代码
select * from students where (age, score) = (select min(age), min(score) from students);

三、总结

子查询是一个完整的SQL语句,子查询被嵌入到一对小括号里面

掌握子查询编写三步走


  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉

  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

相关推荐
古月居GYH2 小时前
【数据分析】如何在PyCharm中高效配置和使用SQL
ide·sql·pycharm
程序员岳焱6 小时前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化
计算机毕设定制辅导-无忧学长6 小时前
西门子 PLC 与 Modbus 集成:S7-1500 RTU/TCP 配置指南(一)
服务器·数据库·tcp/ip
程序员柳7 小时前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
梦在深巷、7 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
IT乌鸦坐飞机7 小时前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
IT_10247 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
Johny_Zhao8 小时前
Ubuntu系统安装部署Pandawiki智能知识库
linux·mysql·网络安全·信息安全·云计算·shell·yum源·系统运维·itsm·pandawiki
祁思妙想9 小时前
八股学习(三)---MySQL
数据库·学习·mysql
惊骇世俗王某人9 小时前
1.MySQL之如何定位慢查询
数据库·mysql