oracle 關係代數

關係代數中的操作可以分爲兩類:

(一):傳統的集合操作。並,差,交,笛卡爾積。

(二):擴充的關係操作:投影(關係表的垂直分隔),選擇(關係表的水平分隔),連接(關係表的結合),除法(笛卡爾積的逆運算)。

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連接,外連接又分爲左,右,完全外連接

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章