[SQL] 查詢語法基本介紹 Part 4 (關連線處理/合併查詢_Join)
基本概念: 將儲存在多個資料表的欄位值取出,並使用合併查詢合併成所需要的查詢結果(一張大資料表)。 通常是使用資料表之間的關聯欄位來進行查詢,但也可以不使用關聯性建立資料查詢。 *將因正規化分散的資料合併成一張表(JOIN)* Select (要找什麼樣的資料欄位) From (從哪些資料表) Where (各表之間怎麼連/各表之間的關聯性) 備註:基本上JOIN的操作都會需要使用ER圖! 類型介紹: 1. INNER JOIN 內部合併查詢 查詢在兩張資料表中,彼此都存在且符合合併查詢條件的資料。 若各自只出現在自己的資料表中的資料則全部不要。 換個說法就是,兩邊資料表都有資料時才會合併,對方沒有的就刪掉(左右不相等的就刪掉/其中一邊有NULL值的也會刪掉。) 範例: 列出身分證號、姓名、地址、電話 SELECT userinfo.uid, cname, address, tel FROM userinfo, live, house, phone WHERE userinfo.uid = live.uid AND live.hid = house.hid AND house.hid = phone.hid 2. LEFT (OUTER) JOIN 左側外部合併查詢 在合併的兩個資料表中,取回左邊資料表內的所有紀錄資料,不管右邊資料是否有相對應的資料存在。 換一種說法: 左側外部合併查詢中,關聯線的左側資料比較多。 除了兩邊共有的資料外,也取出左側的資料表的其他紀錄。 重點提醒: 若有合併欄位無資料,資料庫會給該欄位NULL值。 如果要讓NULL值顯示自訂的訊息。可用isnull(欄位, “自訂的訊息”)。 備註: 如果資料型態不同,需轉換可使用 cast(欄位 as 資料型態) 用參考索引控制多的資料在同一邊(參考索引所在的那一邊) 資料多的在左邊->left join 反之 right join left + right = outer join 範例: 列出身分證號、姓名、地址、電話 SELECT userinfo.uid, cname, address, tel FROM userin...