此篇紀錄使用 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%'
多多指教!! 歡迎交流!!
你不知道自己不知道,那你會以為你知道