亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Java喬曉松-oracle的多表查詢

系統 2497 0

笛卡爾集

笛卡爾集會在下面條件下產生 :

省略連接條件

連接條件無效

所有表中的所有行互相連接

為了避免笛卡爾集,可以在 WHERE 加入有效的連接條件。

在實際運行環境下,應避免使用全笛卡爾集。

?

連接的類型

O racle 連接 :

Equijoin :等值連接

Non-equijoin :不等值連接

Outer join :外連接

Self join :自連接

????? SQL: 1999

?

Cross joins

Natural joins

Using clause

Full or two sided outer joins

Oracle 連接

使用連接在多個表中查詢數據。

SELECT table1.column, table2.column

FROM??? table1, table2

WHERE? table1.column1 = table2.column2;

?

WHERE 字句中寫入連接條件。

在表中有相同列時,在列名之前加上表名前綴

等值連接

SELECT employees.employee_id, employees.last_name,

?????? employees.department_id, departments.department_id,

?????? departments.location_id

FROM?? employees, departments

WHERE? employees.department_id = departments.department_id;

多個連接條件與 AND 操作符

區分重復的列名

使用表名前綴在多個表中區分相同的列。

在不同表中具有相同列名的列可以用表的別名加以區分。

表的別名

使用別名可以簡化查詢。

使用表名前綴可以提高執行效率。

如果使用了表的別名,則不能再使用表的真名

?

連接多個表

連接 n 個表 , 至少需要 n-1 個連接條件。例如:連接三個表,至少需要兩個連接條件。

非等值連接

SELECT e.last_name, e.salary, j.grade_level

FROM?? employees e, job_grades j

WHERE? e.salary

?????? BETWEEN j.lowest_sal AND j.highest_sal;

外連接

內連接和外連接 (1)

內連接 : 合并具有同一列的兩個以上的表的行 , 結果集中不包含一個表與另一個表不匹配的行

外連接 : 兩個表在連接過程中除了返回滿足連接條件的行以外還返回左(或右)表中不滿足條件的行,這種連接稱為左(或右)外聯接。沒有匹配的行時 , 結果表中相應的列為空 (NULL). 外連接的 WHERE 子句條件類似于內部鏈接 , 但連接條件中沒有匹配行的表的列后面要加外連接運算符 , 即用圓括號括起來的加號 (+).

外連接語法

使用外連接可以查詢不滿足連接條件的數據。

外連接的符號是 (+)

SELECT table1.column, table2.column

FROM??? table1, table2

WHERE? table1.column(+) = table2.column;

?

SELECT table1.column, table2.column

FROM??? table1, table2

WHERE? table1.column = table2.column(+);

?

外連接

SELECT e.last_name, e.department_id, d.department_name

FROM?? employees e, departments d

WHERE? e.department_id(+) = d.department_id ;

自連接

SELECT worker.last_name || ' works for '

?????? || manager.last_name

FROM?? employees worker, employees manager

WHERE? worker.manager_id = manager.employee_id ;

使用 SQL: 1999 語法連接

使用連接從多個表中查詢數據:

SELECT table1.column, table2.column

FROM??? table1

[CROSS JOIN table2] |

[NATURAL JOIN table2] |

[JOIN table2 USING (column_name)] |

[JOIN table2

? ON(table1.column_name = table2.column_name)] |

[LEFT|RIGHT|FULL OUTER JOIN table2

? ON (table1.column_name = table2.column_name)];

叉集

使用 CROSS JOIN 子句使連接的表產生叉集。

叉集和笛卡爾集是相同的。

SELECT last_name, department_name

FROM?? employees

CROSS JOIN departments ;

自然連接

NATURAL JOIN 子句,會以兩個表中具有相同名字的列為條件創建等值連接。

在表中查詢滿足等值條件的數據。

如果只是列名相同而數據類型不同,則會產生錯誤。

SELECT department_id, department_name,

?????? location_id, city

FROM?? departments

NATURAL JOIN locations ;

使用 USING 子句創建連接

NATURAL JOIN 子句創建等值連接時,可以使用 USING 子句指定等值連接中需要用到的列。

使用 USING 可以在有多個列滿足條件時進行選擇。

不要給選中的列中加上表名前綴或別名。

NATURAL JOIN USING 子句經常同時使用。

SELECT e.employee_id, e.last_name, d.location_id

FROM?? employees e JOIN departments d

USING (department_id) ;

使用 ON 子句創建連接

自然連接中是以具有相同名字的列為連接條件的。

可以使用 ON 子句指定額外的連接條件。

這個連接條件是與其它條件分開的。

ON 子句使語句具有更高的易讀性。

SELECT e.employee_id, e.last_name, e.department_id,

?????? d.department_id, d.location_id

FROM?? employees e JOIN departments d

ON???? (e.department_id = d.department_id);

使用 ON 子句創建多表連接

SELECT employee_id, city, department_name

FROM?? employees e JOIN departments d

ON???? d.department_id = e.department_id

JOIN?? locations l

ON???? d.location_id = l.location_id;

內連接和外連接 (2)

SQL: 1999 中,內連接只返回滿足連接條件的數據

兩個表在連接過程中除了返回滿足連接條件的行以外還返回左(或右)表中不滿足條件的行,這種連接稱為左(右)外聯接。

兩個表在連接過程中除了返回滿足連接條件的行以外還返回兩個表中不滿足條件的行,這種連接稱為滿外聯接。

左外聯接

SELECT e.last_name, e.department_id, d.department_name

FROM?? employees e

LEFT OUTER JOIN departments d

ON?? (e.department_id = d.department_id) ;

右外聯接

SELECT e.last_name, e.department_id, d.department_name

FROM?? employees e

RIGHT OUTER JOIN departments d

ON??? (e.department_id = d.department_id) ;

滿外聯接

SELECT e.last_name, e.department_id, d.department_name

FROM?? employees e

FULL OUTER JOIN departments d

ON?? (e.department_id = d.department_id) ;

?

Java喬曉松-oracle的多表查詢


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天天狠天天天天透在线 | 手机看片日韩日韩韩 | 另类重口性色老妇 | 日韩毛片在线观看 | 在线人成精品免费视频 | 日韩不卡在线播放 | 欧美成人一区二区三区不卡视频 | 中国欧美一级毛片免费 | 精品免费福利视频 | 久久香蕉国产精品一区二区三 | 女人夜色黄网在线观看 | 俄罗斯三级毛片 | 日韩一区国产二区欧美三区 | 亚洲激情视频在线播放 | 国产精品揄拍100视频 | 欧美视频在线一区二区三区 | 狠狠色欧美亚洲综合色黑a 狠狠色视频 | 俄罗斯美女逼 | 久久这里有精品视频 | 91亚洲国产成人久久精品网址 | 色老头成人免费视频天天综合 | 国产草| 免费观看欧美精品成人毛片能看的 | 四虎永久免费地址在线网站 | 国精品一区二区三区 | 国产成+人+亚洲+欧美+日韩 | 不卡一区二区在线观看 | 成人免费视频视频在线观看 免费 | 久久艹免费视频 | 国产精品免费精品自在线观看 | se色综合视频 | 二级毛片免费观看全程 | 日韩欧美精品在线视频 | 日韩精品一区二区三区免费观看 | 亚洲系列中文字幕一区二区 | 成人精品视频网站 | 涩涩虎| 91亚洲国产三上悠亚在线播放 | 国产图片区 | 久草手机视频在线 | 国产高清精品自在久久 |