程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> SQL入門之多表查詢,SQL入門之

SQL入門之多表查詢,SQL入門之

編輯:MySQL綜合教程

SQL入門之多表查詢,SQL入門之


如果查詢需要針對兩個或者更多個表,則在需要涉及到表的連接操作(join)。

0.笛卡兒積

最簡單的連接方式是直接在from子句中加入兩個表,並且用join操作符隔開。形式為Table1 join Table2。下面是例子:

select e.fname, e.lname, d.name
from employee e join department d;

產生108行數據,這是因為,對於單純使用join進行的是笛卡兒積運算。對於兩個表,分別由m和n個元組,進行笛卡爾積後將產生mXn個元組。但這個不是我們需要的結果,包含由很多不需要的數據。若要得到正確的結果,則需要內連接。

1.內連接

內連接根據相同屬性值進行連接。只需要在上面的表中加上on和所需要相等的屬性即可。

select e.fname, e.lname, d.name
from employee e join department d
on e.dept_id = d.dept_id;

結果正是想要的。其實,在join前可加inner這是默認情況。但對於良好習慣,應該加上,以指明這是什麼連接,這有助於代碼閱讀。對於on e.dept_id = d.dept_id可以用using(dept_id)來代替。

以上結果也可以用SQL92的標准進行操作

 

select e.fname, e.lname, d.name
from employee e, department d
where e.dept_id = d.dept_id;

 

對於兩種標准,選擇在於自己,各有優缺點。

2.自連接

不僅在同一查詢中多次包含同一個表,還可以對表自身進行連接。只需要取不同別名即可。

總結:對於連接操作方法挺好懂的,比較簡單,對於連接3個以上,連接子查詢,不等連接等類似。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved