原文鏈接:https://mp.weixin.qq.com/s/BIybb-LS1jIHR4tlHu_2Sg 複製至瀏覽器,即可查看
摘要:在 Oracle 20c 中,Oracle 增加了對於集合運算符的增強,全部支持了 ANSI SQL 標準的關鍵字,新增了 EXCEPT 關鍵字支持。
在 Oracle 20c 中,Oracle 增加了對於集合運算符的增強,全部支持了 ANSI SQL 標準的關鍵字,新增了 EXCEPT 關鍵字支持。
- SQL 集合操作支持 ANSI SQL 標準的所有關鍵字
- 20c 支持了 EXCEPT [ALL] 關鍵字 (等價 MINUS [ALL])
- 同時 MINUS 和 INTERSECT 支持關鍵字 ALL.
- 全 ANSI 標準支持,提高了遷移到 Oracle 數據庫的兼容性
來看一個簡單的測試,創建兩個測試表:
<code>[oracle@enmotech ~]$ sqlplus / as sysdba
SQL*Plus: Release 20.0.0.0.0 - Production on Tue Apr 21 07:42:20 2020
Version 20.2.0.0.0
Copyright (c) 1982, 2020, Oracle. All rights reserved.
Connected to:
Oracle Database 20c Enterprise Edition Release 20.0.0.0.0 - Production
Version 20.2.0.0.0
SQL> create table enmo(id number,name varchar2(20));
Table created.
SQL> create table yhem(id number,name varchar2(20));
Table created.
SQL> insert into enmo values(1,'EYGLE');
1 row created.
SQL> insert into yhem values(1,'EYGLE');
1 row created.
SQL> insert into enmo values(2,'KAMUS');
1 row created.
SQL> insert into yhem values(2,'KAMUS');
1 row created.
SQL> insert into yhem values(3,'YANGTINGKUN');
1 row created.
SQL> insert into yhem values(4,'ORA-600');
1 row created.
/<code>
EXCEPT 和 MINUS 等價比較:
<code>SQL> select * from yhem
2 minus
3 select * from enmo;
\tID NAME
---------- --------------------
\t 3 YANGTINGKUN
\t 4 ORA-600
SQL> select * from yhem
2 except
3 select * from enmo;
\tID NAME
---------- --------------------
\t 3 YANGTINGKUN
\t 4 ORA-600
SQL> select * from enmo
2 minus
3 select * from yhem;
no rows selected
SQL> insert into enmo values(5,'LAOXIONG');
1 row created.
SQL> select * from enmo
2 minus
3 select * from yhem;
\tID NAME
---------- --------------------
\t 5 LAOXIONG
SQL> select * from enmo
2 except
3 select * from yhem;
\tID NAME
---------- --------------------
\t 5 LAOXIONG
/<code>
EXCEPT 通過 ALL 關鍵字顯示所有差異記錄,不去重複值:
<code>SQL> insert into yhem values(4,'ORA-600');
1 row created.
SQL> select * from yhem
2 except
3 select * from enmo;
\tID NAME
---------- --------------------
\t 3 YANGTINGKUN
\t 4 ORA-600
SQL> select * from yhem
2 except all
3 select * from enmo;
\tID NAME
---------- --------------------
\t 3 YANGTINGKUN
\t 4 ORA-600
\t 4 ORA-600
/<code>
這是 Oracle 20c 中關於 SQL 關鍵字方面的小增強。
閱讀更多 數據和雲智能 的文章