Sentencias SQL: Select, Where, Group By y Order By
Resumen
¿Qué debes saber sobre las sentencias SQL?
Cuando se trata de interactuar con bases de datos relacionales, las sentencias SQL son una herramienta fundamental que debes dominar. Este conocimiento es esencial no solo para las consultas básicas, sino también para operaciones más complejas. En este artículo, daremos un repaso a estas sentencias fundamentales que ayudarán en la gestión efectiva de bases de datos.
¿Cómo utilizar el entorno de trabajo y herramientas recomendadas?
Antes de sumergirnos en las sentencias, es importante familiarizarte con las herramientas que utilizaremos. Durante este curso, se usarán las mismas técnicas y herramientas del curso de PostgreSQL. Para la parte visual, se recomienda utilizar la herramienta "pgAdmin" que facilita la interacción con la base de datos.
Consejos:
Asegúrate de haber instalado correctamente las herramientas siguiendo las guías del curso de PostgreSQL.
Si encuentras algún problema de instalación, no dudes en buscar ayuda en los foros del curso.
¿Qué es la sentencia SELECT?
La sentencia SELECT es una de las más básicas y esenciales en SQL. Su propósito es extraer datos de una base de datos según las columnas que necesites.
Por ejemplo, si deseas obtener los datos más recientes de una tabla, podrías ejecutar una consulta así:
SELECTMAX(fecha_actualizacion)AS fecha_ultima_actualizacion
FROM peliculas;
En este caso, estamos seleccionando la fecha más reciente de actualización de la tabla peliculas y asignándole un alias más legible.
¿Cómo filtrar con la cláusula WHERE?
La cláusula WHERE es crucial para filtrar datos conforme a ciertas condiciones. Por ejemplo, para extraer datos de películas cuyo periodo de renta supera los tres días, podríamos aplicar esta condición:
SELECT*FROM peliculas
WHERE duracion_renta >3;
Esta cláusula te ayudará a centrarte solo en los datos relevantes y a reducir la cantidad de información que necesitarás procesar.
¿Cómo agrupar y ordenar datos?
Dos sentencias importantes que complementan el manejo de datos en SQL son GROUP BY y ORDER BY.
GROUP BY: Sirve para agrupar filas que tienen el mismo valor en columnas especificadas, ideal para agregar datos y realizar funciones como COUNT, SUM, etc.
SELECT clasificacion,COUNT(*)AS cantidad_peliculas
FROM peliculas
GROUPBY clasificacion;
ORDER BY: Permite ordenar la información según el criterio seleccionado, lo que facilita la lectura y el análisis de datos.
Ambas clausulas son esenciales para presentar datos de manera efectiva y comprensible.
Practica y ten las sentencias claras
Este fue un breve repaso por las sentencias básicas de SQL. Un punto clave es mantener siempre presente cómo y cuándo usar cada una. Practicar con ejemplos cotidianos ayuda a fortalecer este conocimiento. Aunque este artículo presenta un caso hipotético de una base de datos de alquiler de películas, en futuras lecciones se profundizará más sobre cómo aplicar estas herramientas en proyectos reales.
Mantén estas sentencias en mente mientras desarrollas tus habilidades en el mundo de las bases de datos. ¡El aprendizaje continuo es la clave del éxito!
Count(*) : Cuenta la cantidad de registros (Cantidad de filas) de la consulta (todas, sin discriminar si son duplicados).
Count(Distinct <Campo objetivo >) : Cuenta la cantidad distinta de registros de la consulta (discriminando duplicados, considerando solo los campos únicos).
PD: tengamos presente que según la bd que utilicemos puede ser considerado, o no, los campos nulos. Siempre esta bueno verificar lo que puede parecer obvio, cuando pasas de un motor de bd a otro.
que buen aporte lo mismo me estaba preguntando
Super buen aporte!!
Recuerden que para abrir esta base de datos deben seguir los siguientes pasos:
en el servidor de postgres crean una nueva base de datos con el nombre "platzimovies"
dan click derecho en la base de datos nueva llamada "platzimovies" y eligen restore
en format = "custom or tar "y en Filenime dan click en (...)
aparece la ventana Select File eligen la ruta del archivo tar que descargaron
en la parte de format eligen All files para que les aparezca el archivo, luego select y restore
finalmente queda importada la base de datos platzivideos
Recuerden que siempre pueden usar la siguiente clase para restaurar la base de datos, es muy importante que carguen por completo toda la carpeta zipeada.
ufff que buena clase!! Fundamentos de SQL en 6 minutos
Salió bien el código:
SELECTMAX(ultima_actualizacion)AS fecha_ultima_actualizacion, clasificacion,COUNT(*)AS cantidad_peliculas
FROM peliculas
WHERE duracion_renta >3GROUPBY clasificacion, ultima_actualizacion
ORDERBY fecha_ultima_actualizacion;
Me pongo contento que el código se haya ejecutado de 10:
Hola les comparto este otro programa alternativo a pgadmin
https://www.beekeeperstudio.io/
A mi me ha gustado mucho ya que es ligero y maneja distintos motores (mongo,oracle,postgres y otros más) . Ademas la interfaz es muy buena.
Para quienes usan Docker y Docker Compose.
en tu editor de código crea un archivo llamado docker-compose.yaml y copia y pega lo siguiente:
services:db:image: postgres:latest
restart: always
ports:-"5432:5432" # Puerto por defecto de PostgreSQLenvironment:POSTGRES_USER: ${POSTGRES_USER}POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}volumes:-./database:/var/lib/postgresql/data
-./data:/usr/src/data
networks:- mynetwork
pgadmin:image: dpage/pgadmin4:latest
restart: always
ports:-"8080:80" # pgAdmin en el puerto 8080environment:PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}volumes:-./pgadmin:/var/lib/pgadmin
-./data:/usr/src/data
depends_on:- db # Asegura que pgAdmin se inicie después de la base de datos
networks:- mynetwork
networks:mynetwork: # Definir una red común para que ambos servicios se puedan comunicar
driver: bridge
```Recuerda también crear el archivo `.env````js
# Variables para la base de datos PostgreSQLPOSTGRES_USER=postgres
POSTGRES_PASSWORD=secret_password
# Variables para pgAdmin
PGADMIN_DEFAULT_EMAIL=admin@gmail.comPGADMIN_DEFAULT_PASSWORD=secret_pgadmin
```Listo ve a tu navegador y escribe 
`localhost:8080 `
ingresa las credenciales y listo 
Muy buen repaso, faltó únicamente el LIMIT y el HAVING
La funcion max no deberia traer un solo valor que sería la fecha maxima de esa columna, por que trae varias fechas ?
Hola, es resultado del GROUP BY, las funciones de agregación como MAX, y COUNT cuando son utilizadas de esta forma requieren que posteriormente tú identifiques cómo se han de visualizar.
si sale, pero es que en el group by le pusieron ultima_actualizacion, y en lo particular no entiendo (aun) lo que arroja el query.
Alguien me ayuda?
Intenta hacerlo por consola, yo lo hice así y no me dio ningún problema este es un buen tutorial:
Estoy trabajando con MySQL y no tengo la posibilidad de hacer restore. La solucion que encontre es modificar los archivos a .csv e importarlos directamente.
Hay que crear las tablas previamente ya que los documentos no traen headers
6. Principales sentencias SQL
SELECTMAX(ultima_actualizacion)AS fecha_ultima_actualizacion, clasificacion,COUNT(*)AS cantidad_peliculas
FROM peliculas
WHERE duracion_renta >3GROUPBY clasificacion, ultima_actualizacion
ORDERBY fecha_ultima_actualizacion
;
Para tener en cuenta. En ORDER BY el orden por defecto es ascendente pero si se desea lo contrario entonces se debe especificar DESC despues del nombre del campo en ORDER BY
Me parece que el ejemplo debia ser de la siguiente manera :
SELECTMAX(ultima_actualizacion)AS fecha_ultima_actualizacion, clasificacion,COUNT(*)AS cantidad_peliculas
FROM peliculas
WHERE duracion_renta >3GROUPBY clasificacion
ORDERBY fecha_ultima_actualizacion, clasificacion
: sin la agrupacion por ultima_actualizacion ya que anula el uso del Max.
Al momento de realizar la restauración de la base de datos "platzimovies", me salia este error .
Tenía pgAdminIII
Error file "couldn't be moved(error 2:No such file or directory)
Encontré la solución en:
Ahí explican que es debido a que en pgAdminIII hacen la restauración con este comando
No puedo importar la tabla de platzimovies. Actualicé postgress, reinicié la PC y me da este error:
pg_restore: [archiver] versi�n no soportada (1.14) en el encabezado del archivo
Es un problema de versiones, mira acá el comentario de un compañero en el que le funciona con la versión 12.
Yo si tengo una pregunta y es la siguiente: como desarrollador que me recomiendan. Nombrar las columnas de mis tablas en inglés o en español?
Es mejor en ingles, una de las razones es porque en ingles no se usan acentos ni caracteres extraños como la ñ.