Database
 sql >> Database >  >> RDS >> Database

Come creare una tabella da un'altra tabella in SQL

Problema:

Vorresti creare una nuova tabella con i dati copiati da un'altra tabella.

Esempio:

Il nostro database ha una tabella denominata product con i dati nelle seguenti colonne:id (chiave primaria), name , category e price .

id nome categoria prezzo
105 rosa fiore 5.70
108 scrivania mobili 120.00
115 tulipano fiore 6.50
123 girasole fiore 7.50
145 chitarra musica 300.00
155 orchidea fiore 9:50
158 flauto musica 156.00

Nel database, creiamo una nuova tabella denominata florist che memorizzerà le seguenti colonne:id , name e price . Queste colonne provengono dalla tabella product ma solo dalla categoria fiore .

È importante notare che stiamo creando una nuova tabella. La tavola florist non esiste in questo database.

La struttura CREATE TABLE AS SELECT

Per creare una nuova tabella da un'altra tabella, puoi usare CREATE TABLE AS SELECT . Questa costruzione è SQL standard. Guarda il codice SQL qui sotto:

Soluzione 1:

CREATE TABLE florist 
AS SELECT
  *
FROM product
WHERE category = ’flower’;

Ecco il risultato della query:

id nome categoria prezzo
105 rosa fiore 5.70
115 tulipano fiore 6.50
123 girasole fiore 7.50
155 orchidea fiore 9:50

Usando CREATE TABLE , puoi creare una nuova tabella copiando i dati da un'altra tabella. In questo caso, utilizziamo prima il CREATE TABLE clausola con il nome della nuova tavola (nel nostro esempio:florist ), scriviamo quindi AS e il SELECT interrogare con i nomi delle colonne (nel nostro esempio:* ), e quindi scriviamo FROM seguito dal nome della tabella da cui sono raccolti i dati (nel nostro esempio:product ). Quindi, puoi utilizzare qualsiasi clausola SQL:WHERE , GROUP BY , HAVING , ecc.

Il nuovo tavolo florist conterrà la definizione delle colonne del product tabella (id , name , category e price ). Il numero di righe è limitato utilizzando una clausola WHERE, filtrando i record per recuperare solo i dati dalla categoria fiore .

La struttura SELECT INTO

Un'altra soluzione è usare SELECT INTO . Questa sintassi non è SQL standard, ma è supportata da molti database popolari.

Soluzione 2:

SELECT  
  id,
  name,
  price
INTO florist
FROM product
WHERE category=’flower’;

Ecco il risultato:

id nome prezzo
105 rosa 5.70
115 tulipano 6.50
123 girasole 7.50
155 orchidea 9:50

Discussione:

Se desideri creare una nuova tabella in base alla struttura e ai dati di un'altra tabella, puoi utilizzare il SELECT INTO clausola. Per prima cosa, scrivi un SELECT clausola seguita da un elenco di colonne (nel nostro esempio:id , name e price ) dalla tabella esistente (nel nostro esempio:product ).

Nota che ci sono più colonne nella tabella product . Abbiamo selezionato solo le colonne che ci interessano.

Quindi, usa la parola chiave INTO con il nome del nuovo tavolo che vuoi creare (nel nostro esempio:florist ). Quindi, scrivi la parola chiave FROM con il nome della tabella esistente (nel nostro esempio:product ).

Se desideri selezionare le righe filtrate dalla tabella, utilizza WHERE clausola. Dopo WHERE , scrivi le condizioni per filtrare i dati (nel nostro esempio:WHERE category=’flower’ ).

In questo esempio, stiamo creando un nuovo tavolo florist che ha meno colonne della tabella product (la differenza è la categoria della colonna). Questa nuova tabella ha anche meno righe, solo le righe con la categoria fiore .

Ovviamente, se vuoi creare una tabella usando tutte le colonne dell'altra tabella, puoi usare * invece di elencare le colonne dopo SELECT . Vedi l'esempio seguente:

Soluzione 2:

SELECT  
  *
INTO florist
FROM product
WHERE category=’flower’;

Ecco il risultato:

id nome categoria prezzo
105 rosa fiore 5.70
115 tulipano fiore 6.50
123 girasole fiore 7.50
155 orchidea fiore 9:50

Usando SELECT INTO è un modo semplice per creare una nuova tabella basata su una tabella esistente nel database.