SQL語法紀錄

  • 3041
  • 0
  • 2017-08-30

此篇紀錄使用 SQL語法查詢 資料庫的基本指南。


 

別名 :

    SELECT "表格別名"."欄位1" "欄位別名"  FROM "表格名" "表格別名"

    SELECT b.code 書編號 ,b.bookName 書名 FROM book b

 

Like :

  • 'A_Z': 所有以 'A' 起頭,另一個任何值的字原,且以 'Z' 為結尾的字串。 'ABZ' 和 'A2Z' 都符合這一個模式,而 'AKKZ' 並不符合 (因為在 A 和 Z 之間有兩個字元,而不是一個字元)。

  • 'ABC%': 所有以 'ABC' 起頭的字串。舉例來說,'ABCD' 和 'ABCABC' 都符合這個模式。

  •  '%XYZ': 所有以 'XYZ' 結尾的字串。舉例來說,'WXYZ' 和 'ZZXYZ' 都符合這個模式。

  •  '%AN%': 所有含有 'AN'這個模式的字串。舉例來說, 'LOS ANGELES' 和 'SAN FRANCISCO' 都符合這個模式。

  • '_AN%': 所有第二個字母為 'A' 和第三個字母為 'N' 的字串。舉例來說,'SAN FRANCISCO' 符合這個模式,而 'LOS ANGELES' 則不符合這個模式。

  •   以下SQL語法表示只要是A開頭的都抓取 : 

    SELECT *FROM table WHERE column LIKE ‘A%’

 

內部連結 : 

    SELECT A1.column1, SUM(A2.column2) FROM table1 A1, table2 A2 WHERE A1.column3 = A2.column3 GROUP BY A1.coulmn2

 

子查詢 :

SELECT column1, SUM(column3) FROM table1 WHERE column1 IN;
(SELECT column1 FROM table2 WHERE column2 = 'value') GROUP BY column1

 

INNER JOIN :

合併時,以左右兩側都相等,才結合取出,取得的筆數為最少。
SELECT a.store_name, b.regio_name, a.sales FROM store_information a INNER JOIN geography b ON a.store_name = b.store_name

 

LEFT JOIN :

以左邊的資料表為主,可查出右邊的資料表為null的記錄。
SELECT a.store_name, b.regio_name FROM store_information a LEFT JOIN geography b ON a.store_name = b.store_name

 

FULL JOIN :

同時取得左右側資料表的資料,需指定做連結的欄位,左右兩側都有可能有Null記錄。
SELECT *FROM store_information a FULL JOIN geography b ON a.store_name = b.store_name

 

三個資料表做交集關聯:

SELECT a.store_name, b.regio_name, c.emp_name, c.sales FROM;
(store_information a LEFT JOIN geography b ON a.store_name=b.store_name);
LEFT JOIN employee c ON a.store_name = c.store_name AND a.sales = c.sales
稍做解釋 : SQL會先產出a LEFT JOIN b的合併資料表,假設該資料表為D_ab。之後D_ab會跟c 做LEFT JOIN產出結果資料表 (D_ab)_c

 

合併時的小技巧 :

    SELECT A.ID, B.Name FROM A INNER JOIN B ON A.ID=B.ID INNER C ON C.ID=A.CID WHERE A.Num>0 AND C.Name LIKE 'D%'

可修改成以下語法較有效率: (在合併時,就同時去除不合的記錄,以提高合併時的效率)

    SELECT A.ID , B.Name FROM A INNER JOIN B ON A.ID=B.ID AND A.Num>0 INNER C ON C.ID=A.ID WHERE C.Name LIKE 'D%'

 

 


多多指教!! 歡迎交流!!

你不知道自己不知道,那你會以為你知道