Problema:
Você gostaria de criar uma nova tabela em um banco de dados com dados definidos por uma consulta SQL.
Exemplo:
Gostaríamos de criar a tabela
gamer com base em uma consulta SQL. Nesta consulta, selecionamos dados de outra tabela chamada championship apresentado abaixo. | id | jogador | pontuação | data_do_campeonato |
|---|---|---|---|
| 1 | alice | 14 | 2020-08-10 |
| 2 | supervisor | 10 | 28-09-2020 |
| 3 | homem feliz | 0 | 2020-08-10 |
| 4 | lukas | 6 | 2020-08-10 |
| 5 | oli | 12 | 2020-08-10 |
| 6 | maior | 7 | 2020-09-12 |
No banco de dados, vamos criar uma nova tabela chamada
gamer que armazenará dados em todas as colunas definidas na tabela championship (id , gamer , score e championship_date ). Solução 1:
CREATE TABLE gamer AS SELECT * FROM championship;
Discussão:
Se você deseja criar uma nova tabela, o primeiro passo é usar o
CREATE TABLE cláusula e o nome da nova tabela (no nosso exemplo:gamer ). Em seguida, use o AS palavra-chave e forneça um SELECT instrução que seleciona dados para a nova tabela. Em nosso exemplo, selecionamos todas as colunas da tabela championship usando o asterisco (*). O conjunto de resultados exibe todos os registros na tabela championship . No entanto, se você deseja criar uma tabela com apenas um subconjunto dos registros, pode especificar a consulta selecionada como no exemplo abaixo.
Solução 2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
Aqui está o conjunto de resultados:
| jogador | pontuação | data_do_campeonato |
|---|---|---|
| alice | 14 | 2020-08-10 |
| homem feliz | 0 | 2020-08-10 |
| lukas | 6 | 2020-08-10 |
| oli | 12 | 2020-08-10 |
O
SELECT consulta recupera apenas os registros com um championship_date data igual ou anterior a 2020-08-10 (WHERE championship_date <= 2020-08-10 ). A nova tabela armazena menos colunas do que no exemplo anterior (SELECT gamer, score, championship_date ) sem a coluna id . Uma solução semelhante para este problema é usar o
SELECT INTO cláusula para criar uma nova tabela e copiar dados de outra tabela. Dê uma olhada no código:Solução 3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
A tabela resultante é a mesma. Observe que essa construção não está presente no padrão SQL. Neste comando SQL, primeiro escrevemos
SELECT , depois a lista de colunas, ao lado da palavra-chave INTO , e finalmente o nome da nova tabela que queremos criar. Em seguida, você pode adicionar WHERE e outras cláusulas SQL como GROUP BY ou HAVING para filtrar registros para a nova tabela.