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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 連線查詢超全詳解MySql
- oracle 連線查詢Oracle
- 【Oracle】--連線查詢Oracle
- 水煮oracle31----連線查詢&合併查詢Oracle
- 【由淺入深學MySQL】- MySQL連線查詢詳解MySql
- 連線查詢
- oracle 左右連線詳解Oracle
- SQL連線查詢SQL
- sql 連線查詢例項(left join)三表連線查詢SQL
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- MySQL之連線查詢和子查詢MySql
- mysql查詢語句5:連線查詢MySql
- select查詢之四:連線查詢
- 詳解表連線順序和連線方式是否影響查詢結果
- Oracle查詢轉換(四)連線謂詞推入Oracle
- 查詢oracle歷史最大連線[會話]數Oracle會話
- MySQL之連線查詢MySql
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- MySQL學習-連線查詢MySql
- Hibernate連線查詢join
- 【janes】多表查詢 外連線
- MySQL8:連線查詢MySql
- 資料庫資料的查詢----連線查詢資料庫
- oracle心得4--集合查詢@oracle中的多表連線@案例分析Oracle
- Oracle查詢轉換(三)外連線檢視合併Oracle
- 連線池和連線數詳解
- MySQL內連線查詢語句MySql
- 分組查詢連線號段
- Sql Server系列:多表連線查詢SQLServer
- SQL複雜查詢多表連線SQL
- JDBC 連線詳解JDBC
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- DNS 查詢原理詳解DNS
- 3.DQL資料查詢語言(內連線,外連線,自連線)
- Hibernate【查詢、連線池、逆向工程】
- PHP連線、查詢MySQL資料庫PHPMySql資料庫
- select查詢中union連線符