Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

PostgreSQL INSERT

La sentencia `INSERT` en PostgreSQL se utiliza para añadir nuevas filas de datos en una tabla especificada. Es una operación fundamental para poblar y actualizar las bases de datos con nueva información.

Utilización

La sintaxis básica de la sentencia `INSERT` se utiliza cuando necesitas añadir nuevos registros a una tabla. Especifica el nombre de la tabla, las columnas en las que insertar los datos y los valores correspondientes.

sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

En esta sintaxis, `nombre_tabla` es la tabla de destino, `columna1, columna2, ...` son las columnas que recibirán los datos, y `valor1, valor2, ...` son los valores reales de los datos que se insertarán.

Ejemplos

1. Inserción básica

sql
INSERT INTO employees (first_name, last_name, email)
VALUES ('John', 'Doe', 'john.doe@example.com');

Este ejemplo inserta una única fila en la tabla "empleados" con los valores "nombre", "apellido" y "correo electrónico".

2. Insertar varias filas

sql
INSERT INTO products (product_name, price)
VALUES 
('Product A', 10.99),
('Product B', 15.49);

Aquí se insertan dos filas en la tabla `productos` en una sola sentencia, cada una con un `nombre_producto` y un `precio`.

3. Insertar con subconsulta

sql
INSERT INTO sales (product_id, quantity)
SELECT product_id, 5
FROM products
WHERE product_name = 'Product C';

Este ejemplo inserta datos en la tabla `ventas` seleccionando `id_producto` de la tabla `productos` donde el `nombre_producto` es `Producto C`, estableciendo la `cantidad` en 5.

4. Manejar duplicados con ON CONFLICTO

sql
INSERT INTO users (username, email)
VALUES ('jane_doe', 'jane.doe@example.com')
ON CONFLICT (username) DO UPDATE 
SET email = EXCLUDED.email;

Este ejemplo muestra cómo tratar posibles duplicados actualizando el "correo electrónico" si el "nombre de usuario" ya existe en la tabla "usuarios".

5. Uso de la cláusula RETURNING

sql
INSERT INTO orders (customer_id, order_date)
VALUES (123, '2023-10-11')
RETURNING order_id;

La cláusula `RETURNING` se utiliza para devolver el `order_id` de la fila recién insertada, lo que resulta especialmente útil con campos de autoincremento.

Consejos y buenas prácticas

  • Especifica las columnas explícitamente. Enumera siempre las columnas en una sentencia `INSERT` para garantizar la claridad y mantener la compatibilidad si cambia la estructura de la tabla.
  • Valida los tipos de datos. Asegúrate de que los valores que se insertan coinciden con los tipos de datos de las columnas.
  • Utiliza transacciones para inserciones masivas. Envuelve varias operaciones `INSERT` en una transacción para garantizar la atomicidad y mejorar el rendimiento. Por ejemplo:
    sql
            BEGIN;
            INSERT INTO products (product_name, price) VALUES ('Product C', 12.99);
            INSERT INTO products (product_name, price) VALUES ('Product D', 18.49);
            COMMIT;
            
  • Gestiona los duplicados. Utiliza `ON CONFLICT` para tratar posibles conflictos de claves, no `INSERT ... ON DUPLICATE KEY UPDATE`, que es la sintaxis de MySQL.
  • Aprovecha sabiamente las subconsultas. Utiliza subconsultas para insertar datos dinámicamente desde otras tablas para mantener la integridad y coherencia de los datos.