SQL: INSERT

Introdução

Este artigo abordará o comando INSERT, o mesmo faz parte dos comandos DML (Data Manipulation Language – Linguagem de Manipulação de Dados) da SQL (Structured Query Language – Linguagem Estruturada de Consulta). Como é possível observar pelo nome do comando, ele é usado para incluir os dados nas tabelas de um banco de dados.

Tabelas

Para demonstrar a utilização do comando INSERT serão utilizadas as tabelas mostradas no modelo lógico abaixo. Leia o artigo CREATE TABLE para maiores esclarecimentos sobre esse modelo lógico.

FUNCION >< SETOR

Relacionamento entre as tabelas FUNCION e SETOR

Para incluir um novo registro numa tabela deve-se utilizar o comando INSERT como mostrado na sintaxe.

Obs.: Os COLCHETES denotam uma parte opcional e as CHAVES indicam que partes podem ser repetidas indefinidamente ou omitidas completamente.

Sintaxe:

insert into TABELA [(ATRIBUTO [{, ATRIBUTO}])]

values (VALOR [{, VALOR}])

[;]

Rótulo Descrição
TABELA Nome da tabela
ATRIBUTO Nome do atributo
VALOR Valor que será inserido no atributo designado na mesma posição

Utilização:

Com base na sintaxe, é possível incluir um ou mais registros na tabela SETOR como mostrado nos exemplos que se seguem.

Exemplo #1:

insert into SETOR (ID_SETOR, SETOR)
values (1, ‘DESENVOLVIMENTO’);

Nesse primeiro exemplo foi inclui um novo registro na tabela SETOR, onde o atributo ID_SETOR recebeu o valor 1(um) e o atributo SETOR recebeu o valor DESENVOLVIMENTO. Perceba que o valor informado para o atributo SETOR está entre apóstrofos, e o valor informado para o atributo ID_SETOR não, isso ocorre porquê se o valor a ser informado for numérico (inteiro e decimal) não necessita dos apóstrofos.

Exemplo #2:

insert into SETOR
values (2, ‘MANUTENÇÃO’);

Diferentemente do exemplo anterior, nesse não foram informado os atributos da tabela SETOR, mesmo assim o comando também será executado, devido ele seguir a sintaxe. Mas vale ressaltar que não informar os atributos obriga a inclusão de valores para todos os atributos e na ordem que estão representados na tabela.

Os dois próximos exemplos estão incorretos e devem ser evitados, embora um ou outro SGBDR ou FRONT-END tentem solucionar o problema.

Exemplo #3:

insert into SETOR
values (3);

Esse exemplo está incorreto, pois não foi informado um valor para o segundo atributo (SETOR).

Exemplo #4:

insert into SETOR
values (‘FINANCEIRO’, 3);

Esse exemplo está incorreto, pois é esperado um valor inteiro para o primeiro atributo (ID_SETOR).

Exemplo #5:

insert into SETOR (SETOR, ID_SETOR)
values (‘FINANCEIRO’, 3);

Esse exemplo está correto, pois embora os valores tenham sido colocados na mesma ordem do exemplo anterior, nesse caso informamos os atributos na mesma ordem dos valores, ou melhor, os valores foram informados atendendo a ordem definida para os atributos. Para esse exemplo, o atributo SETOR recebeu o valor FINANCEIRO e o atributo ID_SETOR recebeu o valor 3(três).

Exemplo #6:

insert into SETOR (ID_SETOR, SETOR)
values (3, ‘VENDAS’);

Se o exemplo #5 foi bem sucedido, esse exemplo irá gerar um erro, mas desta vez o erro não tem relação com a sintaxe. O motivo do erro tem relacionamento com a restrição imposta na criação da tabela SETOR, onde o atributo ID_SETOR foi definido como chave primária, logo, não poderá existir mais de um registro com o mesmo valor para esse atributo. Baseado nessa informação, deve-se perceber que no exemplo #5 foi informado o valor 3(três) para o atributo ID_SETOR, dessa maneira, esse valor não poderá ser incluído novamente no atributo como mostrado no exemplo #6. Uma opção correta para esse problema pode ser visto no próximo exemplo.

Exemplo #7:

insert into SETOR (ID_SETOR, SETOR)
values (4, ‘VENDAS’);

Outros exemplos onde as inclusões serão permitidos são mostrados na sequência.

Exemplo #8:

insert into SETOR (ID_SETOR)
values (5);

ou

insert into SETOR
values (5, null);

A sintaxe dos dois casos do exemplo #8 está correta. No primeiro caso foi informado apenas o atributo ID_SETOR e o valor 5(cinco). No segundo caso não foram informados os atributos, mesmo assim cada atributo da tabela recebeu um valor, ou seja, o atributo ID_SETOR recebe o valor 5(cinco) e o atributo SETOR o valor null.

Obs.: Embora a sintaxe dos casos do exemplo #8 estejam corretas, os mesmos não podem ser executados um após o outro, uma vez que ambos informam o valor 5(cinco) para o atributo ID_SETOR, o que levaria a quebra da restrição referente a chave primária citada anteriormente nesse artigo.

Conclusão

Foi mostrado nesse artigo o comando INSERT. Embora alguns SGBDRs tenham dialetos específicos, esse comando pode ser utilizado como recomendado pela sintaxe aqui apresentada e explicada através de exemplo. No Canal da TIDP no youtube você pode assistir vídeos sobre esse e outros assuntos.

Até o próximo artigo.

Assuntos relacionados:

CREATE TABLE

UPDATE e DELETE

Comando SELECT – Parte I

SELECT: Indo além do WHERE simples

Possui mestrado em Computação Aplicada pela Universidade Estadual do Ceará (2010), especialização em Engenharia de Software pela Faculdade de Juazeiro do Norte (2010), graduação em Automática pelo Centro Federal de Educação Tecnológica do Ceará (2005). Tem experiência na área de Ciência da Computação , com ênfase em Sistemas de Computação, atuando principalmente nos seguintes temas: Desenvolvimento dos programas de computador IndSist, Store, Teacher entre outros. Desenvolvimento dos programas Mobile-Android Agenda Iterativa e Guia Cariris.Disciplinas que ministra ou ministrou no ensino superior: Linguagem de Programação, Paradigma de Programação, Estrutura de Dados, Engenharia de Software, Banco de Dados. Currículo Lattes