• operatore-minus

    L’operatore MINUS in Oracle

    In questo articolo vedremo le caratteristiche dell’operatore insiemistico MINUS di Oracle.

    Le tabelle usate per gli esempi per l’operatore Minus

    In un precedente articolo dal titolo “Gli operatori set” abbiamo introdotto gli operatori insiemistici e le loro caratteristiche. Poi è seguito un articolo di dettaglio sugli operatori UNION e UNION ALL. In questo articolo affronteremo l’operatore MINUS.

    Gli esempi che riporto fanno riferimento a due tabelle create appositamente: OLD_DEPT e NEW_DEPT. La tabella OLD_DEPT rappresenta una tabella creata con una vecchia versione di Oracle. I campi della tabella sono:

    • dated di tipo DATE (supponiamo che non era disponibile TIMESTAMP nella vecchia versione);
    • deptno di tipo NUMBER (anche con decimali);
    • dname di tipo CHAR (supponiamo che non era disponibile VARCHAR2 a lunghezza variabile nella vecchia versione);

    La tabella NEW_DEPT rappresenta una tabella creata con una nuova versione di Oracle. I campi della tabella sono:

    • started di tipo TIMESTAMP(6) (che può memorizzare per default data e ora con sei decimali di precisione sui secondi);
    • deptid di tipo NUMBER(38) (un NUMBER con fino a 38 cifre significative, non decimale);
    • dname di tipo VARCHAR2 (più performante in termini di spazio rispetto a CHAR);

    Lo script di creazione e popolamento delle tabelle sarà il seguente:

    Di seguito il risultato dell’interrogazione della tabella old_dept

    old_dept

    e di quella new_dept.
    new_dept

    L’operatore Minus

    L’operatore MINUS esegue le query legate tra loro dall’operatore insiemistico e restituisce solo le righe dal primo insieme di risultati che non appaiono nel secondo insieme, ordinando i risultati.

    La seguente query restituisce tutte le righe OLD_DEPT perché non ci sono righe corrispondenti nella NEW_DEPT.

    query-minus-1

    Il risultato è:

    old_dept

    La query mostrata sotto è costruita con una forzatura: quella di creare delle righe in comune. Il risultato dell’esecuzione della query composta con l’operatore MINUS è tale che una delle righe viene rimossa.

    query-minus-2

    Il risultato è:

    oracle-minus

     

    Giulio Cantali – IT Consultant

    Creatore di Database Master, il primo percorso per diventare esperti di database

Lascia un commento

Se vuoi condividere la tua opinione, lascia un commento

Puoi usare questi tag e attributi: HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">