2024-08-14软测学习今日总结
小记
续上昨天的内容,今天主要是学习sql的DQL语句中最重要的部分多表查询等相关知识
一、case when 控制流语句
语法1:
case when 表达式1 then 值1 when 表达式2 then 值2 when 表达式n then 值n else 其他值 end
表示:如果表达式成立,则返回值1,否则如果表达式2成立,则返回表达式2,…,如果给定的都不符合,则返回其他值
在使用case when 控制流函数时需注意:养成好习惯,将所有已知的判断都放到when后面,使用else来捕获其他异常
case when 控制流语句:
语法2:
case 字段 when 值1 then 数据1 when值2 then 数据2...when 值n then 数据 end
表示: 如果字段的值等于值1,则返回数据1,如果字段值等于值2,则返回数据2,…,如果字段值不等于给定的任何一个值,则返回其他数据
习题练习:
示例:查询员工信息表,返回员工姓名、工资以及工资等级(工资大于30000等级为高,10000~30000为中级,否则为低)
练习:查询员工信息表,返回员工姓名,性别以及性别的中文名称(0-男,1-女,2-未知)
二、多表查询(重点)
多表查询:在一个select 语句中同时查询多张表
在进行多表查询时需注意:
1、多表查询本质上就是通过匹配条件,将多张“小”的表横向拼接成一张“大”的表,再对这张大的表进行“单表查询”
2、多表查询的核心在于是找到表和表之间的匹配条件(关联关系)
3、表和表之间的匹配条件(关联关系)是创建表的时候确定好的
4、如果需要查询的表之间没有直接的关联关系,需进入和他们都有关系的第三张(甚至更多)表来将它们关联在一起
在实际工作中怎么确定需要查询几张表
1.如果查询的条件和返回的内容都落在一张表中,那么直接进行单表查询即可
2.如果查询的条件和返回内容落在了不同的表中,那么就需要进行多表查询
习题练习:
练习: 查询在贵阳办公的所有员工编号,姓名,性别,部门编号,部门名称和办公地点信息
1. 内连接 inner join
内连接:内连接就是在进行多表查询的时候,在返回结果集中保留各表中满足匹配条件的数据,不满足匹配的数据仍掉
语法:(隐式内连接)
select 查询内容 from 表1,表2,表3,...,表N where 表1和表2的匹配条件 and 表1(或表2)和表3的匹配条件 and ... and 分组限定条件 group by 分组条件1,分组条件2,...,having分组后再次限定 order by 排序条件1 排序方式,排序条件2 排序方式,...limit 偏移量,返回数量;
语法:(显式内连接)
select 查询内容 from 表1 inner join 表2 on 表1和表2的匹配条件,表3,...,表N where and 表1(或表2)和表3的匹配条件 and ... and 分组限定条件 group by 分组条件1,分组条件2,...,having分组后再次限定 order by 排序条件1 排序方式,排序条件2 排序方式,...limit 偏移量,返回数量;
2. 外连接
外连接:外连接就是在进行多表查询的时候分为主表和从表,在返回的结果集中保留主表的全部数据,以及从表中满足匹配条件的数据,从表中不满足匹配条件的数据扔掉,主表在从表中没有匹配到的数据的,从表部分使用null代替
外连接分为左外连接和右外连接,简称左连接和右连接。
-
左连接 left join
左连接: 左连接就是在进行多表查询的时候,以左边的表为主表,右边的表为从表,在返回的结果集中保留左边主表的全部数据,以及右边从表中满足匹配条件的数据,从表中不满足匹配条件的数据扔掉,主表在表中没有匹配到数据的,用null代替,左连接使用的关键字是left join
语法:select 查询内容 from 表1 left join 表2 on 表1和表2的匹配条件,表3,...,表N where and 表1(或表2)和表3的匹配条件 and ... and 分组限定条件 group by 分组条件1,分组条件2,...,having分组后再次限定 order by 排序条件1 排序方式,排序条件2 排序方式,...limit 偏移量,返回数量;
-
右连接 right join
右连接: 右连接就是在进行多表查询的时候,以右边的表为主表,左边的表为从表,在返回的结果集中保留右边主表的全部数据,以及左边从表中满足匹配条件的数据,从表中不满足匹配条件的数据扔掉,主表在表中没有匹配到数据的,用null代替,右连接使用的关键字是right join
语法:select 查询内容 from 表1 right join 表2 on 表1和表2的匹配条件,表3,...,表N where and 表1(或表2)和表3的匹配条件 and ... and 分组限定条件 group by 分组条件1,分组条件2,...,having分组后再次限定 order by 排序条件1 排序方式,排序条件2 排序方式,...limit 偏移量,返回数量;
习题练习:
练习:查询男性员工的员工编号,姓名,性别,工资以及工资所属等级
练习:查询男性员工的员工编号,姓名,性别,工资以及工资所属等级以及所属部门编号和部门名称
总结
在测试工作中,多表查询是SQL查询语言中至关重要的部分,它允许测试人员跨越多个数据库表检索和整合数据。这一功能在验证数据一致性、模拟复杂业务场景、执行性能评估及数据分析时尤为重要。通过组合不同的JOIN(如INNER JOIN、LEFT JOIN等)和子查询,测试人员能够构建复杂的查询语句,精确测试系统在不同数据交互场景下的表现。掌握多表查询,对于确保软件质量至关重要。