ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

数据库原理及运用(初识):第八节#多表查询3(联合查询与嵌套查询)

数据库原理及运用(初识):第八节#多表查询3(联合查询与嵌套查询) 大家好本篇文章为不了解数据库或者将要学数据库却不知道它具体是什么的伙伴们介绍数据库的基础知识同时小编也会用每一小节学到的新知识一步一步搭建出一个完整的大一新生数据库系统小编争取每天都会更新一节零基础的小伙伴也可以跟着小编一起搭建自己的一个数据库系统我们前面讲到的都是只有一个查询条件的查询然而我们常常也会遇到不止一个条件的查询。比如这一天玉小刚来问小编“我们学校新生里面是三班的或者高考分数高于600学生的姓名有哪些”这里我们就需要用到联合查询。# 联合查询union联合查询把所有的查询结果合起来形成一个新的查询结果集。语法select 字段列表 fron 表A... union(all) select 字段名 from 表2...;现在我们来查询是3班学生或者高考分数高于600分的新生这里我们顺带把班级和年龄也查询出来就可以看到高于600分和属于3班的同学都已经被我们查询出来了。然而在我们实际生活中表的查询往往不像我们前面讲过的那么单一比如有一天这个玉小刚老师走过来说“你去帮我查一下选了我的课的学生的教育经历”。大家可以想一下我们要怎样去查询这个数据。首先我们得从teacher里知道玉小刚课的代码然后我们再拿着这个代码去course表里看看他一共教哪些课程课程id都是多少最后才能够去学生表里查询选了玉小刚课程id的同学的id最后再去学生教育经历表中把student_id为查询到的学生id的字段找出来。下面演示一遍现在我们知道了玉小刚course_id是1我们拿着这个数据再去course表里面去查询可以看到他的课程序号是1这样我们就查询出了选了课程序号为1的几个学生最后再去学生经历表格把他们经历查出来可以看到确实是完成了我们的需求不过这样操作实在是麻烦而且因为我们没有也不太可能讲所有的信息全写入一张表格所以这样的需求也会比较常见。这时候我们就需要用一种更简洁的语法来表达我们上诉的所有内容那就是嵌套查询或者子查询## 嵌套查询嵌套查询在sql语句中嵌套select语句称为嵌套查询又称子查询根据子查询结果不同可以分为下面几类1. 标量子查询子查询返回的结果是单个值数字字符串日期… 常用操作符不等于符号2. 列子查询返回的结果是一列可以是多行常用操作符in, not in, any子查询返回列表中有任意一个满足即可, some与any等同, all子查询返回列表中左右值都必须满足.3. 行子查询子查询返回结果是一行可以是多列常用操作符与列子查询相同4. 表子查询返回的查询结果是多行多列常用操作符in语法select 字段列表 from 表名 where {用另一条sql语句和操作符构成条件}现在我们再来查询选择了玉小刚的课都学生的教育经历就简单多了可以看到我们就只用一条语句就成功完成了以往我们要用好几条语句才能完成的需求。而我们演示的这个正是子查询中的表子查询相信通过这一个案例大家也就能知道行列子查询和标量子查询的写法与用用法了大家赶紧去动手实操一下吧。易错提醒大家在写子查询时要注意只有标量子查询的操作符有用的行列表子查询都没有用的大家不要用习惯而写错了那么以上就是本小节的全部内容了感谢大家的观看我们下一节再见
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进