2014年11月5日 星期三

【大三課程】資料庫JOIN【學習歷程】

  SQL的JOIN(連結)作用在於利用不同資料表中,相同欄位的關聯性,以抽象方式暫時將兩資料表合成一個資料表,幫助作查詢、計算動作。

   以下三種得到結果相同,較推薦使用JOIN的方法
SELECT c.clientNo,fName,propertyNo,comment
(1)FROM Client c,Viewer v
    WHERE c.clientNo=v.clientNo
(2)FROM Client c JOIN Viewer v ON c.clientNo=v.clientNo
(3)FROM Client JOIN Viewer USING clientNo



ON加條件,USING加欲參考的共同值

JOIN分為INNER、LEFT、RIGHT、FULL
INNER - 返回符合條件並且不會有空值
LEFT - 左邊全部顯示,右邊沒值則顯示空值
RIGHT - 右邊全部顯示,左邊沒值則顯示空值
FULL - 全部顯示

當SELECT出來的值只有一個時,可作比較大小的動作,回傳True/False
30000  > SELECT AVG(salary)
FROM staff

子查詢 - WHERE裡再做一次查詢動作
SELECT No,name,position
FROM Staff
WHERE branchNo = (SELECT branchNo FROM branch WHERE country='Japan');

判斷子查詢是否有值 - EXIST  查詢是否為空值 - NOT EXSIT
SELECT No,name,position
FROM Staff s
WHERE EXIST(SELECT branchNo FROM Branch b WHERE s.branchNo=b.branchNo)

UNION 連集 INTERSET 交集

SELECT Teacher_Name FROM Teaching
UNION
SELECT Teacher_Name FROM Class
會列出所有老師,不管是否有帶班,重覆的只會顯示一次若要重覆,改為ALL UNION

SELECT Teacher_Name FROM Teaching
INTERSECT
SELECT Teacher_Name FROM Class
會列出既有帶班也有教課的老師

INSERT - 可用來插入資料
INSERT INTO Staff VALUE('','','','', ,'')  不加''的內容為數值
較推薦使用以下方法插入,可明確指定加入欄位
INSERT INTO Staff(No,Name,position,salary) VALUE('A002','Bob','Manager',50000)
也可將查詢或計算結果插入










沒有留言:

張貼留言