# Como inserir dados em tabelas: INSERT INTO no MariaDB

Com o comando `INSERT INTO` no MariaDB, você insere novos registros em uma tabela existente. Ele é um dos comandos básicos mais importantes do SQL e é usado sempre que você deseja adicionar novos dados ou ampliar informações já existentes em um banco de dados.

## O que é o comando `INSERT INTO` no MariaDB?

O comando `INSERT` no [MariaDB](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/banco-de-dados-mariadb/) insere novos dados em uma tabela. Ele **completa estruturas de dados existentes** adicionando linhas inteiras. Sempre que usuários se registram, enviam um formulário ou cadastram um produto, o sistema executa um `INSERT INTO` em segundo plano.

O MariaDB verifica, ao inserir os dados, se os valores correspondem aos **tipos das colunas** e se todos os campos obrigatórios foram preenchidos. Caso os valores violem restrições como `NOT NULL`, `UNIQUE` ou referências definidas por `FOREIGN KEY`, o banco de dados rejeita a operação. Por isso, a estrutura da tabela destino e a correta indicação das colunas são essenciais para o uso adequado do `INSERT`.

## Sintaxe do `INSERT INTO` no MariaDB

A sintaxe padrão do comando `INSERT INTO` no MariaDB é:

```sql
INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3)
VALUES (valor1, valor2, valor3);
```

- `nome_da_tabela` define a tabela onde os dados serão inseridos.
- A lista de colunas (`coluna1`, `coluna2` etc.) é opcional, mas recomendada.
- `VALUES` contém os valores a serem inseridos nas colunas indicadas.

O MariaDB insere os valores na ordem em que as colunas foram definidas. Se a quantidade ou a **ordem dos valores** não corresponder à lista de colunas, ocorrerá um erro.

## Parâmetros e argumentos do `INSERT INTO` no MariaDB

O comando `INSERT INTO` no MariaDB pode ser estendido e adaptado conforme a necessidade. Aqui estão os parâmetros e variações mais importantes:

### Listar colunas

Você pode especificar todas as colunas ou apenas algumas. Se a lista for omitida, o MariaDB espera valores para todas as colunas da tabela.

```sql
INSERT INTO usuários VALUES (1, 'Anna', 'anna@exemplo.com');
```

Se quiser preencher apenas colunas específicas, use o comando a seguir:

```sql
INSERT INTO usuários (nome, e-mail) VALUES ('Anna', 'anna@exemplo.com');
```

Aqui, escolhemos as colunas `nome` e `e-mail`.

### Inserir várias linhas

Essa variação é mais eficiente do que a execução de vários comandos `INSERT` individuais no MariaDB, especialmente ao lidar com grandes volumes de dados:

```sql
INSERT INTO produtos (nome, preço)
VALUES ('caneta', 1.50),
    ('bloco de notas', 2.00),
    ('sacola', 9.90);
```

### Comando `INSERT IGNORE`

Com `IGNORE`, o MariaDB ignora as linhas que violam restrições e continua com as demais.

```sql
INSERT IGNORE INTO usuários (id, nome) VALUES (1, 'Anna');
```

### Comando `INSERT ... ON DUPLICATE KEY UPDATE`

Essa expressão atualiza linhas existentes quando há conflito com uma chave única:

```sql
INSERT INTO usuários (id, nome)
VALUES (1, 'Anna')
ON DUPLICATE KEY UPDATE nome = 'Anna';
```

A técnica evita consultas adicionais e permite combinar lógica de inserção e atualização em um único comando. Isso é muito prático em importações, dados sincronizados ou processos automatizados de registro.

### Inserir com `SELECT`

Com `SELECT`, você copia registros de uma tabela para outra:

```sql
INSERT INTO arquivar_pedidos (id, status)
SELECT id, status FROM pedidos WHERE status = 'concluído';
```

## Exemplos de uso do `INSERT INTO` no MariaDB

A seguir, apresentamos cenários comuns de uso do `INSERT INTO`.

### Registrar usuário

No exemplo a seguir, o MariaDB insere um novo usuário na tabela `usuários`. Os valores para as colunas `nome` e `e-mail` vêm de um formulário ou aplicação. O valor `NOW()` obtém o carimbo de data/hora atual, ou seja, o momento do registro.

```sql
INSERT INTO usuários (nome, e-mail, criado_em)
VALUES ('Lena', 'lena@exemplo.com', NOW());
```

Esse método é adequado para formulários clássicos da web, como telas de cadastro, nas quais cada entrada é registrada diretamente no banco de dados. É importante que a coluna `criado_em` seja do tipo `DATETIME` ou `TIMESTAMP` para que `NOW()` seja armazenado corretamente.

### Inserir dados de outra tabela

Este exemplo mostra como transferir dados existentes de uma tabela (`pedidos`) para outra tabela (`arquivar_pedidos`). O MariaDB seleciona todos os pedidos com o status `'concluído'` e transfere as colunas `id` e `status`.

```sql
INSERT INTO arquivar_pedidos (id, status)
SELECT id, status FROM pedidos WHERE status = 'concluído';
```

Esse tipo de comando é usado em arquivamentos, limpezas de dados ou geração de relatórios. Verifique se a estrutura (como os tipos de colunas) das tabelas de origem e de destino é compatível, caso contrário o MariaDB não executará o comando.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/insert-into-no-mariadb/](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/insert-into-no-mariadb/) for AI/LLM consumption.