Skip to the content.

Curso PostgreSQL

Autor: Luis Fernando Apáez Álvarez
Inserciones

Una vez que hicimos el laborioso proceso de ingresar las 1000 inserciones en la tabla empleados, repetiremos el proceso ahora para las tablas productos y ventas. Recordemos que las últimas inserciones deben ser en aquellas tablas que tienen definidas llaves foráneas, pues en varias de sus columnas tendremos que los registros dependen de registros previos en otras tablas, como es el caso de la tabla ventas.

Tabla productos

Comenzamos por ver la estructura de esta tabla

SELECT * FROM productos;

Después generamos los datos en mockaroo, en este caso no serán 1000 inserciones, nos bastarán con generar sólo 100 productos de diferentes marcas

es importante ser cauteloso a la hora de generar los datos. Después abrimos la consola psql y realizamos la conexión con postgres

no olvides que en Database [postgres]: debes colocar el nombre de la base de datos que almacena la tabla productos. Luego, vamos a símbolos del sistema para ejecutar las inserciones

una vez ingresada la contraseña tendremos

que las inserciones se han ejecutado. Comprobamos yendo a pgAdmin, recuerda que antes de realizar la consulta debe refrescar (refresh) la tabla o el esquema público

SELECT * FROM productos;

Primeras 8 filas

últimas filas

Notamos que la información, en la mayoría de los casos, no tiene sentido, pero el punto es tener datos para trabajar con ellos.

Finalizamos realizando las inserciones de la tabla ventas, en ella de igual forma sólo efectuaremos 100 inserciones.

Inserciones ventas

Comenzamos por

SELECT * FROM ventas;

Hay un detalle en esta tabla. En realidad, de inicio, no construimos bien la tabla ventas pues la columna cantidad está de más. La razón es que, de acuerdo a lo que aprenderemos después, podemos calcular el total de la venta a partir de la columna precio de la tabla productos y de la columna cantidad de la tabla ventas. De tal manera, no es necesario incluir dicha columna en esta tabla. Así, procedemos a eliminar dicha columna. Para ello escribimos

-- Eliminamos la columna total
ALTER TABLE ventas DROP COLUMN total;

-- Vemos los cambios
SELECT * FROM ventas;

Ahora, tenemos otro problema proveniente de la tabla empleados. Si has estado realizando los ejercicios que se dejan en clase, entonces seguramente eliminaste alguna fila de la tabla empleados. Aunque se haya eliminado una fila en dicha tabla, el índice generado en automático por el tipo de dato SERIAL continúa almacenado en dicha tabla, de tal manera, la fila siguiente a la fila eliminada tendrá como id el número sucesor de la fila eliminada. Por ejemplo, en mi caso

eliminé la fila 3, no obstante, el índice del id_empleados excluye de la numeración al número 3. Ahora bien, el problema radica en la columna id_empleado de la tabla ventas pues, si ingresamos en dicha columna el número 3, entonces postgres nos arrojará un error referencial debido a la llave foránea definida en dicha columna. Para resolver el problema

De donde

y en la fórmula escribimos

Una vez descargado el archivo vamos a símbolos del sistema para efectuar las inserciones

y vemos en pgAdmin la actualización de la tabla ventas

SELECT * FROM ventas;

y los últimos registros


Ejercicio

De las tablas adicionales que creaste (es decir aquellas tablas que no son empleados, productos, ventas) en la base de datos (referente al proyecto). Crea las inserciones pertinentes como se ha hecho en estas dos últimas clases.

Regresar