關係代數中的操作可以分爲兩類:
(一):傳統的集合操作。並,差,交,笛卡爾積。
(二):擴充的關係操作:投影(關係表的垂直分隔),選擇(關係表的水平分隔),連接(關係表的結合),除法(笛卡爾積的逆運算)。
1.並 -- Union
在oracle 裏面的並有兩種union,union all。區別在於union過濾重複行!一般在沒有重複行的時候使用union all這樣查詢的效率快。
eg:
select * from A union (all) select * from B
2.差 -- minus
eg:select * from B minus select * from B
3.笛卡爾積 Cartesian Product -- cross join
eg:select * from A cross join B
結果:行數:A的行數和B的行數的乘積;列數:A的列數加B的列數。
關係代數的四個組合操作
1.交 intersect
eg: select * from A intersect select * from B;(A表,B表 需要有相同的字段值 即有相同的元數)
結果:A 表 和 B表的交集
2.連接
在關係代數裏面的連接分爲兩種:θ連接和F連接。
θ連接:笛卡爾積加上選擇操作。
F連接:滿足某一個公式F的連接。
θ連接:重要的當θ連接的操作符爲=的時候就是我們常說的等值連接。
等值連接的結果:如果沒有做投影操作,選擇出來的笛卡爾積,選擇滿足相等條件的行。列爲做連接表的列和。
eg:select * from A ,B where A.id=B.id。
自然連接natural Join
類似上面的等值連接,先做笛卡爾積,然後選擇元組。其中的公共屬性只出現一次。
eg:select * from A natural join B ===行數等於===select * from A ,B where A.id=B.id(注意列數的不一樣)
3.外連接 outer join (包括left (outer) join ,right (outer) join, full outer join)
eg:select * from A left outer join B on(A.id=B.id)
equals
select * from A left join outer join using(id);--using後面的()不能少equals
select * from A ,B where A.id = B.id(9i之後的寫法)(+)
把外連接用加好(+)括起來表示,那括號放在那個表上,標識這個表沒有匹配沒有關係可以用控制補充上去,這個+動作就是填充空值的動作.
基本表連接:
連接類型:inner join ; left outer join ;right outer join ;full outer join;
連接條件:natural(應該寫在連接類型的左邊);on 等值連接的條件(應該寫在連接類型的右邊); using(A1,A2,..An)(應該寫在連接類型的右邊)
連接類型分爲:內和外連接兩種。內連接是等值的F連接,外連接又分爲左,右,完全外連接