多表查询
作者:互联网
多表查询
我们一般用select * from 表名的方式进行单表数据的查询,但是多表查询不是在表名后面再加一个表名,这样查询出来的数据会存在一个笛卡尔积的情况(笛卡尔积:取A ,B集合所有组合),会造成数据的重复以及数据的不准确
多表查询:就是从多张表查询数据
连接查询
1. 内连接:相当于查询AB两张表的交集数据
有AB两张表,A表的某个字段是B表的主键,那么这两张表就构成了关联关系,内连接就是通过查询语句后面加一个where条件的方式完成查询,如:
select * from 主表名 where 从表.外键=主表.主键;
-- 隐式内连接
select * from 主表名 inner join 从表 On 从表.外键=主表.主键;
-- 显示内连接,inner可省略不写
- 外连接:
- 左外连接:相当于查询A表所有数据和交集部分的数据
select 字段列表 from 表1 left [outer] join 表2 on 条件;
- 右外连接:相当于查询B表所有数据和交集部分的数据
select 字段列表 from 表1 right [outer] join 表2 on 条件;
以上左右外连接的outer关键字可以省略不写
- 子查询
概念:查询中嵌套另外一个查询,我们称嵌套进去的查询语句为子查询
子查询根据查询结果的不同作用也不同,可以分为:
- 单行单列:作为条件值,使用 = != > <等进行条件判断
select 字段列表 from 表 where 字段名 = (子查询);
- 多行单列:作为条件值,使用In等关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询);
- 多行多列
select 字段列表 from (子查询) where 条件;
标签:多表,查询,主表,where,连接,select 来源: https://www.cnblogs.com/xiaoheyyds/p/16253399.html