Para copiar dados de uma tabela "b", acrescentando-os na tabela "a", pode-se usar:
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:
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:
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:
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