Oracle 20c 新特性知多少?ANSI SQL 全支持之 EXCEPT 運算符增強

原文鏈接:https://mp.weixin.qq.com/s/BIybb-LS1jIHR4tlHu_2Sg 複製至瀏覽器,即可查看

摘要:在 Oracle 20c 中,Oracle 增加了對於集合運算符的增強,全部支持了 ANSI SQL 標準的關鍵字,新增了 EXCEPT 關鍵字支持。

在 Oracle 20c 中,Oracle 增加了對於集合運算符的增強,全部支持了 ANSI SQL 標準的關鍵字,新增了 EXCEPT 關鍵字支持。

  1. SQL 集合操作支持 ANSI SQL 標準的所有關鍵字
  2. 20c 支持了 EXCEPT [ALL] 關鍵字 (等價 MINUS [ALL])
  3. 同時 MINUS 和 INTERSECT 支持關鍵字 ALL.
  4. 全 ANSI 標準支持,提高了遷移到 Oracle 數據庫的兼容性
Oracle 20c 新特性知多少?ANSI SQL 全支持之 EXCEPT 運算符增強

來看一個簡單的測試,創建兩個測試表:

<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 關鍵字方面的小增強。


分享到:


相關文章: