学习目标2024.04.06
多张表查询(容易出面试题)
1.掌握内连接
2.掌握左连接和右连接
3.掌握自关联与子查询
一.连接查询
当查询结构源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的结果返回。
内连接:查询的结果只显示两个表中满足连接条件的部分。(交集)
内连接语法1: select * from 表1 inner join 表2 on 表1.字段=表2.字段 on后是表和表之间的联系关系
内连接语法2(隐式内连接): select * from 表1,表2 where 表1.字段 = 表2.字段
student表和scores内连接查询结果 select * from student inner join scores on student.studentNo = scores.studentNo; select * from student,scores where student。studentNo = scores。studentNo;
查询王昭君的信息,要求只显示姓名,课程号,成绩 select name,scoresNo,score from student s1 inner join scores s2 on s1.studentNo = s2.studentNo where s1.name = '王昭君'
二.左连接和右连接
左连接:左连接查询的两个表匹配到的数据加左表特有的数据,对于右表不存在的数据使用null填充。
内连接语法1: select * from 表1 left join 表2 on 表1.字段=表2.字段![image-20240405143724745](C:\Users\86182\AppData\Roaming\Typora\typora-user-images\image-20240405143724745.png)
右连接:右连接查询的两个表匹配到的数据加右表特有的数据,对于做表不存在的数据使用null填充。
-
多表联合查询同名字段的处理方式:
如果一条select要用到多个表,表中右同名字段,就需要表名.字段名 加以区分
三.自连接
-
自关联是同一张表做连接查询
-
自关联下,一定是找到同一张表可以关联的不同字段
查询广东省的所有城市 select * from areas a1 inner join areas a2 on a1.id = a2.pid where a1.name = '广东省'
四.子查询
-
子查询是嵌入到主查询中
-
子查询时辅助主查询的,要么充当条件,要么充当数据源
-
子查询是可以独立存在的舆,是一条完整的select语句
查询大于平均年龄的学生记录 select * from students where age >(select avg(age) from students)
查询30岁学生的成绩1,查询30岁学生的studentNo select * from scores where studentNo in(select studentNo from students where age = 30)标签:2024.04,06,查询,studentNo,scores,where,连接,select,软件测试 From: https://blog.csdn.net/qq_71079940/article/details/137441471