2018年5月7日 星期一

SQL: Inner/Outer Join 資料表交叉(交集)查詢結合運算

SQL:資料表交叉查詢 Inner/Outer Join











[Join,通常稱做交集]

查詢左資料表(Left Table:Product)與右資料表(Right Table:Orders)之間 pid 相同的資料
select * from product as o INNER JOIN orders as p on o.pid=p.pid


(Inner Join) 只會傳回兩個資料表中滿足資料列聯結條件 (ON 之後) (Join Condition) 的資料列,其他不符合的資料列將不會顯示。

--------------------(LEFT OUTER JOIN)

(Outer Join) 會將兩個資料表中不符合聯結條件的資料一併顯示,
只是判斷以 LEFT 或 RIGHT為主 。

select * from product as o LEFT OUTER JOIN orders as p on o.pid=p.pid
除了滿足連結條件的資料列會顯示(如 INNER JOIN)外,在左邊(LEFT)資料表存在的資料列也會顯示在結果集(Result Set)中。右邊符合的資料列將會顯示NULL。

--------------------(RIGHT OUTER JOIN)
select * from product as o RIGHT OUTER JOIN orders as p  on o.pid=p.pid
 除了滿足連結條件的資料列會顯示(如 INNER JOIN)外,在右邊(RIGHT)資料表存在的資料也會顯示在結果集(Result Set)中。左邊符合的資料列將會顯示NULL。

--------------------(FULL OUTER JOIN)
select * from product as o FULL OUTER JOIN orders as p  on o.pid=p.pid
 除了滿足連結條件的資料列會顯示(如 INNER JOIN)外,在左邊及右邊資料表其中一方存在的資料列也都會顯示在結果集(Result Set)中。任一邊符合的資料列將會顯示NULL。

----------------------(CROSS JOIN)
CROSS JOIN (Cartesian product 笛卡兒乘積)

select * from product as o
cross join orders as p
這是一項不需要條件判斷的JOIN
會以左邊資料表每一資料項乘上右邊資料表所有的資料項。意即5*5=25的資料項結果


Regular Expression 正則表示式做字串比對

Regular Expression 中文翻成正則表示式 英文簡寫為 Regex 或 RegExp RegExp 是用來比對字串是不是有符合正確的格式 語法很簡單而且大部分語言都有支援它 使用時機 譬如說你需要在程式內請使用者輸入生日 你規定的格式 1996-08...