# MariaDB INSERT INTO: cómo insertar datos en tablas

Con MariaDB `INSERT INTO` se insertan nuevos registros en una tabla existente. Es uno de los comandos SQL más importantes y se utiliza siempre que se quiere añadir nuevos contenidos a una base de datos o ampliar la información existente.

## ¿Qué es el comando MariaDB `INSERT`?

El comando `INSERT` en [MariaDB](https://www.ionos.es/digitalguide/servidores/know-how/que-es-mariadb/) inserta nuevos datos en una tabla. Lo hace **añadiendo filas completas a la estructura de datos existente**. Cada vez que un usuario se registra, envía un formulario o crea un producto, el sistema ejecuta en segundo plano un `INSERT INTO`.

Al insertar datos, MariaDB verifica si los valores se corresponden con los **tipos de datos de las columnas** y si se han completado todos los campos obligatorios. Si los valores infringen restricciones como `NOT NULL`, `UNIQUE` o `FOREIGN KEY`, la base de datos rechaza la operación. Por ello, la estructura de la tabla de destino y la correcta especificación de las columnas desempeñan un papel fundamental al utilizar `INSERT`.

## ¿Cómo es el comando `INSERT INTO` en MariaDB?

La sintaxis estándar de `INSERT INTO` es la siguiente:

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

- `table_name` indica la tabla en la que se van a insertar los datos.
- La lista de columnas (`column1, column2, ...`) es opcional, pero recomendable.
- La parte `VALUES` contiene los valores que deseas insertar en las columnas indicadas.

MariaDB inserta los valores en el orden en que se definen las columnas. Si la **cantidad o el orden de los valores** no coincide con la lista de columnas, se producirá un error.

## ¿Qué parámetros y argumentos existen para `INSERT INTO` en MariaDB?

`INSERT INTO` se puede ampliar y adaptar según sea necesario. Aquí tienes los parámetros y variantes más importantes:

### Lista de columnas

Puedes especificar todas las columnas o solo algunas. Si omites la lista, MariaDB espera valores para todas las columnas de la estructura de la tabla.

```sql
INSERT INTO users VALUES (1, 'Ana', 'ana@example.com');
```

Si solo deseas rellenar columnas específicas, ejecuta el siguiente comando:

```sql
INSERT INTO users (name, email) VALUES ('Ana', 'ana@example.com');
```

Aquí seleccionamos las columnas `name` y `email`.

### Insertar varias filas

Esta variante es más eficiente que ejecutar múltiples comandos `INSERT` individuales en MariaDB, especialmente con grandes volúmenes de datos:

```sql
INSERT INTO products (name, price)
VALUES ('pen', 1.50),
    ('notepad', 2.00),
    ('bag', 9.90);
```

### `INSERT IGNORE`

Con `IGNORE`, MariaDB omite las filas que violan restricciones y continúa con las demás.

```sql
INSERT IGNORE INTO users (id, name) VALUES (1, 'Ana');
```

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

Esta expresión actualiza filas existentes cuando ocurre un conflicto de clave única.

```sql
INSERT INTO users (id, name)
VALUES (1, 'Ana')
ON DUPLICATE KEY UPDATE name = 'Ana';
```

Esta técnica evita consultas adicionales y permite combinar la lógica de inserción y actualización en un solo comando. Resulta muy útil en importaciones, sincronización de datos o procesos automatizados de registro.

### Insertar con `SELECT`

Con `SELECT` puedes copiar datos de una tabla a otra:

```sql
INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
```

## Ejemplos de uso de MariaDB `INSERT INTO`

A continuación, te presentamos algunos escenarios comunes para usar `INSERT INTO`.

### Registrar un usuario

En el siguiente ejemplo, MariaDB inserta un nuevo usuario en la tabla `users`. Los valores para las columnas `name` y `email` provienen de un formulario web o de una aplicación. El valor `NOW()` obtiene la marca de tiempo actual, es decir, el momento del registro.

```sql
INSERT INTO users (name, email, created_at)
VALUES ('Elena', 'elena@example.com', NOW());
```

Este método resulta adecuado para formularios web habituales de registro, donde cada entrada se guarda directamente en la base de datos. Conviene que la columna `created_at` esté definida como `DATETIME` o `TIMESTAMP` para que el valor de `NOW()` se almacene correctamente.

### Insertar datos desde otra tabla

Este ejemplo muestra cómo transferir datos existentes de una tabla (`orders`) a otra (`archive_orders`). MariaDB selecciona todos los pedidos cuyo estado sea `'completed'` y copia las columnas `id` y `status`.

```sql
INSERT INTO archive_orders (id, status)
SELECT id, status FROM orders WHERE status = 'completed';
```

Este tipo de comandos se utiliza en procesos como el archivado, la depuración de datos o la generación de informes. Es importante asegurarse de que la estructura de las columnas, incluidos los tipos de datos, coincida entre la tabla de origen y la de destino; de lo contrario, MariaDB no ejecutará el comando.


This is a markdown version of: [https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/mariadb-insert-into/](https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/mariadb-insert-into/) for AI/LLM consumption.