Oracle多表查询
Oracle中查询不但可以从一张表查询数据,还可以从多张表同时查询数据。
查询多张表的语法是:
SELECT * FROM <表1>, <表2>,…
例如,同时从employees表和departmenst表的“乘积”,即查询数据,可以这么写:
SELECT * FROM employees, departments;
这种一次查询两个表的数据,查询的结果也是一个二维表,它是employees表和departments表的“乘积”,即employees表的每一行与department表的每一行都两两拼在一起返回。结果集的列数是employees表和departments表的列数之和,行数是employees表和departments表的行数之积。
这种多表查询又称笛卡尔查询,在使用笛卡尔查询时要非常小心,由于结果集是目标表的行数乘积,对两个各自有100行记录的表进行笛卡尔查询将返回1万条记录,对两个各自有1万行记录的表进行笛卡尔查询将返回1亿条记录。
你可能还注意到了,上述查询的结果集有两列department_id,两列id是因为其中一列是employees表的department_id,而另一列是departments表的department_id,但是在结果集之中,不容易区分开来。
这样子,我们就可以利用 “列的别名”来给两个表各自的department_id列起别名:
select employees.department_id,departments.department_id
from employees,departments
在使用多表查询时,要使用表名.列名这样的方式来引用列和设置别名,这样就可以避免结果集的列名重复问题。但是用表名.列名这种方式列举两个表的所有列很麻烦,所以我们可以给表设置一个别名:
select e.department_id,d.department_id
from employees e,departments d
注意到FROM子句给表设置别名的语法是FROM <表名1> <别名1>, <表名2> <别名2>。这样我们用别名s和c分别表示employees表和department表。
在多表查询中添加WHERE条件的:
select e.department_id,d.department_id
from employees e,departments d
where d.department_id > 50
这个查询的结果集每行记录都满足条件d.department_id > 50。
在使用WHERE条件后结果集的数量大大减少了,这样更有利于找到我们需要的数据。
- Oracle 多个查询结果的交集、差集和并集
- SQLQuery 查询Oracle char类型返回一个字符有关问题
- 查询Oracle所有表的数据量
- Oracle客户端与plsql查询数据乱码修改成中文的快速解决方法
- oracle查询学生选择课
- Oracle 查询上级、查询机构部门信息
- Oracle——多表查询
- oracle 系统信息查询常用语句
- ORACLE查询被锁表及解锁方法
- oracle 毫秒数到日期 日期到毫秒数 转换 以及字符串查询 切割 替换 拼接
- ORACLE 第二步之SQL查询和SQL函数
- 16种oracle查询日期语句
- Oracle:sql语句查询没有重复的记录数目
- oracle查询临时表空间使用情况
- 查询oracle表中的字段名和字段类型
- Oracle分页查询的一个存储过程:
- Oracle SQL查询1--171220--oracle-sql
- oracle中查询被锁的表并释放session
- Oracle和SQL 2008分页查询
- 树结构表递归查询在ORACLE和MSSQL中的实现方法 [续]