多表查询

关系

一对多关系

多对多关系,可以通过建立中间表来进行关联。

连接查询

内连接

查询A和B表的交集

隐式内连接

select 字段列表 from 表1, 表2 where 条件...;
#eg
select emp.name, dept.name from emp, dept where emp.dept_id = dept.id;

显式内连接

select 字段列表 from 表1 [inner] join 表2 on 连接条件;
#eg
select e.name, d.name from emp e inner join dept d on e.dept_id = d.id;

外连接

左外连接

相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据

右外连接

相当于查询表2(右表)的所有数据包含表1和表2交集部分的数据

自连接

自连接可以是内连接查询也可是外连接查询

联合查询

对union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集

联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。

union是对查询结果的进行去重合并

union all是不去重

子查询

嵌套查询(以下是一个示例语法)

可以分为以下四类:

  • 标量子查询,子查询结果为单个值

  • 列子查询,子查询结果为一列

  • 行子查询,子查询结果为一行

  • 表子查询,子查询结果是多行多列

根据子查询出现的位置,可以分为:

  • where之后的子查询

  • from之后的子查询

  • select之后的子查询

列子查询

常用的操作符:in,not in,any,some,all

any和some是指有一个满足即可,all指都要满足

行子查询

常用操作符:=, <>, in, not in

表子查询

最后更新于

这有帮助吗?