O comando INSERT faz parte da linguagem SQL e sua função é permitir a entrada de dados em uma tabela do banco de dados. Assim, sempre que for necessário inserir novos registros em uma tabela, isto deve ser feito através do uso desde comando.
Junto com os comandos UPDATE, SELECT e DELETE, o INSERT forma aquilo que é costumeiramente chamado de CRUD que são as operações mais comuns e essenciais quando trabalhamos com banco de dados. Assim, o INSERT cumpre o papel de inserir os dados, o UPDATE de alterar registros já existentes, o DELETE de remover ou apagar registros e o SELECT de realizar consultas nas tabelas. CRUD vem de Create (criar), Read (ler), Update (alterar) e Delete (apagar).
O comando INSERT, bem como a linguagem SQL é usada em múltiplos bancos de dados, ou SGDBs que são os Sistemas Gerenciados de Bancos de Dados, como o SQL Server, Oracle, Postgree, MySQL, MariaDB, dentre outros.
De certa forma é possível afirmar que SQL é uma linguagem padronizada e seu uso é muito popular, logo, aprender bem essa linguagem é um enorme diferencial competitivo para quem deseja entrar ou manter-se no mercado de trabalho em tecnologia da informação.
Dito isso, é importante ainda salientar que ela deve ser aprendida por programadores, DBAs ou o pessoal que faz o gerenciamento de banco de dados, suporte técnico, pessoal de infraestrutura e outros relacionados.
Para entendermos o uso do comando INSERT, precisamos partir de uma tabela de esta:
CREATE TABLE pessoa(id int primary key,
nome varchar(150),
email varchar(150),
dataNascimento date,
salario decimal(10,2),
situacao bit
);
pessoa: é o nome da tabela e a forma pela qual ela será identificada.
id, nome, email, dataNascimento, salario e situacao são os campos desta tabela e onde iremos inserir os dados.
Note que para cada campo foi necessário informar o tipo de dados que ele pode receber e isto é muito importante na hora de fazer um INSERT, pois devemos colocar as informações a serem inseridas de acordo com os tipos que são esperados em cada campo. Veremos abaixo.
Quando você insere dados em uma tabela, ele cria um novo registro ou nova linha. Neste caso, o mais indicado é que você insira dados em todos os campos desta tabela. O exemplo abaixo mostra como fazer isso:
INSERT INTO pessoa(id,nome,email,dataNascimento,salario,situacao)VALUES(1,'João da Silva','[email protected]','1980-07-14',3505.48,1);
INSERT INTO: é o nome do comando e obrigatório
pessoa: é o nome da tabela. Isto é necessário, pois normalmente em uma banco de dados existem diversas tabelas e portanto é necessário informar em qual delas desejamos que os dados sejam inseridos. Note que logo após o nome da tabela, inserimos a lista de campos, que são todos os que temos disponíveis.
VALUES: aqui inserimos a lista de valores ou dados que serão inseridos. Atente para a ordem em que você coloca esses valores, pois eles devem estar na mesma ordem que em os campos foram listados.
Mas é possível também inserir dados apenas em alguns campos, como veremos no exemplo abaixo:
INSERT INTO pessoa(id,nome,email,situacao)VALUES(3,'José da Silva','[email protected]',0);
Perceba que os campos dataNascimento e salario foram ignorados, bem como os valores que seriam atribuídos a eles. Isto é possível, embora nem sempre é a melhor coisa a fazer.
Mas o que acontece com esses campos que foram ignorados? Neste caso eles receberão valor nulo, uma vez que o registro inteiro precisa ser criado, tendo valores atribuídos para todos ou não. A imagem abaixo mostra como ficou este registro na tabela depois de inserido:
Observação importante: O exemplo acima foi possível porque os campos dataNacimento e salario aceitam valores nulos. Ao criar a tabela é possível indicar o contrário, ou seja, não permitir valores nulos. Se for este o caso, geraria um erro ao executar o exemplo do INSERT acima.
Os exemplos acima são aplicáveis para um único registro, ou seja, para cada linha que se deseja inserir, seria necessário repetir a instrução. Mas existe uma forma de fazer a inclusão de diversos registros com uma mesma instrução de INSERT. O exemplo abaixo mostra isso:
INSERT INTO pessoa(id,nome,email,dataNascimento,salario,situacao)VALUES
(4,'Pedro da Silva','[email protected]','1988-07-19',5000.00,1),
(5,'Manuel da Silva','[email protected]','1998-04-16',4500.00,0),
(6,'Maria da Silva','[email protected]','1971-10-28',3251.46,1),
(7,'Joaquim da Silva','[email protected]','2001-08-03',1905.55,0),
(8,'Madalena da Silva','[email protected]','2006-01-17',6523.03,1);
Perceba que no exemplo acima, temos apenas uma instrução INSERT, mas a lista de valores foi repetida. Com isso, o código torna-se mais enxuto e consequentemente terá uma performance melhor ao ser executado.
Atente para o fato de que cada lista de valores é separada por uma (,) vírgula, enquanto que o ponto-e-vírgula só deve ser colocado na última lista, indicando o final da instrução.
Vamos a algumas observações importantes sobre como estruturar o código do comando INSERT:
A quantidade de colunas indicada no INSERT INTO deve ter uma quantidade de valores correspondente no VALUES. Se houver divergência, ocorrerá erro ao ser executado.
Tanto a lista de campos ou colunas, bem como a lista de valores terá a vírgula (,), como sendo o separador, portanto, fique atento a isso. Mas existem alguns valores que poderiam ter vírgula e se isso não for tratado da maneira correta, poderá ser entendido como sendo um separador de valores e não uma vírgula como conteúdo. Veja um exemplo abaixo.
Para inserir valores do tipo texto ou string, como é o termo mais comum, deve-se colocar os valores entre apóstrofe. Como no exemplo que vimos no início:
INSERT INTO pessoa(id,nome,email,dataNascimento,salario,situacao)VALUES(1,'João da Silva','[email protected]','1980-07-14',3505.48,1);
Perceba que os campos nome e email são do tipo varchar, isto é, string (ver item 3). Então os valores atribuídos a eles precisam estar entre apóstrofe.
O mesmo se aplica ao campo dataNascimento que embora não seja varchar, terá tratamento similar na instrução INSERT. Quero dizer que o valor atribuído a ele também precisa estar entre apóstrofe.
Além disso, perceba que o valor atribuído à este campo está no seguinte formato: 1980-07-14 ou yyyy-mm-dd (ano, mês e dia)
Este é o formato que geralmente os bancos de dados usam para armazenar datas. É um pouco diferente do que usamos, mas é a maneira lógica de armazenar valores, ou seja, colocar do maior para o menor. Pense em como você ordenaria uma lista de valores com subitens.
Os valores numéricos, como o id, salario e situacao não precisam ter seus valores entre apóstrofe, mas geralmente não ocorre erros se colocar.
No caso do campo salario que é do tipo numérico decimal, é preciso ficar atento com o uso do ponto, bem como a vírgula. Neste caso não usamos a vírgula como separador decimal e sim o ponto. O separador de milhar não deve ser colocado.
Então o valor atribuído foi de 3505.48 que corresponderia a 3.505,48, mas que como já expliquei, no banco de dados ele é armazenado sem essa máscara que usamos.
O que acontece se eu manter a vírgula?
Veja o tem 7. Neste caso se colocássemos o valor 3.505,48 a vírgula seria entendida como sendo separador da lista de valores e portanto ficaria 3.505 como um valor e 48 como outro valor. Isto causaria uma divergência entra a quantidade de colunas e valores e consequentemente um erro na execução.
Boolean
Uma última observação é sobre o campo situação que conforme pode ser visto no item 3, ele foi definido como bit. O tipo bit vai aceitar valores booleanos ou boolean que neste caso é 0 e 1 apenas. Este tipo de campo é muito útil quando se deseja trabalhar com valores verdadeiro ou falso, ativo ou inativo, sim ou não e por ai vai.
COMPARTILHE: Facebook Twitter WhatsApp