oracle連線查詢詳解
導讀 | 連線查詢是資料庫查詢語句中使用頻率很高的查詢方式,下面根據Oracle提供的官方文件學習一下連線查詢。 |
一 Equijoins 等值連線
等值連線是條件連線在連線運算子為“=”號時的特例。(相對於非等值連線,如:between...and條件)。它是從關係R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組。
SQL> select e.employee_id, e.last_name, 2 e.department_id, d.department_id, 3 d.location_id 4 from employees e, departments d 5 where e.department_id = d.department_id; EMPLOYEE_ID LAST_NAME DEPARTMENT_ID DEPARTMENT_ID LOCATION_ID ----------- ------------------------- ------------- ------------- ----------- 198 OConnell 50 50 1500 199 Grant 50 50 1500 200 Whalen 10 10 1700 201 Hartstein 20 20 1800 ......
二 Self joins 自連線
自連線(self join)是SQL語句中經常要用的連線方式,使用自連線可以將自身表的一個映象當作另一個表來對待,從而能夠得到一些特殊的資料。
SELECT e1.last_name||' works for '||e2.last_name "Employees and Their Managers" FROM employees e1, employees e2 WHERE e1.manager_id = e2.employee_id AND e1.last_name LIKE 'R%' ORDER BY e1.last_name; Employees and Their Managers ------------------------------- Rajs works for Mourgos Raphaely works for King Rogers works for Kaufling Russell works for King
三 Cartesian Products 笛卡爾積
如果2個表連線查詢而沒有連線條件,則oracle返回他們的笛卡爾積。即oracle返回一個表裡每一行與另一個表每一行的組合(15 X 4)。
SCOTT@orcl> select count(1) from emp; COUNT(1) ---------- 15 SCOTT@orcl> select count(1) from dept; COUNT(1) ---------- 4 SCOTT@orcl> select count(1) from emp, dept; COUNT(1) ---------- 60
四 Inner Joins 內連線
內連線也叫簡單連線,是2個或更多表的關聯並且僅返回那些滿足連線條件的行。
select e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON e.department_id = d.department_id;
五 Outer joins 外連線
簡單連線的擴充套件。分為左外連線(Left outer joins)、右外連線(Right outer joins)、全外連線(Full outer joins)和Partitioned Outer Joins(分割槽外連線,用於資料倉儲)。
SELECT d.department_id, e.last_name FROM departments d LEFT OUTER JOIN employees e ON d.department_id = e.department_id ORDER BY d.department_id, e.last_name;
另外一種寫法:
SELECT d.department_id, e.last_name FROM departments d, employees e WHERE d.department_id = e.department_id(+) ORDER BY d.department_id, e.last_name;
Oracle 官方推薦使用第一種寫法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2768090/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 連線查詢Oracle
- MySQL 連線查詢超全詳解MySql
- 【由淺入深學MySQL】- MySQL連線查詢詳解MySql
- 連線查詢
- SQL連線查詢SQL
- sql 連線查詢例項(left join)三表連線查詢SQL
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- oracle 查詢鎖 && 解鎖Oracle
- Oracle查詢鎖、解鎖Oracle
- 1112跨表連線查詢
- MySQL學習-連線查詢MySql
- 深圳軟體測試學習:【資料庫】-【oracle】-連線查詢資料庫Oracle
- 【從零開始學習Oracle資料庫】(3)函式與子查詢和連線查詢Oracle資料庫函式
- DNS 查詢原理詳解DNS
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- MySQL內連線查詢語句MySql
- Hibernate【查詢、連線池、逆向工程】
- 連線池和連線數詳解
- Oracle 查詢Oracle
- JDBC 連線詳解JDBC
- 詳解css媒體查詢CSS
- rails的介面查詢詳解AI
- 詳解二分查詢
- MyBatis使用四(查詢詳解)MyBatis
- 詳解MySQL--慢查詢MySql
- PHP連線、查詢MySQL資料庫PHPMySql資料庫
- 3.DQL資料查詢語言(內連線,外連線,自連線)
- MySQL講義第27講——select 查詢之自連線查詢MySql
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- Oracle psu查詢Oracle
- oracle 基本查詢Oracle
- oracle常用查詢Oracle
- MYSQL學習筆記23: 多表查詢(自連線內連線+左右外連線)MySql筆記
- 離線查詢與線上查詢
- 一、oracle 高水位線詳解Oracle