Buenos días a todos los postgreros que nos siguen y bienvenidos a una nueva entrada de nuestra sección técnica, en esta ocasión estaremos tratando un tema bastante solicitado, la utilización de la instrucción INSERT en PostgreSQL.
Empecemos por lo básico; ¿Para qué sirve?
Como seguramente estáis deduciendo ya, sirve para insertar nuevos datos en nuestra tabla de datos. Te recuerdo que puedes conocer todo lo necesario sobre sentencias en nuestro Curso de Sentencias DDL, DML, DCL y TCL. Mira todo el listado de cursos.
¿Cómo lo hacemos?
Una vez que tenemos definida nuestra estructura de datos, haciendo uso del Lenguaje de Definición de Datos (DDL) para crear las diferentes tablas, utilizamos el Lenguaje de Manipulación de Datos (DML) para insertar valores en nuestras tablas. Si tienes algún problema con estos lenguajes mencionados, visita nuestro post dedicado a ellos, lo tienes en los enlaces anteriores. Con la ayuda de la instrucción INSERT insertamos los datos (uno o más valores) en nuestras tablas ya definidas.
La sintaxis de la instrucción INSERT en PostgreSQL es la siguiente:

Aprende cómo insertar datos en PostgreSQL
INSERT INTO nombre_tabla (columna1, columna2, columna3) VALUES (valor1, valor2, valor3);
Ejemplo de inserción simple de valores en una tabla:
INSERT INTO mi_tabla (id, nombre, ciudad) VALUES (1, 'Pepito', 'Sevilla');
Diferentes posibilidades con INSERT en PostgreSQL.
Es posible insertar varios valores en una sola sentencia, encapsulando los valores en paréntesis y separando los mismos por comas:
INSERT INTO nombre_tabla (columna1, columna2, columna3) VALUES (valor1, valor2, valor3), (otroValor1, otroValor2, otroValor3), (otroValorMas1, otroValorMas2, otroValorMas3);
Ejemplo para almacenar varias filas en nuestra tabla en una sola sentencia, esto se denomina inserción múltiple:
INSERT INTO mi_tabla (id, nombre, ciudad) VALUES (1, 'Pepito', 'Sevilla'), (2, 'Francisco', 'Valencia'), (3, 'Agustín', 'Galicia');
Podemos alterar el orden de las columnas a la hora de especificarlas en la sentencia, también tendremos que especificar los valores según las columnas, por ejemplo:
INSERT INTO mi_tabla (nombre, ciudad, id) VALUES ('Pepito', 'Sevilla', 1), ('Francisco', 'Valencia', 2), ('Agustín', 'Galicia', 3);
Puede darse el caso de que tengamos muchas columnas o incluso que no sepamos el nombre de las columnas de una tabla, en este caso, siempre y cuando sepamos el tipo de datos y el orden de los valores, podemos omitir escribir dichas columnas.
La siguiente sentencia introduce los valores correctamente, ya que el tipo de datos y el orden coinciden con los valores:
INSERT INTO mi_tabla VALUES (1, 'Pepito', 'Sevilla'), (2, 'Francisco', 'Valencia'), (3, 'Agustín', 'Galicia');
En esta otra sentencia no daría error puesto que el tipo de datos coincide, pero los datos no estarían correctamente insertados debido al orden de los valores. En la columna “nombre” tendríamos las ciudades y en la columna “ciudades” tendríamos los nombres:
INSERT INTO mi_tabla VALUES ('Sevilla', 'Pepito', 1), ('Valencia', 'Francisco', 2), ('Galicia', 'Agustín', 3);
Aquí sí daría error debido al tipo de dato. En la primera columna espera que introduzcamos un número y en la última columna un texto. En la última fila, en la tercera columna no daría error puesto que al estar entre comillas simples, el valor lo toma como un texto que es el tipo de dato que espera recibir en dicha columna:
INSERT INTO mi_tabla VALUES ('Pepito', 'Sevilla', 1), ('Francisco', 'Valencia', 2), ('Agustín', 'Galicia', '3');
Este es el contenido que traemos por hoy. Hemos visto el funcionamiento de la instrucción INSERT en PostgreSQL en su forma más básica, así como los casos más complejos que podemos tener. Traeremos más ejemplos en la siguiente publicación práctica, si quieres tener acceso a la documentación oficial de PostgreSQL, la tienes aquí.
En un par de días tendremos un laboratorio práctico de esta instrucción. No os lo perdáis.
¡Muchísimas gracias y hasta la próxima!