Copiando dados com SQL

Forum sobre SQL.

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Copiando dados com SQL

Mensagem por alxsts »

Olá!

Para copiar dados de uma tabela "b", acrescentando-os na tabela "a", pode-se usar:

Código: Selecionar todos

   INSERT INTO a
   SELECT * FROM b
    WHERE <condição_where_caso_exista>
No exemplo acima, a tabela "a" já contém dados e os dados da tabela "b" serão acrescentados à tabela "b". Lembre-se que o número de colunas tem que ser igual nas tabelas de origem e destino. É preciso cuidar também de problemas com primary keys (duplicação de chaves primárias).

Para criar uma cópia com todas as colunas de uma tabela "a", pode-se usar:

Código: Selecionar todos

   SELECT * 
     INTO b
     FROM a
    WHERE <condição_where_caso_exista>
No exemplo acima, a tabela "b" é criada e nela são inseridos todos os dados da tabela "a". Equivalente ao COPY TO do xBase.

Para criar uma cópia com algumas das colunas de uma tabela "a", pode-se usar:

Código: Selecionar todos

   SELECT <lista_de_colunas> 
     INTO b
     FROM a
    WHERE <condição_where_caso_exista>
No exemplo acima, a tabela "b" é criada e nela são inseridos apenas os dados das colunas especificadas da tabela "a". Equivalente ao COPY TO FIELDS do xBase mas com uma lista de campos.

Para copiar apenas a estrutura de uma tabela "a", pode-se usar:

Código: Selecionar todos

   SELECT * 
     INTO b
     FROM a
    WHERE 1 = 0
No exemplo acima, a tabela "b" é criada e nela nenhum dado é inserido pois a condição WHERE não é satisfeita. Equivalente ao COPY STRUCTURE do xBase.

Estes são conceitos básicos de como copiar dados com SQL e valem para a maioria dos SGBDs. É possível fazer muito mais coisas, usando JOINs, sub queries, tabelas derivadas, etc...

SQLCOPYTOSTRUCTURE
[]´s
Alexandre Santos (AlxSts)
Responder