INSERIR MySQL

Resumo : neste tutorial, você aprenderá como usar a INSERTinstrução MySQL para inserir uma ou mais linhas em uma tabela.

Introdução à instrução INSERT do MySQL

A INSERTinstrução permite inserir uma ou mais linhas em uma tabela. O seguinte ilustra a sintaxe da INSERTinstruçã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 INTOcláusula.
  • Em seguida, coloque uma lista separada por vírgulas de valores das colunas correspondentes entre parênteses após a VALUESpalavra-chave.

Ao usar a INSERTinstruçã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 INSERTinstruçã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 VALUEScláusula.

Exemplos de instruções INSERT do MySQL

Vamos criar uma nova tabela chamada taskspara praticar a INSERTafirmaçã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 taskstabela:

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) affectedLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A saída indica que a instrução inseriu uma linha na taskstabela com sucesso.

Neste exemplo, especificamos valores apenas para as colunas titlee priority. Para outras colunas, o MySQL usa os valores padrão.

A task_idcoluna é 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_datecomo due_datevalor padrão. Portanto, o MySQL insere nessas colunas se você não especificar seus valores na instrução.descriptionNULLNULLINSERT

O seguinte recupera dados da taskstabela:

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 INSERTinstrução.
  • Especifique o nome da coluna na INSERT INTOcláusula e use a DEFAULTpalavra-chave na VALUESclá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 titlee 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 prioritycoluna.

priority TINYINT NOT NULL DEFAULT 3Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A instrução a seguir retorna o conteúdo da taskstabela 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:

  • YYYYrepresenta um ano de quatro dígitos, por exemplo, 2018.
  • MMrepresenta um mês de dois dígitos, por exemplo, 01, 02 e 12.
  • DDrepresenta um dia de dois dígitos, por exemplo, 01, 02, 30.

A instrução a seguir insere uma nova linha na taskstabela 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 VALUESclá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_datee 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 taskstabela 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 taskstabela:

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 VALUEScláusula.

MySQL retorna a seguinte mensagem:

3 row(s) affected Records: 3  Duplicates: 0  Warnings: 0Linguagem 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 taskspossui 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 ttabela, 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 INSERTinstrução para inserir uma ou mais linhas em uma tabela.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *