国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Oracle查詢優化-03操作多個表

2019-11-09 13:29:02
字體:
來源:轉載
供稿:網友

3.1 記錄集的疊加

問題

要將來自多個表的數據組織到一起,就像將一個結果集疊加到另外一個上面一樣。 這些表不必有相同的關鍵字,但是他們對應列的數據類型必須相同。

解決方案

使用union all 把多個表中的行組合到一起。

select ename, deptno from emp where deptno = 10union allselect '-----', deptno from deptunion allselect dname, deptno from dept;

結論

UNION ALL將多個來源的行組合起來,放到一個結果集中。 所有select列表中的項目數和對應項目的數據類型必須要匹配。

UNION ALL會包括重復的項目,如果要篩選掉重復項,可以使用UNION運算符。

如果使用UNION而不是UNION ALL,很可能是為了去除重復項而進行排序操作。 在處理大結果集時要記住,使用UNION子句大致相當于下面的查詢,對UNION ALL子句的查詢結果使用DISTINCT子句

SQL> select distinct deptno 2 from (select deptno from dept 3 union all 4 select deptno from dept);DEPTNO------ 30 20 40 10SQL> SQL> select deptno 2 from dept 3 union 4 select deptno from dept 5 ;DEPTNO------ 10 20 30 40SQL> 通常,查詢中不要使用distinct,除非確定有必要這樣做; 對于UNION而言也是如初,除非確定有必要,一般使用UNION ALL,而不適用UNION。

3.2 組合相關的行

問題

多表有一些相同的列,或者有些列的值相同,需要通過關聯這些列得到結果。

解決方案

select a.ename ,b.dname from emp a ,dept b where a.deptno = b.deptno and a.deptno = 10 ;select a.ename ,b.dname from emp a inner join dept b on a.deptno = b.deptno where a.deptno = 10 ;

結論

第二種解決方式是利用顯示的JOIN子句(inner 關鍵字可省略),如果希望將聯接邏輯關系放在from子句中,而不是在where 子句中,可以使用JOIN子句, 這兩種方式都符合ANSI標準。


3.4 IN、EXISTS 和 INNER JOIN

問題

解決方案

結論


3.5 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 解析

問題

解決方案

結論


3.6 自關聯

問題

解決方案

結論


3.7 NOT IN、NOT EXISTS 和 LEFT JOIN

問題

解決方案

結論


3.8 外連接中的條件不要亂放

問題

解決方案

結論


3.9 檢測兩個表中的數據及對應數據的條數是否相同

問題

解決方案

結論


3.10 聚集與內連接

問題

解決方案

結論


3.11 聚集與外連接

問題

解決方案

結論


3.12 從多個表中返回丟失的數據

問題

解決方案

結論


3.13 多表查詢時的空值處理

問題

解決方案

結論



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡族自治县| 岑巩县| 德格县| 江城| 永春县| 景洪市| 巴彦县| 布尔津县| 麻城市| 石泉县| 阿拉善盟| 息烽县| 扶绥县| 伊宁市| 敖汉旗| 航空| 巴东县| 湘潭县| 河东区| 获嘉县| 子洲县| 三门峡市| 巴彦淖尔市| 岳西县| 金川县| 清水河县| 湛江市| 北京市| 象山县| 嘉禾县| 巨野县| 正阳县| 福安市| 牡丹江市| 寿宁县| 措美县| 乐都县| 嘉义县| 榆林市| 嘉黎县| 稻城县|