图解MySQL高级多表查询的概念和语法【乐搏TestPRO】

随着软件市场的发展,软件测试业务逻辑复杂度的提示,作为软件测试人员,数据库也成为比如的内容之一。比如:

基于功能方面,比如页面开发,对于BS架构的软件来说,在测试过程中会出现一些诸如session过期、数值校验、参数传递错误等现象,这样,你可以知道通常的数据库异常是什么原因导致的。

基于性能方面:当软件的性能测试遇到大h量数据加载时,需要考虑这个性能瓶颈是否由数据库造成。此刻需要做数据库的优化。

基于安全测试:做渗透测试需要SQL注入的场景。

对于MySQL基础的单表增删改查的学习,相对来说比较简单,但是多表查询对于很多初学者来说,是个重难点。一方面,90%以上的企业的面试笔试题里都是多表查询,如下图。此外,学会了数据库也是我们升职加薪的利器之一,同时,也能让我们占据市场核心竞争力。

接下来,  针对Mysql数据库的多表查询进行详细讲解。

以下不同查询方法的案例表,  产品表和产品分类表,如下:

一、子查询:

定义:子查询是一条select语句结果作为另一条select语法的一部分(查询条件、查询结果、表等)。或是将select语句的结果作为一张独立的表进行查询。

语法

1. select 字段… from 表1 where 条件 = 表2结果;  

2. select字段… from 表1,表2结果 where 主表.主键=从表.从键;

案例:

1. 查询化妆品产品的商品和分类信息

写法一:将分类表的查询结果作为产品表的查询条件:SELECT p.pid,p.pname,p.price,p.flag FROM product p  WHERE p.cetegory_id=(SELECT c.cid FROM cetegory c WHERE c.cname='化妆品');

写法二:将分类表的查询结果作为表:  SELECT p.pid,p.pname,p.price,p.flag,c.cname FROM  product p,(SELECT * FROM cetegory WHERE cname='化妆品')c WHERE p.cetegory_id=c.cid;

得到的结果:

注:如果想要本章内容涉及的视频资源,可以扫描文末二维码领取课程案例。

二、内连接

概念:将两张表或多张表共有的部分查询出来,关键是inner  join... on, 其中,有隐式内连接和显示内连接。

隐式内连接:不显示关键字inner join

显示内连接:显示关键字inner  join

语法:

隐式内连接:select * from 主表,从表where 主表.主键=从表.外键

显示内连接:select * from 主表 inner join 从表 on 主表.主键=从表.外键

案例:

查询产品表、分类表对应的详细信息:

SELECT * FROM cetegory c,product p WHERE  c.cid=p.cetegory_id;  #隐式

SELECT* FROM cetegory cLEFT OUTER JOINproduct pONc.cid=p.cetegory_id; #显示

查询结果:

三、外连接:

定义: 全连接分为:左外连接:左外连接是以左表为准,左表的数据必须每条都有。右外连接:右外连接时以右表为准,右表的数据必须每条有。

语法:

左外:select * from 主表 left outer join 从表 on 主表.主键=从表.从键

右外: select * from 主表  right outer join从表 on 主表,主键= 从表.从键

案例:

左外:SELECT* FROM cetegory c LEFT OUTER JOINproduct pONc.cid=p.cetegory_id;

右外:SELECT* FROM cetegory cRIGHT OUTER JOINproduct pONc.cid=p.cetegory_id;

查询结果:

四、全连接

定义: 显示左右表中全部数据全连接查询,是在内连接的基础上增加左右两边没有显示的数据。注意: MySQL并不支持全连接full JOIN 关键字,但是MySQL提供了UNION关键字,使用UNION 可以间接实现full JOIN功能。

案例:

SELECT * FROM product p LEFT JOIN cetegory c ON p.cetegory_id = c.cid

UNION

SELECT * FROM product a RIGHT JOIN cetegory b ON  a.cetegory_id = b.cid

查询结果:

今天的先分享到这里,每天持续更新软件测试行业趣闻、动态、技术干货,欢迎添加关注~~

扫码↓领取本文中的涉及的视频资料,以及30G软件测试学习大礼包,共计75节课,内容涵盖功能测试、性能测试、自动化测试、测试框架、安全测试、接口测试、测试面试题、测试简历模板等。

推荐阅读更多精彩内容