Oracle数据库——多表查询

一、关联查询

1.关联查询
select 表1的字段名,表2的字段名 from 表1 [别名1],表2 [别名2] where [别名1].字段名=[别名2].字段名;

Oracle数据库——多表查询_第1张图片
关联查询

如果不指定关联条件,那么返回的记录数为:m*n条记录也就是笛卡儿积。

Oracle数据库——多表查询_第2张图片
不指定定关联条件

2.内连接
select 表1的字段名,表2的字段名 from 表1 inner join 表2 on [别名1].字段名=[别名2].字段名;

Oracle数据库——多表查询_第3张图片
内连接

3.等值连接
select 表1的字段名,表2的字段名 from 表1,表2 where [别名1].字段名=[别名2].字段名;

Oracle数据库——多表查询_第4张图片
等值连接

查询返回结果和内连接一样

4.左/右外连接
显示左表/右表的所有信息
select 表1的字段名,表2的字段名 from 表1 left/right outer join 表2 on [别名1].字段名=[别名2].字段名;

Oracle数据库——多表查询_第5张图片
左连接
Oracle数据库——多表查询_第6张图片
右连接

左连接和右连接都是外连接,outer可以省略写。

在Oracle中特有的查询左右外连接方式:
左外:
select 表1的字段名,表2的字段名 from 表1,表2 where [别名1].字段名=[别名2].字段名(+);

Oracle数据库——多表查询_第7张图片
oracle的左外连接

右外:
select 表1的字段名,表2的字段名 from 表1,表2 where [别名1].字段名(+)=[别名2].字段名;

Oracle数据库——多表查询_第8张图片
oracle的右外连接

5.全连接
没有匹配结果也会出现
select 表1的字段名,表2的字段名 from 表1 full outer join 表2 on [别名1].字段名=[别名2].字段名;

Oracle数据库——多表查询_第9张图片
全连接

6.不等值连接
select 字段名 from 表1 [别名1],表2 [别名2] where 字段名 between 表1字段名 and 表2字段名;

7.自连接
select [别名].字段名 from 表1 [别名1],表2 [别名2] where [别名1].字段名1=[别名2].字段名2;

关联的表中有相同字段名,要使用表名/别名引用。

二、子查询

Oracle数据库——多表查询_第10张图片
sales中最高工资员工信息
Oracle数据库——多表查询_第11张图片
查询工资大于本部门平均工资的员工信息

你可能感兴趣的:(Oracle数据库——多表查询)