Voltar para a lista de artigos Artigos
6 minutos de leitura

O que é a Declaração INSERT em SQL?

A instrução INSERT em SQL é usada para adicionar novos dados ao seu banco de dados. Este artigo explicará como utilizá-la e lhe mostrará exemplos práticos ao longo do caminho.

Quando você aprende SQL, você se concentra em obter dados de um banco de dados, trabalhando principalmente com SELECT. Em SQL, há também instruções que permitem modificar dados em um banco de dados.

A primeira é a declaração INSERT: ela adiciona dados a uma tabela. Os dados são adicionados como uma nova linha na tabela.

A instrução SQL INSERT insere uma ou mais linhas de dados em uma tabela. Você também pode ver INSERT escrito como INSERT INTO, mas ambos se comportam da mesma forma. A inclusão do INTO é opcional na maioria das variantes de SQL.

A instrução INSERT é considerada um comando de manipulação de dados SQL. Os outros comandos são UPDATE e DELETE, os quais você pode aprender neste curso acessível Como INSERT, UPDATE ou DELETE Dados em SQL a partir de LearnSQL.com.br.

Sintaxe do SQL INSERT

A sintaxe do SQL INSERT tem duas formas:

  1. Usando INSERT com nomes de colunas.
  2. Usando INSERT sem nomes de colunas.

Vejamos as diferenças sutis entre os dois e as regras que se aplicam a cada sintaxe.

SQL INSERT sintaxe com nomes de coluna

A sintaxe para utilizar INSERT com nomes de coluna especificados é a seguinte:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Ao especificar colunas como esta, as colunas e os valores devem corresponder em ordem, tipo de dados e número. Se você estiver inserindo um valor de string, ele deve ser incluído entre aspas. Os valores numéricos não precisam estar entre aspas.

Por exemplo, imagine que você tivesse uma tabela com as seguintes colunas:

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Devemos escrever nossa consulta SQL para levar em conta o tipo de dados de cada coluna:

INSERT INTO person (name, age, date_of_birth)
VALUES ('John Doe', 25, '1996-02-18');

Ao incluir nomes de colunas como este, você poderá omitir certos valores, dependendo da definição da tabela. Por exemplo, se as colunas da tabela permitem valores NULL, ou se foram configuradas com valores padrão, você pode excluir estas colunas de sua declaração INSERT por completo.

Imagine que a tabela a seguir foi criada, com um valor DEFAULT fornecido para a coluna date_of_birth:

CREATE TABLE person (name varchar(255), age int, date_of_birth date DEFAULT ('1900-01-01'));

Agora, se você escrever a seguinte consulta, excluindo a coluna date_of_birth inteiramente de nossa declaração INSERT INTO, ela será preenchida com o valor DEFAULT ao invés de NULL.

INSERT INTO person (name, age)
VALUES ('John Doe', 25);

Veja o resultado do INSERT, selecionando de sua tabela:

SELECT * from person
nameagedate_of_birth
John Doe251900-01-01

Tempo para vermos como a sintaxe muda quando você usa INSERT sem especificar os nomes das colunas.

SQL INSERT Sintaxe Sem Nomes de Colunas

A sintaxe para utilizar INSERT sem nomes de coluna é a seguinte:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Se você optar por não listar os nomes das colunas, você deve inserir valores em cada coluna de sua tabela, certificando-se de manter a ordem correta ao fazer isso. Você pode encontrar a ordem correta das colunas consultando o esquema de informações de sua tabela.

Vamos aplicar esta sintaxe a um exemplo prático. Vamos criar uma tabela simples, como fizemos antes:

CREATE TABLE person (name varchar(255), age int, date_of_birth date);

Isto cria nossa tabela, mas como adicionar múltiplas linhas de dados a ela sem especificar os nomes das colunas? Você pode simplesmente escrever esta consulta:

INSERT INTO person
VALUES ('John Doe', 25, '1996-02-18'),
VALUES ('Ben Watson', 31, '1990-04-16'),
VALUES ('Lucy Smith', 27, '1993-06-29');

Observe como os valores são listados na ordem da definição da tabela: primeiro, o nome da pessoa, depois a idade e, finalmente, a data de nascimento. Você não pode omitir nenhuma coluna com esta sintaxe; você deve fornecer um valor para cada coluna. Note que são usadas vírgulas para separar valores dentro de cada linha, bem como para separar os valores de uma linha dos valores de outra, com um ponto-e-vírgula para terminar a afirmação. É assim que podemos adicionar várias linhas sem precisar usar os próprios nomes das colunas.

Como INSERIR EM uma Tabela Existente

Para estes exemplos, imagine que temos uma tabela existente chamada people. Ela contém o primeiro nome, o sobrenome e a idade da pessoa.

people

first_namelast_nameage
JohnSmith23
MaryConway54
PaulJohnson33

Então, como acrescentar uma nova pessoa a esta mesa? Veja esta consulta SQL abaixo:

INSERT INTO people (first_name, last_name, age)
VALUES ('Sandra', 'Cruz', 28);

Observe nossa aderência às regras que mencionamos anteriormente. A ordem, o tipo de dados e o número de colunas e valores correspondem. Os valores das strings também estão entre aspas para first_name e last_name. A não inclusão destas citações resultaria em um erro.

Acrescentamos com sucesso uma pessoa à nossa tabela. Mas imagine que tivéssemos que adicionar várias pessoas. Escrever múltiplas declarações para INSERT seria muito demorado. Felizmente, há uma maneira melhor.

Vejamos um exemplo de adição de múltiplas linhas de dados à nossa tabela, onde não especificamos os nomes das colunas.

INSERT INTO people
VALUES
	('Jacob', 'Ward', 40),
	('Stacey', 'Tuite', 65),
('Thomas', 'Rice', 43);

Você pode ver quanto tempo esta sintaxe pode economizar se você planeja adicionar muitas linhas à sua tabela de uma só vez.

Para mais exemplos e uma explicação detalhada, você pode considerar fazer um curso que focalize o tópico. Confira este post no blog que explica os benefícios de se inscrever em um curso especializado no tópico dos comandos INSERT, UPDATE e DELETE. Ao replicar estes exemplos, é importante entender como as permissões podem afetar o uso da declaração de INSERT.

Permissões SQL INSERT

Você precisa de uma permissão INSERT para inserir dados em um banco de dados. É possível que você só tenha permissão para selecionar os dados, especialmente se estiver trabalhando com um banco de dados para o qual você não é o administrador. Se este for o caso, você não terá permissão para inserir dados em uma tabela e pode precisar pedir a seu administrador de banco de dados estes privilégios.

Adicione novos dados a suas tabelas com SQL INSERT

Isto conclui nosso artigo sobre SQL INSERT. Discutimos as sutis diferenças entre adicionar uma ou várias linhas à sua tabela, permitindo-lhe adicionar dados da maneira mais eficaz. Também abordamos as permissões que você pode precisar se não for o administrador do seu banco de dados. Sinta-se à vontade para marcar esta página para que você possa facilmente consultá-la de novo. Mencionamos como INSERT é uma das formas de alterar os dados dentro de suas tabelas. Os outros comandos que alteram os dados são UPDATE e DELETE. Saiba mais sobre eles neste artigo sobre INSERT, UPDATE, e DELETE.