软件测试2024.04.06

学习目标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)

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值