Este artigo contém SQL básico
INSERT
instruções que iniciantes podem usar para inserir dados em suas tabelas de banco de dados. Sintaxe básica
A sintaxe básica para inserir dados no SQL é assim:
INSERT INTO TableName (Column1, Column2, Column3, ...)
VALUES (Value1, Value2, Value3, ...);
Onde:
TableName
é o nome da tabela na qual você deseja inserir dadosColumn1
, etc são os nomes das colunas nas quais você deseja inserir dadosValue1
, etc são os valores que você está inserindo nessas colunas. A ordem desses valores deve corresponder à ordem em que você listou as colunas (ou seja,Value1
vai paraColumn1
, etc).
Você pode omitir os nomes das colunas se estiver inserindo valores em todas as colunas. Nesse caso, você pode usar a seguinte sintaxe:
INSERT INTO TableName
VALUES (Value1, Value2, Value3, ...);
Observe que alguns SGBDs usam uma sintaxe mais complexa do que essa (ou seja, eles oferecem mais opções), mas geralmente essa é a sintaxe básica necessária para inserir dados em uma tabela.
Inserir em todas as colunas
Aqui está um exemplo básico que insere dados em todas as colunas da tabela:
INSERT INTO PetTypes
VALUES( 1, 'Bird' );
Neste caso, existem duas colunas no
PetTypes
table e estamos inserindo valores em ambas as colunas, portanto, não precisamos especificar os nomes das colunas. A declaração acima é o mesmo que fazer isso:
INSERT INTO PetTypes( PetTypeId, PetType )
VALUES( 1, 'Bird' );
Podemos verificar nossos dados executando um
SELECT
demonstração. SELECT * FROM PetTypes;
Resultado:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | +-------------+-----------+
Inserir em algumas colunas
Aqui está um exemplo básico que insere dados em apenas algumas das colunas da tabela:
INSERT INTO Users( UserId, FirstName, LastName )
VALUES( 1, 'Lansell', 'Letterman' );
Esta tabela tem na verdade quatro colunas, mas só inserimos dados em três dessas colunas. Podemos ver que quando executamos um
SELECT
declaração contra a tabela depois de inserir os dados. SELECT * FROM Users;
Resultado:
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | +----------+-------------+------------+-----------------------------+
Como inserir valores na ordem errada
O método de lista de colunas permite inserir dados que não estão na mesma ordem:
INSERT INTO Users( LastName, FirstName, UserId )
VALUES( 'Pitt', 'Bart', 2 );
Neste exemplo, reorganizei a ordem das colunas e seus respectivos valores. Felizmente, a lista de colunas fornece ao SGBD orientação sobre onde cada valor deve ser inserido.
Então agora, se selecionarmos nossos dados, veremos que eles foram inseridos nas colunas corretas.
SELECT * FROM Users;
Resultado:
+----------+-------------+------------+-----------------------------+ | UserId | FirstName | LastName | DateInserted | |----------+-------------+------------+-----------------------------| | 1 | Lansell | Letterman | 2020-11-21 05:18:50.0029455 | | 2 | Bart | Pitt | 2020-11-21 05:30:07.4456867 | +----------+-------------+------------+-----------------------------+
Inserir o resultado de uma consulta
Também é possível inserir o conjunto de resultados de uma consulta em uma tabela. Existem algumas abordagens que você pode adotar com isso.
- Use
INSERT INTO... SELECT
demonstração. Nesse caso, você precisa criar a tabela primeiro, antes de inserir um conjunto de resultados de consulta nela. - Use a instrução CREATE TABLE … AS SELECT. Esse método cria automaticamente uma nova tabela com base no conjunto de resultados da consulta e insere esses resultados na tabela. Embora esse método esteja em conformidade com o padrão SQL, ele não é suportado por todos os DBMSs.
- Use o
SELECT INTO
demonstração. Isso é semelhante à opção anterior. Ele cria automaticamente uma nova tabela com base no conjunto de resultados da consulta e, em seguida, insere esses resultados na tabela. Se o método anterior (CREATE TABLE ... AS SELECT
) não é compatível com seu DBMS, tente este método.