开发工具与关键技术:Oracle
作者:李成富
撰写时间:2019年4月07日
作用与性质:用于连接两个或多个表进行数据的查询与操作
oracle有两种进行多表连接的方法:
第一种方法是SQL1999写法,这种写法适用于大多数据库软件
列如:
SELECT * FROM SB S JOIN XB X ON S.SBID=X.SBID 内连接
只返回满足连接条件的数据
SELECT * FROM SB S LEFT JOIN XB X ON S.SBID=X.SBID 左外连接
除了返回满足连接条件的行以外还返回左表中不满足条件的行
SELECT * FROM SB S RIGHT JOIN XB X ON S.SBID=X.SBID 右外连接
除了返回满足连接条件的行以外还返回右表中不满足条件的行
SELECT * FROM SB S FULL JOIN XB X ON S.SBID=X.SBID 满外连接
返回满足连接条件的行以外还返回两个表中不满足条件的行
以上都是两表的等值连接,还有不等值连接:
SELECT * FROM SB S JOIN SB S ON S.alary>S.salary 不等值连接
返回满足连接条件的行
第二种方法是oracle自带写法,这种写法只适用oracle
SELECT * FROM SB S, XB X where S.SBID=X.SBID 内连接
返回满足连接条件的数据
SELECT * FROM SB S, XB X where S.SBID(+)=X.SBID 左外连接
除了返回满足连接条件的行以外还返回左表中不满足条件的行
SELECT * FROM SB S, XB X where S.SBID=X.SBID(+) 右外连接
除了返回满足连接条件的行以外还返回右表中不满足条件的行
SELECT * FROM SB S, XB X where S.SBID(+)=X.SBID(+) 满外连接
返回满足连接条件的行以外还返回两个表中不满足条件的行
SELECT * FROM SB S,SB S where S.alary>S.salary 不等值连接
3、其它连接方式:
叉 集:CROSS
SELECT * FROM SB S CROSS JOIN XB X 叉集和笛卡尔集是相同的
自然连接: NATURAL 会以两个表中具有相同名字的列为条件创建等值连接
SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations
可以使用 USING 子句指定等值连接中需要用到的列。
SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations USING(epartment_id)
可以使用 ON 子句指定额外的连接条件。
SELECT department_id, department_name,
location_id, city
FROM departments
NATURAL JOIN locations USING(epartment_id)
ON (e.department_id > d.department_id)