Vamos aprender como insertar registros en una tabla con INSERT INTO en PostgreSQL de una forma sencilla analizando su sintaxis y con varios ejemplos.
Sintaxis
La sintaxis básica para insertar registros en PostgreSQL es la siguiente:
INSERT INTO nombreTabla(columna_1, columna_2, …) VALUES (valor_1, valor_2, …) [RETURNING *];
En la anterior sintaxis:
- Primero escribimos las palabras INSERT INTO seguido del nombre de la tabla y despues entre paréntesis cada uno de los campos donde vamos a insertar (si se va insertar valores en todas las columnas no es necesario mencionar cada columna)
- En segundo lugar escribimos la palabra VALUES seguido de los valores a insertar entre paréntesis y separados por comas.
- En tercer lugar y opcionalmente, puedes visualizar los registros que se han insertado escribiendo al final la palabra RETURNING * o la palabra RETURNING seguido de los campos a mostrar.
Ejemplo
Insertar un registro
En el siguiente ejemplo vamos a insertar datos en la tabla de empleados mencionando los campos. Es importante tener en cuenta que podríamos obviar mencionar los campos ya que vamos a insertar en todos los campos en el mismo orden:
INSERT INTO empleados (id_empleado, id_departamento, nombre, puesto, sueldo) VALUES (1,1,'Miguel Troyano','Consultor', 60000);

Insertar un registro pero mostrando lo insertado
En el siguiente ejemplo vamos a insertar datos como en el ejemplo anterior, pero en esta ocasión nos mostrara los datos que ha insertado al finalizar:
INSERT INTO empleados (id_empleado, id_departamento, nombre, puesto, sueldo) VALUES (2,1,'Ismael Troyano','Consultor', 60000) RETURNING *;

Insertar varios registros
Si quieres insertar varios registros no es necesario que escribas INSERT INTO varias veces. Observa este ejemplo:
INSERT INTO empleados (id_empleado, id_departamento, nombre, puesto, sueldo) VALUES (3,1,'Jose Troyano','Director', 80000), (4,1,'Pilar Troyano','Directora', 80000) RETURNING *;

Ejemplo completo
Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios:
-- Creamos la tabla empleados CREATE TABLE IF NOT EXISTS public.empleados ( id_empleado numeric(2,0), id_departamento numeric(2,0), nombre character varying(50), puesto character varying(50), sueldo integer ); -- Insertamos un registro INSERT INTO empleados (id_empleado, id_departamento, nombre, puesto, sueldo) VALUES (1,1,'Miguel Troyano','Consultor', 60000); -- Mostramos los datos de la tabla SELECT * from empleados; -- Insertamos otro registro pero mostrando lo insertado al final INSERT INTO empleados (id_empleado, id_departamento, nombre, puesto, sueldo) VALUES (2,1,'Ismael Troyano','Consultor', 60000) RETURNING *; -- Insertamos varios registros a la vez INSERT INTO empleados (id_empleado, id_departamento, nombre, puesto, sueldo) VALUES (3,1,'Jose Troyano','Director', 80000), (4,1,'Pilar Troyano','Directora', 80000) RETURNING *;