1.概述
多表查询的意义在于可以从多个数据源中获取数据,并将这些数据按照一定的规则进行整合和分析,从而更好地了解和分析数据
单表查询语句:select * from 表名,是查询单张表的数据,查询多张表是在单表查询的基础就只需要使用逗号分隔多张表即可,如: select * from 表1, 表2;
-- 单张表查询
select * from 表1;
-- 多表查询
select * from 表1,表2;
通过 select * from 表1, 表2;可以得到表1和表2的所有组合情况,但是其中有不少的组合,是我们所不需要的,所以需要个进一步优化查询方案,去除无效的组合。
解决方法:给多表查询加上连接查询条件即可。
-- 优化方案
select * 表1,表2 where 查询条件;
因为我们进行多表查询时,表之间都是有关联性的,查询条件就可以是,主表的主键等于从表的外键,这样可以最大程度的保留有效记录。
2.分类:
(1)内连接:相当于查询表a,表b的交集部分
隐式内连接:
select 字段列表 from 表1 , 表2 where 条件 ... ;
显示内连接:
select 字段列表 from 表1 [ inner ] join 表2 on 连接条件 ... ;
(2)外连接:
左外连接:查询左表的所有数据,以及两张表交集部分
select 字段列表 from 表1 left [ outer ] join 表2 on 条件 ... ;
右外连接:查询右表的所有数据,,以及两张表交集部分
select 字段列表 from 表1 right [ outer ] join 表2 on 条件 ... ;
注:左右是相对与关键字left,right,关键字左边是左表,右边是右表。左外连接和右外连接是可以相互替换的,只需要调整在连接查询时SQL中,表结构的先后顺序就可以了。
(3)子查询
SQL语句中是可以嵌套SELECT语句的,称为嵌套查询,又称子查询。
SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );