Problema:
Vorresti creare una nuova tabella in un database con dati definiti da una query SQL.
Esempio:
Vorremmo creare la tabella gamer basato su una query SQL. In questa query, selezioniamo i dati da un'altra tabella denominata championship presentato di seguito.
| id | giocatore | punteggio | data_campionato |
|---|---|---|---|
| 1 | alice | 14 | 10-08-2020 |
| 2 | supervisore | 10 | 28-09-2020 |
| 3 | uomo felice | 0 | 10-08-2020 |
| 4 | luka | 6 | 10-08-2020 |
| 5 | oli | 12 | 10-08-2020 |
| 6 | grande giocatore | 7 | 12-09-2020 |
Nel database, creiamo una nuova tabella denominata gamer che memorizzerà i dati in tutte le colonne definite nella tabella championship (id , gamer , score e championship_date ).
Soluzione 1:
CREATE TABLE gamer AS SELECT * FROM championship;
Discussione:
Se desideri creare una nuova tabella, il primo passo è utilizzare il CREATE TABLE clausola e il nome della nuova tabella (nel nostro esempio:gamer ). Quindi, usa il AS parola chiave e fornire un SELECT istruzione che seleziona i dati per la nuova tabella. Nel nostro esempio, abbiamo selezionato tutte le colonne dalla tabella championship utilizzando l'asterisco (*). Il set di risultati mostra tutti i record nella tabella championship .
Tuttavia, se desideri creare una tabella con solo un sottoinsieme dei record, puoi specificare la query selezionata come nell'esempio seguente.
Soluzione 2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
Ecco il set di risultati:
| giocatore | punteggio | data_campionato |
|---|---|---|
| alice | 14 | 10-08-2020 |
| uomo felice | 0 | 10-08-2020 |
| lukas | 6 | 10-08-2020 |
| oli | 12 | 10-08-2020 |
Il SELECT query recupera solo i record con un championship_date data uguale o precedente a 2020-08-10 (WHERE championship_date <= 2020-08-10 ). La nuova tabella memorizza meno colonne rispetto all'esempio precedente (SELECT gamer, score, championship_date ) senza la colonna id .
Una soluzione simile a questo problema consiste nell'usare SELECT INTO clausola per creare una nuova tabella e copiare i dati da un'altra tabella. Dai un'occhiata al codice:
Soluzione 3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
La tabella risultante è la stessa. Si noti che questa costruzione non è presente nello standard SQL. In questo comando SQL, scriviamo prima SELECT , quindi l'elenco delle colonne, quindi la parola chiave INTO , e infine il nome della nuova tabella che vogliamo creare. Successivamente, puoi aggiungere WHERE e altre clausole SQL come GROUP BY o HAVING per filtrare i record per la nuova tabella.