Oracle-子查询

工欲善其事必先利其器
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

在这里插入图片描述

文章目录

  • 一、子查询
    • 1、查询学生中年龄最小的学生信息
    • 2、查询年龄和“张三”一样大的学生信息
    • 3、查询年龄,性别和“张三”一样的学生信息,不包括“张三”
    • 4、查询年龄和“张三”或者“李四”相同的学生信息
    • 5、如果有姓名为“张三”的学生,那么就查询出所有学生信息,如果没有姓名为“张三”的学生,就什么都不查询
  • 二、在having中使用子查询
    • 1、查询出班级平均分高于年级平均分的班级、平均分、班级人数
  • 三、在from子句中使用子查询
    • 1、查询学生id和老师进行班级分组后的sid相等的学生id
  • 四、总结


一、子查询

exists():判断,如果子查询有返回数据,那么就执行外部查询

1、查询学生中年龄最小的学生信息

select * from student where age = (select min(age) from student);

2、查询年龄和“张三”一样大的学生信息

select * from student where age = (select age from student where name = '张三')

3、查询年龄,性别和“张三”一样的学生信息,不包括“张三”

select * from student where (age,sex) = (select age,sex from student where name = '张三')
and name <> '张三'

4、查询年龄和“张三”或者“李四”相同的学生信息

select * from student where age in (select age from student where name ='张三' or '李四')

5、如果有姓名为“张三”的学生,那么就查询出所有学生信息,如果没有姓名为“张三”的学生,就什么都不查询

select * from student where exists(select * from student where name = '张三')

二、在having中使用子查询

1、查询出班级平均分高于年级平均分的班级、平均分、班级人数

select class,count(*),avg(grade) from student group by class having avg(grade) > (select avg(grade) from student)

三、在from子句中使用子查询

1、查询学生id和老师进行班级分组后的sid相等的学生id

select s.id from student s (select t.id,t.class from teacher t group by t.class) where s.id = t.sid

四、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。

你可能感兴趣的:(Oracle,oracle,数据库,sql)