Database
 sql >> Base de Dados >  >> RDS >> Database

Como criar uma tabela a partir de uma consulta SQL

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.