关联查询(Join)是SQL中最重要和最常用的操作之一,Oracle提供了多种关联查询方式。以下是Oracle中关联查询的主要方法和使用技巧。
SELECT a.column1, b.column2
FROM table1 a
INNER JOIN table2 b ON a.key = b.key;
或者使用Oracle传统语法:
SELECT a.column1, b.column2
FROM table1 a, table2 b
WHERE a.key = b.key;
SELECT a.column1, b.column2
FROM table1 a
LEFT OUTER JOIN table2 b ON a.key = b.key;
传统Oracle语法:
SELECT a.column1, b.column2
FROM table1 a, table2 b
WHERE a.key = b.key(+);
SELECT a.column1, b.column2
FROM table1 a
RIGHT OUTER JOIN table2 b ON a.key = b.key;
传统Oracle语法:
SELECT a.column1, b.column2
FROM table1 a, table2 b
WHERE a.key(+) = b.key;
SELECT a.column1, b.column2
FROM table1 a
FULL OUTER JOIN table2 b ON a.key = b.key;
SELECT a.column1, b.column2
FROM table1 a
CROSS JOIN table2 b;
传统Oracle语法:
SELECT a.column1, b.column2
FROM table1 a, table2 b;
SELECT a.employee_name, b.employee_name AS manager_name
FROM employees a, employees b
WHERE a.manager_id = b.employee_id;
SELECT a.column1, b.column2, c.column3
FROM table1 a
JOIN table2 b ON a.key1 = b.key1
JOIN table3 c ON b.key2 = c.key2;
SELECT a.column1, b.column2
FROM table1 a JOIN table2 b USING (key_column);
SELECT column1, column2
FROM table1 NATURAL JOIN table2;
sql
SELECT /*+ LEADING(a b) USE_NL(b) */ a.column1, b.column2
FROM table1 a, table2 b
WHERE a.key = b.key;
-- 查询员工及其部门信息
SELECT e.employee_id, e.last_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
-- 查询所有部门及其员工(包括没有员工的部门)
SELECT d.department_name, e.last_name
FROM departments d
LEFT JOIN employees e ON d.department_id = e.department_id;
-- 多表连接示例
SELECT e.last_name, j.job_title, d.department_name, l.city
FROM employees e
JOIN jobs j ON e.job_id = j.job_id
JOIN departments d ON e.department_id = d.department_id
JOIN locations l ON d.location_id = l.location_id;
掌握这些关联查询技术将帮助您高效地从Oracle数据库中检索和组合数据。