Translate

Mostrando postagens com marcador What is the equivalent of 'CREATE TABLE SELECT' in SQL SERVER. Mostrar todas as postagens
Mostrando postagens com marcador What is the equivalent of 'CREATE TABLE SELECT' in SQL SERVER. Mostrar todas as postagens

sábado, 24 de junho de 2017

Criar uma tabela no SQL SERVER a partir de uma tabela existente

Este post mostra como criar uma tabela no SQL SERVER  a partir de uma tabela existente. 

A nova tabela será criada com os mesmos nomes das colunas, os mesmos tipos de dados
e os mesmos registros da tabela original do instante em que se executa o comando abaixo:

SINTAXE

SELECT  *  INTO  nova_tabela  FROM  tabela_original;

Caso tenha interesse, veja o script no GitHub ou faça o download no Google Drive.
  
Este procedimento é útil quando queremos ter uma cópia de uma tabela, antes de executarmos alguma alteração, como por exemplo um update e quisermos manter uma cópia da tabela original.

Este post é dividido em cinco partes:

1ª parte: damos um exemplo de como criar a tabela "tb_paciente";

2ª parte: vamos criar a tabela "tb_paciente_bkp"  a partir da tabela "tb_paciente"
.
3ª parte: vamos criar a tabela "tb_paciente_bkp_altera_col" a partir da tabela "tb_paciente", a nova tabela terá o nome das colunas diferentes das colunas da tabela original.

4ª parte: vamos criar a tabela "tb_paciente_bkp_filt"  a partir da tabela "tb_paciente", mas vamos incluir apenas alguns registros da tabela original, ou seja, vamos utilizar um filtro.

5ª parte: vamos criar a tabela "tb_paciente_bkp_col"  a partir da tabela "tb_paciente", mas vamos incluir na nova tabela apenas algumas colunas da tabela original.

Tabela: tb_paciente

1ª parte

➧ Caso queira criar esta tabela no seu banco de dados, segue o script da criação da tabela:

CREATE TABLE tb_paciente
(
    prontuario int IDENTITY(1,1) PRIMARY KEY,
    nome varchar(255) NOT NULL ,
    data_nasc date NOT NULL ,
    sexo character(1) NOT NULL ,
    peso numeric(6,3),
    proc_cirurgico bit NOT NULL
);

➧ Para incluir os registros na tabela "tb_paciente" utilize o comando INSERT:

INSERT INTO tb_paciente (nome, data_nasc, sexo, peso, proc_cirurgico)
VALUES ('Maria Santos', '1984-04-20', 'f', 52.440, 1);

INSERT INTO tb_paciente(nome, data_nasc, sexo, peso, proc_cirurgico)
VALUES ('João Silva', '1974-08-29', 'm', 80.520 , 0);

INSERT INTO tb_paciente(nome , data_nasc , sexo , peso , proc_cirurgico)
VALUES('Ana Moraes', '1982-10-30', 'f', 57.700, 1);

➧ Para visualizar os registros na tabela "tb_paciente" utilize o comando SELECT:

SELECT
    prontuario ,
    nome ,
    data_nasc ,
    sexo ,
    peso ,
    proc_cirurgico
FROM tb_paciente;
2ª parte

Agora, vamos criar a cópia desta tabela.

A sentença SQL abaixo, cria a cópia da tabela "tb_paciente". Esta nova tabela se chamará "tb_paciente_bkp ".

SELECT  *  INTO  tb_paciente_bkp  FROM  tb_paciente;

Repare que nosso exemplo segue a sintaxe:

SELECT  *  INTO nova_tabela  FROM  tabela_original;


Importante!!! 
Se o nome atribuído a nova tabela já existir no banco de dados, será exibida a mensagem de erro abaixo, e a cópia da tabela não será criada.

Mensagem 2714, Nível 16, Estado 6
Já existe um objeto com nome 'tb_paciente_bkp' no banco de dados.

Para corrigir este erro, troque o nome da nova tabela.

➧ Para visualizar os registros na tabela "tb_paciente_bkp" utilize o comando SELECT:


SELECT * FROM tb_paciente_bkp;

Veja abaixo o resultado da nova tabela:


Tabela: tb_paciente_bkp


Observe na imagem abaixo  a nova tabela criada.

Veja a cópia da tabela criada no banco de dados


3ª parte

Existe a possibilidade de alterar o nome das colunas da nova tabela utilizando "AS". Veja a sentença abaixo:

SELECT
    prontuario  AS  pac_prontuario,
    nome  AS  pac_nome,
    data_nasc   AS  pac_data_nasc ,
    sexo  AS  pac_sexo,
    peso  AS  pac_peso,
    proc_cirurgico  AS  pac_proc_cirurgico
INTO  tb_paciente_bkp_altera_col 
FROM  tb_paciente;


Tabela: tb_paciente_bkp_altera_col


Após a execução da sentença, será criada uma nova tabela chamada  "tb_paciente_bkp_altera_col", essa tabela terá o nome das colunas diferente das colunas da tabela de origem "tb_paciente".


4ª parte

Existe a possibilidade de criar uma nova tabela, apena com alguns registros da tabela original, para isso utilizaremos um filtro, representado pelo comando "WHERE".

Vamos criar a tabela "tb_paciente_bkp_filt",  a partir da tabela "tb_paciente", e vamos filtrar os pacientes somente do sexo feminino,  ou seja,  sexo = 'f'

Veja a sentença abaixo:

SELECT
    prontuario, 
    nome, 
    data_nasc
    sexo, 
    peso, 
    proc_cirurgico 
INTO  tb_paciente_bkp_filt   
FROM  tb_paciente 
WHERE  sexo = 'f';

Após a execução da sentença, será criada uma nova tabela.  Veja a imagem abaixo:


Tabela: tb_paciente_bkp_filt


5ª parte


Existe a possibilidade de criar uma nova tabela, apena com algumas colunas da tabela original, para isso, colocaremos apenas as colunas desejadas, após o comando "SELECT".

Vamos criar a tabela "tb_paciente_bkp_col",  a partir da tabela "tb_paciente", apenas com algumas colunas da tabela original. Neste caso, vamos escolher as colunas: "prontuario", "nome" e "peso"

Veja a sentença abaixo:

SELECT
    prontuario, 
    nome, 
    peso
INTO  tb_paciente_bkp_col   
FROM  tb_paciente;

Após a execução da sentença, será criada uma nova tabela.  Veja a imagem abaixo:


Tabela: tb_paciente_bkp_col

Deixe o seu comentário ou sugestão.
Gostou?  Siga no Google + ou Facebook.