Gestión de Datos con PGAdmin: Inserción, Consulta y Borrado
Resumen
¿Cómo insertar datos con PGAdmin?
Explorar cómo insertar datos es esencial para cualquier persona que quiera gestionar bases de datos de manera efectiva. Utilizando PGAdmin, un administrador de bases de datos para PostgreSQL, puedes agregar, modificar y borrar información de forma sencilla y visual. Para empezar, aprenderemos a realizar estas acciones básicas que son el pilar de una gestión óptima.
¿Cómo agregar datos a una tabla?
Agregar datos a una tabla en PGAdmin es un proceso que se puede realizar fácilmente mediante scripts. Al seleccionar una tabla, puedes hacer clic derecho y elegir "Scripts" para crear un "Insert Script":
INSERTINTO estacion (nombre, direccion)VALUES('Estación Centro','Carrera uno Calle uno número doce');
Para verificar que el dato se ha insertado correctamente, puedes consultar la tabla:
SELECT*FROM estacion;
Al ejecutar estas consultas, verás los datos recién ingresados, y es aquí donde PostgreSQL se encargará de gestionar automáticamente campos como ID si están configurados como auto incrementales.
¿Cómo modificar columnas con tipos de datos incorrectos?
Puede darse el caso de que al crear una tabla, algún tipo de dato no sea el correcto, como fue el caso de capacidad que se estableció como INTERVAL en vez de INTEGER. Para corregir este tipo de errores, se deben seguir los siguientes pasos:
Eliminar la columna incorrecta.
Crear nuevamente la columna con el tipo de dato correcto.
ALTERTABLE tren DROPCOLUMN capacidad;ALTERTABLE tren ADDCOLUMN capacidad INTEGER;
Así se asegura que los datos se almacenen correctamente y se mantenga la integridad de la base de datos.
¿Cómo gestionamos trayectos entre estaciones y trenes?
La gestión de trayectos es un aspecto fundamental en bases de datos relacionales. Los trayectos representan la relación entre estaciones y trenes, y deben reflejar adecuadamente datos consistentes:
¿Cuál es el proceso para crear trayectos?
Una tabla de trayectos enlaza las ID de estaciones y trenes. Cuando insertemos datos en la tabla de trayectos, es vital que esas ID existan previamente:
Verifica que las claves primarias referidas existan, ya que los sistemas de bases de datos, como PostgreSQL, no permiten relaciones que no se puedan establecer debido a claves foráneas inexistentes.
¿Qué ocurre al borrar o actualizar datos?
La actualización y borrado de datos también tiene un impacto en tablas que se relacionan entre sí. Cuando eliminamos un tren que tiene trayectos asociados, esos trayectos deben eliminarse automáticamente para mantener la coherencia de los datos.
¿Cómo afecta el borrado a las relaciones?
Al borrar un tren específico:
DELETEFROM tren WHERE id =1;
PGAdmin y PostgreSQL se encargan de actualizar las tablas relacionadas, como trayectos, para que no quede ningún dato huérfano en la base de datos.
¿Cómo actualizamos datos y sus referencias?
Si decides modificar un identificador de tren:
UPDATE tren SET id =3WHERE id =2;
Verás cómo esta modificación se refleja automáticamente en todas las tablas que mantienen una relación con ese ID. Esta es una muestra tangible de cómo PostgreSQL gestiona eficientemente las claves foráneas.
Gestionar la integridad de las bases de datos relacionales es esencial para asegurar que los datos estén siempre en un estado consistente, independiente de las modificaciones, mejorando así la robustez de las aplicaciones que dependen de esas bases de datos. ¡Ahora es tu turno de practicar estas habilidades con tablas de pasajeros y viajes en tu entorno PGAdmin, y experimentar cómo estos principios fortalecen tu gestión de datos!
Hay una situación importante sobre las claves foráneas (FK) que se explica en esta clase y me gustaría resaltarla un poco mas:
Primeramente recordar del curso de Fundamentos de BD que a las tablas se les llama "independientes" cuando no tienen FK's. Del mismo modo una tabla es "dependiente" cuando tiene al menos una FK, es decir, son tablas que dependen de tablas independientes.
Es importante** al momento de crear tablas e insertar datos en ellas**, empezar siempre por las tablas independientes y una vez terminadas seguir con las dependientes
totalmente cierto, de no ser así , saltaría error a la hora de agregar data a las tablas hijas ya que en la tabla padre no existe
Muchas gracias por el aporte.
Hay que tener mucho cuidado con las llaves foraneas cuando se deja la opcion de CASCADA cuando se borra o se actualiza. Ayuda a ahorrar tiempo, perr esto puede afectar la transacionalidad en bases grandes.
y entonces cómo se soluciona?
Usualmente lo que se hace en produccion es que cuando se borra un objeto lo que realmente se hace es cambiar un flag de estado para saber si lo van a mostrar o no las consultas.
Asi que realmente nunca se borra.
Y si nunca se borra la cascada deja de servir y es en codigo donde hay que ocuparse que si un registro tipo pasajero se "borra" tmb se "borren" sus viajes .
Holaa! Les dejo un dato SUPER importante, a la hora de escribir, tengan mucho cuidado... si usan mayusculas a la hora de insertar un valor, deben escribirlo asi:
"ID_trayecto" o sin mayusculas id_trayecto.
Lo acalro porque postgre les hara la vida imposible si no ponen comillas en las mayusculas, ya que piensa que es un dato de aplicacion, como un INSERT y no como un dato propio. Les dira por ejemplo que esa columna no existe.
Gracias Bro, tu comentario me dio una idea para resolver una query que no me salía.
gracias crack
--/////////////////--16.Inserción y consulta de datos
--////////////////SELECT*FROMpublic.estacion;--si data
SELECT*FROMpublic.pasajero;--reto
SELECT*FROMpublic.trayecto;--si data
SELECT*FROMpublic.tren;--si data
SELECT*FROMpublic.viaje;--reto
--insert "estacion"INSERTINTOpublic.estacion(nombre,direccion)VALUES('Estación Centro','St 1# 12'),('Estación Norte','St 100# 112');--insert "tren"INSERTINTOpublic.tren(capacidad,modelo)VALUES(100,'Modelo 1'),(100,'Modelo 2');--insert "trayecto"INSERTINTOpublic.trayecto(tren,estacion,nombre)VALUES(1,1,'Ruta 1');(2,2,'Ruta 2');;--RETOINSERTINTOpublic.pasajero(nombre,fecha_nacimiento,direccion_residencia)VALUES('José Ordoñez','1987-1-3','St 100# 12'),('Ángel Quintero','1987-1-12','St 101# 12'),('Rafel Castillo','1977-1-12','St 102# 12'),;INSERTINTOpublic.viaje(id_pasajero,id_trayecto,inicio,fin)VALUES(1,1,'2019-01-02','2019-01-02'),(2,1,'2019-01-03','2019-01-03'),(2,2,'2019-01-04','2019-01-04'),(3,2,'2019-01-04','2019-01-04');--Delete sin limit
DELETEFROMpublic.estacionWHERE estacion.id=4;--delete limit
DELETEFROMpublic.estacionWHERE estacion.idIN(SELECT id FROMpublic.estacionWHERE estacion.idIN(3,4)ORDERBY estacion.idLIMIT2);-- update sin limit
UPDATEpublic.estacionSET id=4, nombre='Estación SUR-OESTE', direccion='St 4# 1'WHERE estacion.id=4;-- update utilizando limit
UPDATEpublic.estacionSET id=4, nombre='Estación SUR-OESTE', direccion='St 4# 1'WHERE id IN(SELECT estacion.idFROMpublic.estacionWHERE estacion.idin(4)ORDERBY estacion.idLIMIT1);
Añadir algo el delete con limit es algo que vi en el curso de mysql sql y es buena práctica limitar la operación por si algo sale mal, pero en el caso de postgres me parece que es algo contra producente ya que para hacerlo con limit hay que hacerlo a través de una subquery
Porque no lo hace de esta forma? Para no tener un subquery
UPDATEpublic.estacionSET id=4, nombre='Estación SUR-OESTE', direccion='St 4# 1'WHERE id IN(4);
Que bien!!!
Me siento totalmente perdido en este curso.
Pensé que era solo yo! Me esta costando demasiado. No sé si es porque estoy saturada o porque siento que el profe da demasiadas vueltas. En la clase de Fundamentos de Bases de Datos, no me paso. Acá he tenido que ver las clases hasta 3 veces y quedo igual. AYUDAAAAAAAAAAAA
Maraiana, en que te sientes perdida o que no has entendido hasta el momento?
¿Cómo modificar el tipo de de una columna?
Si el tipo al que quieres cambiar es compatible como por ejemplo de integer => numeric puedes poner:
Gracias justo me preguntaba para que era los cuatro puntos, hasta ya estaba pensando en css. :)
Postgresql, es una excelente opción para tener una BD relacional.
Revisa como implementa el tipo de dato jsonb y como indexa etiquetas JSON para acelerar consultas a lo largo de múltiples datos te darás cuenta que tiene muchas características avanzadas que hacen de Postgres un motor de bases de datos superior
Hay mucho avance en esta comunidad con respecto a implementaciones de estructuras de datos NoSQL dentro de SQL
Estoy de acuerdo. Me está gustando mucho.
Tanto poder en algo tan sencillo 👨💻
es verdad 👨💻
Tenes razon
Este pgAdmin es enserio muy sencillo-
Utilizando Python me acostumbré a utilizar las comillas dobles como se utilizan las comillas simples ya que en muy pocos casos hay distinción, pero para la inserción de datos solo se puede hacer con comillas simples en pgadmin, de lo contrario, postgres lo tomara como referencia a una columna.
Espero a alguien le sirva tambien.
Leí muy tarde tu comentario, me estaba peleando porque no me salía. Pero gracias!!!!!!
Comillas simple ALT + 39 = ' '
Clase 16/32: Seguimos con el fondo rojo :c jajaa.
Espera a la clase 18 :)
La verdad que PostgreSQL si facilita mucho la vida, es una muy buena opción muy intuitiva.
Tremenda herramienta
Me parece que con pg admin no se aprende real mente lo que hace postgres es mejor seguir el curso con la consola
Coincido, si te enseña a usar la interfaz pero de por si es intuitiva, lo interesante es conocer el SQL que es lo que te ayuda a trabajar mucho más rápido.
Esta clase me ha costado muchísimo trabajo entenderla, tuve que verla 3 veces y es bastante tediosa, me terminó dando sueño.
Pero ahí vamos... 🐺🥚🥚
me tomo 2 horas lograr resolver un error
--Agregando datos a la tabla estacion
INSERTINTOpublic.estacion(nombre, direccion)VALUES('Estacion Centro','St 1#12');-- comprobamos los datos de la tabla estacion
SELECT*FROMpublic.estacion;--Agregando datos a la tabla tren
INSERTINTOpublic.tren(capacidad, modelo)VALUES(100,'Modelo 1');-- comprobamos los datos de la tabla tren
SELECT*FROMpublic.tren;--Para eliminar y despues agregar la columna de nombre a la tabla trayecto
ALTERTABLEpublic.trayectoDROPCOLUMN nombre;ALTERTABLEpublic.trayectoADD nombre character varying(100);--Agregando datos a la tabla trayecto
INSERTINTOpublic.trayecto(id_estacion, id_tren, nombre)VALUES(1,1,'Ruta 1');--Comprobamos los datos de la tabla trayecto
SELECT*FROMpublic.trayecto;--Eliminar una tubla de la tabla tren con el id =1, como esta en cascada se elimino la tuplas que tenian ese id_tren
DELETEFROMpublic.trenWHERE id =1;--Cambiar la tupla que tenda el id = de la tabla tren
UPDATEpublic.trenSET id =1WHERE id =2;
Por si alguien le sirve, aquí tienen una lista que hice con el nombre y dirección de algunas estaciones de la red de metro de Madrid.
INSERTINTOpublic.estacion( id_estacion, nombre_estacion, direccion_estacion)VALUES('001','Callo','C/ Gran Vía, 39');VALUES('002','Tirso de Molina','Plaza de Tirso de Molina');VALUES('003','Pinar de Chamartín','Av. Arturo Soria, 330');VALUES('004','Plaza Castilla','Plaza de Castilla, 01');VALUES('005','Bambú','C/ Príncipe de Vergara, 126');VALUES('006','Chamartín','Plaza Chamarín');VALUES('007','Alameda de Osuna','Av. Cantabria, 01');VALUES('008','El Capricho','C/ Pinos de Osuna, 02');VALUES('009','Canillejas','C/ Alcalá, 726');VALUES('010','Hospital Infanta Sofía','Av. Europa, 7');VALUES('011','Reyes Católicos','Av. Europa, 134');VALUES('012','Baunatal','Av. Baunatal, 15');VALUES('013','Nuevos Ministerios','Paseo de la Castella, 7')VALUES('014','Colombia','Plaza de Colombia, 18');VALUES('015','Pinar del Rey','C/ Arturo Soria, 15');
Puedo importar tablas de excel a PostgreSQL?
ward
si lo puedes hacer con el start builder de postgresql tiene una librería la cual puedes hacer la conexión sin mayor problema. pero si quieres pasar datos del excel a postgres te recomiendo pasar los datos a un archivo csv
creo que para mejorar la enseñanza se deberían emplear mas herramientas pedagógicas como pueden ser figuras ya que se complica la explicación con la forma en que se desarrollo esta clase
Información resumida de esta clase
#EstudiantesDePlatzi
Scripts es la herramienta de PgAdmin para insertar, modificar y borrar datos
Con Insert Script puedo agregar datos a una tabla
Con Create Script puedo crear una tabla
Con Update Script puedo hacer cambios en la información dentro de una tabla