2.5. Inserindo itens a partir de uma consulta SELECT

Uma variação do comando INSERT inclui a opção de utilizar uma cláusula SELECT para identificar os registros a serem incluídos. Isso é feito pela substituição dos valores dos atributos da instrução por um comando SELECT que retorne exatamente os campos de devem ser inseridos. Dessa forma, também é possível inserir um ou vários registros em uma tabela. O padrão para uma instrução INSERT baseado em um comando SELECT é o seguinte:

INSERT INTO tabela (atributo1, atributo2, ..., atributoN) VALUES (SELECT valor1, valor2, ..., valor FROM tabela WHERE ...)

A cláusula SELECT da instrução INSERT pode conter qualquer um dos atributos e relacionamentos que estudamos anteriormente.

Vamos a um exemplo. Suponha que exista uma tabela de nome Historico_Escolar_2015 que deva conter apenas os registros de histórico escolar do ano de 2015, suponha ainda que essa tabela possui a estrutura (ID_Historico_Escolar, Serie, Nome, ID_Aluno, ID_Disciplina), ou seja, a mesma estrutura da tabela Historico_Escolar, exceto o campo “Ano”.

Uma possível instrução que selecionaria todos os registros de 2015 da tabela de Historico_Escolar e inserisse na tabela de Historico_Escolar_2015 seria algo como:

INSERT INTO Historico_Escolar_2015 (ID_Historico_Escolar, Serie, Nome, ID_Aluno, ID_Disciplina) VALUES (SELECT ID_Historico_Escolar, Serie, Nome, ID_Aluno, ID_Disciplina FROM Historico_Escolar WHERE Ano =2015)

Perceba que, como as estruturas das tabelas não são idênticas, foi necessário enumerar cada um dos campos da operação.

Copyright © 2014 AIEC.