Resumo : neste tutorial, você aprenderá como usar a INSERT
instrução MySQL para inserir uma ou mais linhas em uma tabela.
Introdução à instrução INSERT do MySQL
A INSERT
instrução permite inserir uma ou mais linhas em uma tabela. O seguinte ilustra a sintaxe da INSERT
instrução:
INSERT INTO table_name(column1, column2,...)
VALUES (value1, value2,...);
Nesta sintaxe,
- Primeiro, especifique o nome da tabela e uma lista de colunas separadas por vírgulas entre parênteses após a
INSERT INTO
cláusula. - Em seguida, coloque uma lista separada por vírgulas de valores das colunas correspondentes entre parênteses após a
VALUES
palavra-chave.
Ao usar a INSERT
instrução, você precisa garantir que o número de colunas corresponda ao número de valores.
Além disso, você precisa especificar que as posições das colunas correspondem precisamente às posições dos seus valores correspondentes.
Para inserir várias linhas em uma tabela usando uma única INSERT
instrução, use a seguinte sintaxe:
INSERT INTO table(column1, column2,...)
VALUES
(value1, value2,...),
(value1, value2,...),
...
(value1, value2,...);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe, as linhas são separadas por vírgulas na VALUES
cláusula.
Exemplos de instruções INSERT do MySQL
Vamos criar uma nova tabela chamada tasks
para praticar a INSERT
afirmação:
DROP TABLE IF EXISTS tasks;
CREATE TABLE tasks (
task_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
start_date DATE,
due_date DATE,
priority TINYINT NOT NULL DEFAULT 3,
description TEXT
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
1) Exemplo básico de instrução INSERT do MySQL
A instrução a seguir insere uma nova linha na tasks
tabela:
INSERT INTO tasks(title, priority)
VALUES('Learn MySQL INSERT Statement', 1);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
1 row(s) affected
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A saída indica que a instrução inseriu uma linha na tasks
tabela com sucesso.
Neste exemplo, especificamos valores apenas para as colunas title
e priority
. Para outras colunas, o MySQL usa os valores padrão.
A task_id
coluna é uma AUTO_INCREMENT
coluna, o que significa que o MySQL gera um número inteiro sequencial sempre que uma linha é inserida na tabela.
As colunas , e são usadas start_date
como due_date
valor padrão. Portanto, o MySQL insere nessas colunas se você não especificar seus valores na instrução.description
NULL
NULL
INSERT
O seguinte recupera dados da tasks
tabela:
SELECT * FROM tasks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------+------------------------------+------------+----------+----------+-------------+
| task_id | title | start_date | due_date | priority | description |
+---------+------------------------------+------------+----------+----------+-------------+
| 1 | Learn MySQL INSERT Statement | NULL | NULL | 1 | NULL |
+---------+------------------------------+------------+----------+----------+-------------+
1 row in set (0.00 sec)
Linguagem de código: PHP ( php )
2) Inserindo linhas usando exemplo de valor padrão
Se quiser inserir um valor padrão em uma coluna, você tem duas maneiras:
- Ignore o nome da coluna e o valor na
INSERT
instrução. - Especifique o nome da coluna na
INSERT INTO
cláusula e use aDEFAULT
palavra-chave naVALUES
cláusula.
O exemplo a seguir demonstra a segunda maneira:
INSERT INTO tasks(title, priority)
VALUES('Understanding DEFAULT keyword', DEFAULT);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, especificamos o valor das colunas title
e priority
.
Como o valor padrão da coluna priority
é 3 conforme declarado na definição da tabela, a instrução insere o número 3 na priority
coluna.
priority TINYINT NOT NULL DEFAULT 3
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A instrução a seguir retorna o conteúdo da tasks
tabela após a inserção:
SELECT * FROM tasks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------+-------------------------------+------------+----------+----------+-------------+
| task_id | title | start_date | due_date | priority | description |
+---------+-------------------------------+------------+----------+----------+-------------+
| 1 | Learn MySQL INSERT Statement | NULL | NULL | 1 | NULL |
| 2 | Understanding DEFAULT keyword | NULL | NULL | 3 | NULL |
+---------+-------------------------------+------------+----------+----------+-------------+
2 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
3) Exemplo de inserção de datas na tabela
Para inserir um valor de data literal em uma coluna, use o seguinte formato:
'YYYY-MM-DD'
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste formato:
YYYY
representa um ano de quatro dígitos, por exemplo, 2018.MM
representa um mês de dois dígitos, por exemplo, 01, 02 e 12.DD
representa um dia de dois dígitos, por exemplo, 01, 02, 30.
A instrução a seguir insere uma nova linha na tasks
tabela com os valores de data de início e de vencimento:
INSERT INTO tasks(title, start_date, due_date)
VALUES ('Insert date into table', '2018-01-09', '2018-09-15');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+---------+-------------------------------+------------+------------+----------+-------------+
| task_id | title | start_date | due_date | priority | description |
+---------+-------------------------------+------------+------------+----------+-------------+
| 1 | Learn MySQL INSERT Statement | NULL | NULL | 1 | NULL |
| 2 | Understanding DEFAULT keyword | NULL | NULL | 3 | NULL |
| 3 | Insert date into table | 2018-01-09 | 2018-09-15 | 3 | NULL |
+---------+-------------------------------+------------+------------+----------+-------------+
3 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
É possível usar expressões na VALUES
cláusula. Por exemplo, a instrução a seguir adiciona uma nova tarefa usando a data atual para as colunas de data de início e data de vencimento:
INSERT INTO tasks(title, start_date, due_date)
VALUES
(
'Use current date for the task',
CURRENT_DATE(),
CURRENT_DATE()
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, usamos a CURRENT_DATE()
função como valores para as colunas start_date
e due_date
. Observe que a CURRENT_DATE()
função é uma função de data que retorna a data atual do sistema.
Aqui está o conteúdo da tasks
tabela após a inserção:
+---------+-------------------------------+------------+------------+----------+-------------+
| task_id | title | start_date | due_date | priority | description |
+---------+-------------------------------+------------+------------+----------+-------------+
| 1 | Learn MySQL INSERT Statement | NULL | NULL | 1 | NULL |
| 2 | Understanding DEFAULT keyword | NULL | NULL | 3 | NULL |
| 3 | Insert date into table | 2018-01-09 | 2018-09-15 | 3 | NULL |
| 4 | Use current date for the task | 2023-12-28 | 2023-12-28 | 3 | NULL |
+---------+-------------------------------+------------+------------+----------+-------------+
4 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
4) Exemplo de inserção de múltiplas linhas
A instrução a seguir insere três linhas na tasks
tabela:
INSERT INTO tasks(title, priority)
VALUES
('My first task', 1),
('It is the second task',2),
('This is the third task of the week',3);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste exemplo, cada linha de dados é especificada como uma lista de valores na VALUES
cláusula.
MySQL retorna a seguinte mensagem:
3 row(s) affected Records: 3 Duplicates: 0 Warnings: 0
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Isso significa que as três linhas foram inseridas com sucesso, sem duplicatas ou avisos.
SELECT * FROM tasks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A tabela tasks
possui os seguintes dados:
+---------+------------------------------------+------------+------------+----------+-------------+
| task_id | title | start_date | due_date | priority | description |
+---------+------------------------------------+------------+------------+----------+-------------+
| 1 | Learn MySQL INSERT Statement | NULL | NULL | 1 | NULL |
| 2 | Understanding DEFAULT keyword | NULL | NULL | 3 | NULL |
| 3 | Insert date into table | 2018-01-09 | 2018-09-15 | 3 | NULL |
| 4 | Use current date for the task | 2023-12-28 | 2023-12-28 | 3 | NULL |
| 5 | My first task | NULL | NULL | 1 | NULL |
| 6 | It is the second task | NULL | NULL | 2 | NULL |
| 7 | This is the third task of the week | NULL | NULL | 3 | NULL |
+---------+------------------------------------+------------+------------+----------+-------------+
7 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
5) Lidando com coluna de incremento automático
Suponha que você tenha uma tabela que possui uma coluna de incremento automático:
CREATE TABLE t(
id INT AUTO_INCREMENT PRIMARY KEY
);
A instrução a seguir insere uma nova linha na t
tabela, que usa o valor gerado:
INSERT INTO t VALUES();
Nesta instrução, não especificamos nenhuma coluna após o nome da tabela e quaisquer valores dentro da cláusula VALUES().
Aqui está o conteúdo da tabela t:
SELECT * FROM t;
Saída:
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Resumo
- Use a
INSERT
instrução para inserir uma ou mais linhas em uma tabela.