|
Tutoriais » SQL » Inserir registros » Definindo: Este comando executa a inserção de tuplas em uma tabela. O comando só pode ser operado em uma tabela por vez. A sintaxe padrão ANSI/92, mais básica, aplicada na base adm_exerc_sql, fica assim:
INSERT INTO acoes (id_acao, tx_nome_acao, tx_descricao_acao, qt_horas_padrao, dt_cadastro)
VALUES (190,'Treinar','Treinamento de Usuários',40,'2012-03-26'),
(200,'Portar Dados','Efetuar porte de dados existentes em sistemas herdados',40,'2012-03-26');
Este comando insere 2 tuplas na tabela acoes. Os valores aparecem depois da palavra VALUES, delimitado entre parenteses. Dentro dos parenteses os valores DEVEM ser separados por vírgula. Se um dos valores for texto que tiver espaço em branco o valor deve ser delimitado por ' ou '.O SQL apresenta uma variação interessante do INSERT no padrão ANSI/92. Digamos que eu tenho uma tabela DEPTO01 que foi gerada copiando dados da tabela departamentos. Esta tabela está agora vazia e eu preciso inserir tuplas nesta tabela a partir de tuplas lidas da tabela departamentos. Podemos escrever o comando abaixo:
INSERT INTO depto01 (SELECT * FROM departamentos WHERE id_depto_superior IN ('A01','C01'));
Note: o comando executa uma SELEÇÃO em departamentos e coloca o resultado na tabela depto01. Veja que a palavra VALUES não está escrita.De modo geral podemos dizer que o comando fica assim:
INSERT INTO tab_Destino (SELECT * FROM tab_origem);
Olhando um pouco mais neste comando.Se a tabela de tab_origem não tiver a mesma estrutura de tab_destino podemos fazer uma PROJEÇÃO dentro dos () que aninham a leitura em tab_origem. Se quisermos levar de tab_origem para tab_destino apenas algumas linhas podemos fazer uma SELEÇÃO (o que aliás foi feito no comando que inseriu as linhas em depot01). Ou seja, podemos manipular a origem do modo que quisermos até que os dados resultantes tenham a mesma estrutura da tab_destino. |