本文转自测试人社区,霍格沃兹测试开发学社学员笔记
原文链接:https://ceshiren.com/t/topic/26870

一、多表查询

1.1、笛卡尔积

定义: 笛卡尔积是一个数学概念,又称直积,它是指两个集合元素所有可能有序对的集合。
  • 例子:
    • A={a,b},B={c,d}
    • A*B ={(a,c),(b,c),(a,d),(b,d)}
  • 语法:select 字段名称 from 表1, 表2
SELECT * FROM dept,staff_info WHERE dept.id=staff_info.dept_id;

二、多表查询-内连接

2.1、内连接的定义

  • 内连接(INNER JOIN):使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录。匹配上显示,匹配不上不显示。
  • 例子: 比如使用外键=主键这个条件过滤掉无效数据
  • 按语法结构分为: 隐式内连接和显式内连接

2.2、隐式内连接

  • 在笛卡尔积的的基础上,使用where条件过滤无用的数据,这种连接方式是隐式内连接.
  • 语法:select [字段名称] from 表1,表2 where [条件]
  • 例1: 筛选出运营部的员工的id,姓名以及所在城市
SELECT emp_id,ename,dept_location 
FROM emp_part,dept 
WHERE dept_id=id and dept_name="运营部";

2.3、显式内链接

  • 显式内连接: 使用 select [字段名称] from [表1]inner join [表2] on [条件] 这种方式
  • 列子: 用显式内连接查询运营部的员工的id,姓名以及所在城市
SELECT staff_id,staff_name,dept_name FROM dept INNER JOIN staff_info ON dept.id = staff_info.dept_id and id=2;

三、多表查询-外连接

3.1、外连接介绍

  • 外连接查询:查询多个表中相关联的行,有时候需要包含没有关联的行中数据,即返回查询结果集合中不仅包含符合连接条件的行,还包括左表(左连接)、右表(右连接)中的所有数据行。
  • 左外连接 , 使用 LEFT OUTER JOIN , OUTER 可以省略
  • 右外连接 , 使用 RIGHT OUTER JOIN , OUTER 可以省略

3.2、左连接

  • 左连接:以左表为基准匹配右表的数据,右表中没有的项,显示为空
  • 语法:SELECT [字段] FROM [左表] LEFT JOIN [右表] ON [条件]
  • 例子:公司新成立人力资源部,还未招聘员工,请使用左连接查询方式查询出公司所有部门员工的员工号,姓名,性别以及他们所在的部门名称和城市
SELECT staff_id,staff_name,dept_name,dept_location FROM dept LEFT JOIN staff_info ON id=dept_id;

3.3、右连接

  • 右连接:以右表为基准匹配左表的数据,左表中没有的项,显示为空
  • 语法:SELECT [字段] FROM [左表] RIGHT JOIN [右表] ON [条件]
  • 使用右连接的方式查询出所有员工信息以及他们所在的部门名称和城市
SELECT dept_name,dept_location,staff_id,staff_name FROM staff_info RIGHT JOIN dept ON id=dept_id;

3.4、总结

  • 内连接: inner join
  • 左连接: left join
  • 右连接: right join
  • 内连接和左连接使用居多

推荐

Python全栈开发与自动化测试开发班

由浅入深实战进阶,从小白到高手

以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。

课程详情

Python开发必备基础技能与项目实战

Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战

人工智能ChatGPT实战

人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战

数据分析与自动化办公

数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理

UI自动化测试与高级项目实战

Web自动化测试/App自动化测试/ PageObject设计模式

接口自动化测试

接口协议分析/Mock实战/服务端接口测试

性能测试

性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建

简历指导与模拟面试

1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务
名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘

课程亮点

名企私教服务  先学习后付费 高额奖学金

专属社群+晚自习在线答疑

5V1全方位辅导作业+考试强化学习效果

简历修改 模拟面试 就业内推 面试复盘


用户bPc5q3Z
12 声望1 粉丝