viernes, 10 de abril de 2020

Oracle Database 20c en Always Free Services: Nuevas características Mejoras SET y Multi SET


La versión de base de datos Oracle 20c, presenta el nuevo operador EXCEPT/EXCEPT ALL

EXCEPT es un estándar ANSI.

Oracle 20c agrega soporte para la opción "ALL" para operadores de conjuntos INTERSECT y MINUS

EXCEPT el operador del conjunto elimina las filas del primer conjunto que también aparecen en el segundo conjunto –con eliminación duplicada– sinónimo de MINUS y tiene exactamente la misma semántica

EXCEPT ALL devuelve filas presentes en el primer conjunto pero no en el segundo. –Puede haber duplicados en el resultado final.

Veamos su funcionamiento, a partir de la creación de un par de tablas con algunos pocos registros.

[oracle@oracledbacr ~]$ sqlplus aprendizaje/ORacle_20_21@lab2

SQL*Plus: Release 20.0.0.0.0 - Production on Sat Apr 11 00:48:42 2020
Version 20.2.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Fri Apr 10 2020 23:51:24 +00:00

Connected to:
Oracle Database 20c EE Extreme Perf Release 20.0.0.0.0 - Production
Version 20.2.0.0.0

SQL> show user
USER is "APRENDIZAJE"

SQL> connect system/ORacle_20_21@lab2;
Connected.

SQL>  create table t1( x number, y number);

Table created.

SQL> insert into t1 values (&v_x, &v_y);
Enter value for v_x: 1
Enter value for v_y: 2
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (1, 2)

1 row created.

SQL> /
Enter value for v_x: 3
Enter value for v_y: NULL
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (3, NULL)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: 4
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (NULL, 4)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: ^C

SQL> select * from t1;

         X          Y
---------- ----------
         1          2
         3
                    4

SQL> insert into t1 values (&v_x, &v_y);
Enter value for v_x: 3
Enter value for v_y: 3
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (3, 3)

1 row created.

SQL> /
Enter value for v_x: 5
Enter value for v_y: 5
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (5, 5)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: 5
old   1: insert into t1 values (&v_x, &v_y)
new   1: insert into t1 values (NULL, 5)

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

         X          Y
---------- ----------
         1          2
         3
                    4
         3          3
         5          5
                    5

6 rows selected.

SQL> create table t2( x number, y number);

Table created.

SQL> insert into t2  values (&v_x, &v_y);
Enter value for v_x: 3
Enter value for v_y: 3
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (3, 3)

1 row created.

SQL> /
Enter value for v_x: 3
Enter value for v_y: 3
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (3, 3)

1 row created.

SQL> /
Enter value for v_x: 4
Enter value for v_y: 4
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (4, 4)

1 row created.

SQL> /
Enter value for v_x: 5
Enter value for v_y: 5
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (5, 5)

1 row created.

SQL> /
Enter value for v_x: NULL
Enter value for v_y: 4
old   1: insert into t2  values (&v_x, &v_y)
new   1: insert into t2  values (NULL, 4)

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t1;

         X          Y
---------- ----------
         1          2
         3
                    4
         3          3
         5          5
                    5

6 rows selected.

SQL> select * from t2;

         X          Y
---------- ----------
         3          3
         3          3
         4          4
         5          5
                    4


SQL> select x from t1
  2  except
  3  select x from t2;

         X
----------
         1

SQL> select y from t1
  2  except
  3  select y from t2;

         Y
----------
         2

SQL> set null 'NULL'

SQL> select y from t1
  2  except
  3  select y from t2;

         Y
----------
         2
NULL

SQL> select x from t1
  2  except all
  3  select x from t2;

         X
----------
         1
NULL

SQL> select y from t1
  2  except all
  3  select y from t2;

         Y
----------
         2
         5
NULL

SQL>

No hay comentarios:

Publicar un comentario

Te agradezco tus comentarios. Te esperamos de vuelta.

Todos los Sábados a las 8:00PM

Optimismo para una vida Mejor

Optimismo para una vida Mejor
Noticias buenas que comentar