Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 13 di 41
  • livello principiante
Indice lezioni

Creare una tabella a partire da un'altra

Una semplice tecnica per generare tabelle simili tra loro
Una semplice tecnica per generare tabelle simili tra loro
Link copiato negli appunti

Un utente può avere l'esigenza di una copia di una tabella con struttura e contenuto di dati. Si può decidere di:

  1. avere una tabella identica alla tabella di origine, compresi tutti i dati contenuti. Questo caso rappresenta la copia esatta;
  2. avere una struttura di tabella differente da quella della tabella di origine, ovvero con diverso numero di colonne;
  3. avere un contenuto di dati, indipendentemente dalla struttura, più piccolo rispetto alla tabella di origine.

La sintassi che per le operazioni di copia è la seguente:

CREATE TABLE <nome_nuova_tabella> AS SELECT <query>

Facciamo qualche esempio iniziando dal precedente punto 1. Avremo:

SQL> CREATE TABLE copia_contatti AS SELECT * FROM contatti;

Eseguendo DESC copia_contatti vedremmo che la sua struttura è identica a quella della tabella contatti e che tutti i dati sono stati copiati.

Risultato della query

Punto 2. Avremo:

SQL> CREATE TABLE copia_contatti2
  2  AS SELECT IDContatto, Cognome, Nome FROM contatti;

La nuova tabella è formata solamente da tre delle dodici colonne della tabella contatti. Tutti i dati contenuti nelle tre colonne di origine sono stati copiati nella tabella di copia.

Punto 3. In questo caso creeremo la stessa struttura della tabella di partenza ma non copieremo tutti i suoi dati. Per fare ciò ricorreremo ad una query per filtrare i dati (clausola WHERE).

SQL> CREATE TABLE copia_contatti3
  2  AS SELECT * FROM contatti WHERE StatoCivile = 'celibe';

La struttura della tabella di copia è identica, ma in questa sono stati copiati solamente i record che hanno StatoCivile uguale a 'celibe'.

Possiamo anche creare una copia della sola struttura di una tabella escludendo tutti i dati al suo interno. Il trucco sta nella SELECT finale. Se in questa scriviamo una condizione non verificabile (es. 1=2), Oracle creerà la stessa struttura della tabella di origine ma senza copiare alcun dato.

SQL> CREATE TABLE copia_contatti4
  2  AS SELECT * FROM contatti WHERE 1 = 2;

Infine possiamo creare la struttura nella tabella di copia modificando i nomi delle colonne.

SQL> CREATE TABLE copia_contatti5
  2  AS SELECT IDContatto ID, Cognome Surname, Nome Name
  3  FROM contatti WHERE IDContatto > 20;

La copia della tabella è formata da un sottoinsieme di colonne dell'originale, ma con nomi diversi. Il numero dei record è inferiore grazie alla condizione imposta dalla clausola WHERE.


Ti consigliamo anche