大家好,今天終於要開始介紹 SQL 了 ~
之後的 SQL 文章,會以 MS SQL 為基礎做講解。
在 SQL Server 中的暫存表分為 3 個類型:
可以使用 SELECT INTO
的語法將 SELECT 的結果插入到新的暫存表,以供暫時性的紀錄或計算使用,其插入方式如下:
SELECT Column1, Column2…
INTO [#Table_name]
FROM [Tables]
不過 SELECT INTO
不能插入至已存在的資料表,如果需要覆蓋的話,應該要先使用 DROP TABLE
指令:
DROP TABLE [#Table_name]
另外,可以加上 WHERE 0=1
,只複製資料表結構,而不複製裡面的內容。
SELECT Column1, Column2…
INTO [#Table_name]
FROM [Tables]
WHERE 0=1
INNER JOIN
:只會返回兩個資料表都符合連接結果 (條件) 的資料。LEFT JOIN
:只要左方的資料表符合條件,就取回資料。右方資料表不存在的欄位為 NULL
。RIGHT JOIN
:只要右方的資料表符合條件,就取回資料。左方資料表不存在的欄位為 NULL
。(對我來說,通常會將左方資料表稱為主資料表,右方資料表稱為子資料表,較能區分連接後的結果。)
推薦以下參考資料中的圖解,可以快速理解各種 JOIN 的關係。
當連接多個資料表時,使用 INNER JOIN
會比 WHERE
來得更容易閱讀。這是因為
SELECT * FROM table_a As a
INNER JOIN table_b AS b ON a.f_key=b.p_key
WHERE a.id='A01'
只單純的包含了在哪些值相同時連接資料,而 Where
則可以同時包含限定條件 (Which) 和連接 (Where-from),因此有多組資料表連接時,會比較需要花時間閱讀與理解。
SELECT * FROM table_a AS a, table_b AS b
WHERE a.f_key=b.p_key AND a.id='A01'