Translate

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.