Sumado a la clase, propongo lo siguiente
LIMIT: La cantidad de registros que quiero
Bienvenida conceptos básicos y contexto histórico de las Bases de Datos
Bienvenida conceptos básicos y contexto histórico de las Bases de Datos
Playground: tu primera consulta en bases de datos
Introducción a las bases de datos relacionales
Historia de las bases de datos relacionales
Qué son entidades y atributos
Entidades de Platzi Blog
Relaciones
Múltiples muchos
Diagrama ER
Diagrama Físico: tipos de datos y constraints
Diagrama Físico: normalización
Formas normales en Bases de Datos relacionales
Diagrama Físico: normalizando Platziblog
RDBMS (MySQL) o cómo hacer lo anterior de manera práctica
¿Qué es RDB y RDBMS?
Instalación local de un RDBMS (Windows)
Instalación local de un RDBMS (Mac)
Instalación local de un RDBMS (Ubuntu)
Clientes gráficos
Servicios administrados
SQL hasta en la sopa
Historia de SQL
DDL create
Playground: CREATE TABLE
CREATE VIEW y DDL ALTER
DDL drop
Playground: VIEW, ALTER y DROP en SQL
DML
Playground: CRUD con SQL
¿Qué tan standard es SQL?
Creando Platziblog: tablas independientes
Creando Platziblog: tablas dependientes
Creando Platziblog: tablas transitivas
Consultas a una base de datos
¿Por qué las consultas son tan importantes?
Estructura básica de un Query
SELECT
Playground: SELECT en SQL
FROM y SQL JOINs
Utilizando la sentencia FROM
Playground: FROM y LEFT JOIN en SQL
WHERE
Utilizando la sentencia WHERE nulo y no nulo
Playground: Filtrando Datos con WHERE
GROUP BY
ORDER BY y HAVING
Playground: Agrupamiento y Ordenamiento de Datos
El interminable agujero de conejo (Nested queries)
¿Cómo convertir una pregunta en un query SQL?
Preguntándole a la base de datos
Consultando PlatziBlog
Playground: Prueba Final con PlatziBlog
Introducción a la bases de datos NO relacionales
¿Qué son y cuáles son los tipos de bases de datos no relacionales?
Servicios administrados y jerarquía de datos
Manejo de modelos de datos en bases de datos no relacionales
Top level collection con Firebase
Creando y borrando documentos en Firestore
Colecciones vs subcolecciones
Recreando Platziblog
Construyendo Platziblog en Firestore
Proyecto final: transformando tu proyecto en una db no relacional
Bases de datos en la vida real
Bases de datos en la vida real
Big Data
Data warehouse
Data mining
ETL
Business intelligence
Machine Learning
Data Science
¿Por qué aprender bases de datos hoy?
Bonus
Bases de datos relacionales vs no relacionales
Elegir una base de datos
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Israel Vázquez Morales
De pregunta a Query
Aportes 188
Preguntas 7
Sumado a la clase, propongo lo siguiente
LIMIT: La cantidad de registros que quiero
Quiero obtener todos los post creados por edgar@com
SELECT u.nickname, p.titulo FROM usuarios u inner join posts p ON u.id=p.usuario_id where u.email="edgar@com" ORDER BY p.fecha_publicacion;
Muy buena información para tener en cuenta al momento de realizar nuestros quieries. Acá está la base de todo.
‘
Igualmente me gustaría agregar lo siguiente:
’
Lo que dijo el profe con algo mas si les sirve 😄
Esta clase debió llamarse: “inglés básico para SQL”, jeje
Muy buen resumen. Me parece muy bien este tipo de clases donde se haga un repaso breve de ciertos conceptos, esto ayuda como método de estudio y aclara dudas.
Muchas gracias!!!
Una recomendación por experiencia con volúmenes transaccionales altos; evitar en lo posible usar un ORDER BY dentro de la consulta en el motor de Base de Datos y dejarlo del lado del cliente o de la aplicación, ésta es una de las operaciones que más consume recursos en una consulta.
Es muy importante que en todos los cursos de “Fundamentos” se discuta y se haga regla de oro “Las buenas prácticas”.
Recomiendo a cada compañero de clase, buscar siempre las buenas prácticas en cada tema que vayan cursando.
Principalmente me considero FrontendDev pero este tema de DB está
I N C R E I B L E !
Algo que había estado esperando y que me tenía un poco confundido hasta este punto, es como hacer consultas que involucran tablas cuya conexión es una tabla pivote. En el ejemplo es el caso de posts con etiquetas. La respuesta fácil sería hacer un nested query que vimos en la clase anterior a esta, pero descubrí que es más fácil hacer un doble inner join y evitamos el problema de la escalabilidad que mencionó Israel en la clase de los nested querys.
SELECT nombre_usuario, usuarios_domicilios.domicilio_id, domicilios.calle_domicilio
FROM usuarios
INNER JOIN usuarios_domicilios ON usuarios_domicilios.usuario_id = usuarios.id
INNER JOIN domicilios ON usuarios_domicilios.domicilio_id = domicilios.id
GROUP BY nombre_usuario, domicilio_id;
Ese es el ejemplo de mi proyecto, en donde la relación entré usuarios y domicilios es N:N, por lo que existe la tabla usuarios_domicilios, en donde están los registros de los diferentes domicilios que puede tener cada usuario, y los diferentes usuarios a los que puede estar asociado un domicilio.
Con ese Inner Join doble, puedo mostrar la cantidad de domicilios diferentes que tiene cada usuario con al menos un domicilio registrado, agrupados.
SELECT nombre_usuario, COUNT(usuarios_domicilios.domicilio_id) AS total_domicilios
FROM usuarios
INNER JOIN usuarios_domicilios ON usuarios_domicilios.usuario_id = usuarios.id
INNER JOIN domicilios ON usuarios_domicilios.domicilio_id = domicilios.id
GROUP BY nombre_usuario;
Además también puedes usarlo para sacar cuentas totales, en este caso, el numero de domicilios por usuario.
Estupenda clase, para resumir, debemos estructurar las preguntas que queremos hacer a la base de datos en 6 partes que dependerás de cada uno de los segmentos de una consulta, es decir, fragmentamos la pregunta inicial en otras 6 preguntas. Acá comparto una estructura similar que estaba realizando en el curso para las partes principales de las consultas:
Tabla para transformar una pregunta en un query.
Pregunta | Query |
---|---|
¿Qué queremos mostrar? | SELECT |
¿De donde los vamos a sacar? | FROM |
¿Qué filtros voy a usar? | WHERE |
¿Cómo lo necesito agrupar? | GROUP BY |
¿Necesito filtrar datos agregados? | HAVING |
Algo importante que hay que recordar es que having va despues de Group by, y antes de Order By
31. Mis apuntes sobre: “¿Cómo convertir una pregunta en una query SQL?”
De pregunta a Query
Las preguntas ayudan mucho que buena clase.
LIKE ➡️ Nos ayuda a filtrar los registros cuando solo conocemos una parte de la información.
BETWEEN➡️ Nos ayuda a filtrar registros que estén entre un rango.
También debemos de tener en cuenta que si la condición es numérica se escribe sin comillas simples de lo contrario la condición se debe escribir dentro de comillas simples, Ej: ‘Texto’.
Adjunto un pequeño resumen de mis apuntes en general:
Como convertir una pregunta en un query SQL
Lo que quieres mostrar = SELECT
De donde voy a tomar los datos = FROM
Los filtros de los datos que quieres mostrar = WHERE
Los rubros por los que me interesa agrupar la informacion = GROUP BY
El orden en que quiero presentar mi informacion ORDER BY
Los filtros que quiero que mis datos agrupados tengan HAVING
Sería interesante un sistema que traduzca preguntas a consultas de bases de datos.
Para cuando les preguntan por el maximo, minimo de algo, les aconsejo utilizar la sentencia Order By conjunto con Limit 1, debido a que eso disminuye la carga al motor de la base de datos, en contraste a usar una query anidada como se vio en la clase anterior
Estoy viendo que hay una tendencia en todos los cursos que he tomando de poner clases súper interesantes y “básicas” que bien podrían ir al inicio del curso. NO ES QUEJA, mas bien he pensado que estas clases nos ayudan a cerrar y retroalimentar todo lo aprendido. ❤️ ustedes que piensan comunidad?
mi gustó el resumen, excelente… Gracias.
ESta clase si me clara la forma de hacer los reportes, y el uso del having, porque no me habia quedado claro su uso
En argentina le decimos “Machete”
Excelente la clase !!!
Apuntes:
A la hora de traducir preguntas que surgen de nosotros mismos u otras personas que necesitan ver en una base de datos, es necesario tener en cuenta todas las sentencias básicas de un query asi como también las sentencias adicionales. Lo primero que debemos tener en cuenta son los atributos que nos piden mostrar en la consulta, luego la tabla de la que viene, seguido del respectivo filtro en WHERE o HAVING, dependiendo si la consulta es mas compleja y nos piden mostrar la informacion de manera agrupada y/o ordenada.
Todas las clases han sido super importantes, pero esta te da un punto de vista fascinante cuando hasta ahora estas empezando a hacer queries.
Afortunadamente la construcción de Querys es bastante similar al lenguaje natural en ingles, es cuestión de hacerse bien las preguntas al momento de iniciar una investigación, y de aprender ingles, que importante es aprender ingles para programar! :0
De pregunta a Query
SELECT: Lo que quieres mostrar
FROM: De dónde voy a tomar los datos
WHERE: Los filtros de los datos que quieres mostrar
GROUP BY: Los rubros por los que me interesa agrupar la información
ORDER BY: El orden en que quiero presentar mi información
HAVING: Los filtros que quiero que mis datos agrupados tengan
Resumen:
Que quieres mostrar = SELECT
De donde voy a tomar los datos = FROM
Filtros de lo datos que quieres mostrar = WHERE
Rubros por los que me interesa agrupar la info= GROUP BY
Orden en que quiero mi info= ORDER BY
Filtros que quiero que mis datos agrupados tengan = HAVING
Se nota como disfruta esto de base de datos! uff pasion! me provoca querer saber mas de BD!
1 - SELECT se trata de a lo que queremos mostrar : pueden ser columnas, campos dinamicos, es donde lo que vamos a mostrar en cuanto a columnas / datos!
2 - FROM de una tabla , necesito una tabla o dos?, combinarlas!
3 -WHERE filtramos informacion
4 - GROUP BY agrupamos por algun tipo de criterio para sacar conteo sumas depende
5 - ORDER BY si ya tengo sumas etc resuelto puedo sacar el LIMIT! Top ten los primero 10 o los ortimos 10!
6 - HAVING cuando queremos filtrar datos que ya sumaste en algun grupo nos ayuda a referenciar y filtrar esos grupos para que tengasn sentido!
Entendido y clarisimo!!!
La palabra clave **DISTINCT **garantiza que solo se devuelvan valores únicos, es decir, se omiten los valores duplicados.
SELECT DISTINCT Country FROM Customers;
Importante entender que quiere el negocio y analizarlo antes de ponerse a escribir sql.
Esta clase es para tomar nota 📝
Un pequeño cheat-sheet que me ha ayudado bastante:
SELECT * FROM table;
SELECT * FROM table1, table2;
SELECT field1, field2 FROM table1, table2;
SELECT ... FROM ... WHERE condition
SELECT ... FROM ... WHERE condition GROUPBY field;
SELECT ... FROM ... WHERE condition GROUPBY field HAVING condition2;
SELECT ... FROM ... WHERE condition ORDER BY field1, field2;
SELECT ... FROM ... WHERE condition ORDER BY field1, field2 DESC;
SELECT ... FROM ... WHERE condition LIMIT 10;
SELECT DISTINCT field1 FROM ...
SELECT DISTINCT field1, field2 FROM ...
Condicionales:
field1 = value1
field1 <> value1
field1 LIKE 'value _ %'
field1 IS NULL
field1 IS NOT NULL
field1 IS IN (value1, value2)
field1 IS NOT IN (value1, value2)
condition1 AND condition2
condition1 OR condition2
Qué bueno que haya un resumen, excelente.
Ya sabemos como convertir Preguntas en Queries, vamos con todo a resolver Preguntas.
Alguna de las notas que rescaté de los comentarios que me parecieron muy importantes
Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros. Este conjunto de registros es modificable.
buena la clase ,para oracle tambien sirve creo?
De pregunta a Query:
En esta diapositiva creo que HAVING deberia estar en medio de GROUP BY y ORDER BY
un buen ejemplo seria decir en formas de sentencias la respuesta a la pregunta que queremos responder aquie quiero responder la pregunta cuales son los torneos mas importantes de deportes deporte que se practican con balon y cuando se realizan dichos torneos :
SELECCIONA toda la informacion
EN la tabla de deportes
FILTRA las fechas y los torneos mas importantes
AGRUPA los deporte que se practican con balon
y ORDENA de manera asendente las fechas de los torneos
SELECT *
FROM tabla_deportes_del mundo AS Deportes
WHERE date, torneos
GROUP BY deportes_con_balon
ORDER BY date ASC
¿Cómo convertir una pregunta en un query SQL?
SELECT: Lo que quieres mostrar:
que informacion quiero mostrar, ¿toda?, una parte
FROM: De dónde voy a tomar los datos
en que tabla están estos datos
WHERE: Los filtros de los datos que quieres mostrar
¿Que me interesa?, la fecha, la hora, el mes, la cantidad ,etc
GROUP BY: Los rubros por los que me interesa agrupar la información
que datos voy a agrupar,
ORDER BY: El orden en que quiero presentar mi información
en que orden lo quiero Acendente o decendente
HAVING: Los filtros que quiero que mis datos agrupados tengan
en mis grupos que me interesa, una fecha un resultado,etc
De pregunta a Query
SELECT: Lo que quieres mostrar
FROM: De dónde voy a tomar los datos
WHERE: Los filtros de los datos que quieres mostrar
GROUP BY: Los rubros por los que me interesa agrupar la información
ORDER BY: El orden en que quiero presentar mi información
HAVING: Los filtros que quiero que mis datos agrupados tengan
La sentencia HAVING va siempre despues de la sentencia GROUP BY
Este curso vale oro. Es como un recordatorio de cada sentencia y a la vez una manera de poder recordarla mas fácil, y por supuesto, nos enseña a como poder empezar a proponer una respuesta a esas preguntas que se puedan generar…
que resumen tan bueno, con esto aclare las ultimas 10 clases para que fueron
Excelente resumen!!!
Resumen: Que quieres mostrar = SELECT De donde voy a tomar los datos = FROM Filtros de lo datos que quieres mostrar = WHERE Rubros por los que me interesa agrupar la info= GROUP BY Orden en que quiero mi info= ORDER BY Filtros que quiero que mis datos agrupados tengan = HAVING
Nunca habia tenido unos apuntes asi!
Gracias por cerrar este excelente tema de la mejor forma.
Un resumen corto, pero gran aporte
La expertiz se logrará con la práctica pero con estas pautas se hace mas facil su aplicacion
SELECT nombre_campo
FROM nombre_tabla
WHERE nombre_campo (condicional =, <, >, < >) valor XYZ
GROUP BY nombre_campo
ORDER BY nombre_campo;
Convertir una pregunta en un query SQL es un proceso esencial en el análisis de datos, que te permite extraer información relevante de tus bases de datos. Vamos a desglosar cómo puedes traducir una pregunta común en una consulta SQL, utilizando las cláusulas SELECT
, FROM
, WHERE
, GROUP BY
, ORDER BY
, y HAVING
.
Pregunta: ¿Cuál es el salario promedio de los empleados en cada departamento de mi empresa, y quiero que solo se muestren aquellos departamentos con un salario promedio superior a $50,000, ordenados de mayor a menor salario promedio?
SELECT
junto con una función de agregación, AVG
, para calcular el salario promedio.FROM
.WHERE
, pero como el filtro se aplica al resultado de una agregación, utilizaremos HAVING
.GROUP BY
.ORDER BY
.HAVING
.Basándonos en la descomposición anterior, el query SQL resultante sería algo como esto:
SELECT departamento, AVG(salario) AS salario_promedio
FROM empleados
GROUP BY departamento
HAVING AVG(salario) > 50000
ORDER BY AVG(salario) DESC;
SELECT departamento, AVG(salario) AS salario_promedio
: Seleccionamos el nombre del departamento y calculamos el salario promedio, dándole un alias salario_promedio
para mayor claridad en los resultados.FROM empleados
: Indicamos que los datos se tomarán de la tabla empleados
.GROUP BY departamento
: Agrupamos los resultados por el campo departamento
para calcular el salario promedio dentro de cada departamento.HAVING AVG(salario) > 50000
: Filtramos los grupos (en este caso, departamentos) para incluir solo aquellos con un salario promedio superior a $50,000.ORDER BY AVG(salario) DESC
: Ordenamos los resultados de forma descendente según el salario promedio para mostrar primero los departamentos con los salarios promedio más altos.Este proceso de descomposición y construcción del query SQL te permite traducir preguntas de negocio o análisis en consultas concretas que pueden ejecutarse contra una base de datos, facilitando la extracción de insights valiosos y respuestas específicas a tus preguntas.
Deberian poner conteo de like en las clases.
❤️ excelente clase
Que curso tan simplemente increíble!💚
Se nota que le gustan los relojes al profesor jaja, en varias clases ha usado relojes diferentes muy bonitos 😃
Excelente síntesis, muy bueno ser ordenado y analizar
Maravillosa clase, aclaró muchas dudas que tenía… 👍
Un muy buen resumen para poder entender más el uso de estas sentencias.
buena sintesis
Muy interesante esta explicacion para la generacion de reportes utiles.
Evaluación en síntesis, 100%.
Es una buena manera de darle un orden a todos los temas explicados!
Excelente resumen!
Buen resumen
Que buena resumen!
O esto ya me dio varias ideas para los querys de mi proyecto!
Excelente resumen.
Me encanta, muchas gracias
Excelento los tips para poder resolver una pregunta a query.
Excelente resumen de las sentencias a usar en las consultas.
Realmente excelente
Excelente para traducir la interrogante al lenguaje de base de datos.
exelente
Las bases de datos se vuelven más interesante día con día.
excelente herramienta de ‘traduccion’, muy util
excelente resumen
gracias
Falto añadir LIMIT
Excelente resumen! Muy buena clase.
Excelente clase
Perfecto resumen.
Quiero saber si en la familia Trump tienen covid-19
select : nombre , estado, count () as nindividuos
from: enfermos_covid19
where: enfermedad= ‘covid-19’ and estado = ‘activo’ and especie = ‘australophitecus’
group by: nombre, estado
having: count() > 0
Resultado:
2 ( Agrupación de Melania y Donald)
Cabe recalcar que HAVING siempre se pone antes de ORDER BY y despues de GROUP BY, sino, aparece error
Esta imagen hubiera sido muy bueno mostrarla desde un principio del curso para tener un panorama claro de que es lo que ibamos a ver en el curso y mentalizarnos para cada tema en particular. Sentía que iba a ciegas sin entender cada concepto. Ahora empiezo a entender el sentido.
ya vamos a terminar el cursoooooo, son 58 clases y aprendes lo que no en toda una vida. #platzibonitobelloyprecioso
EL último slide resume el módulo de consultas de forma que puedes recordar casi todo con solo mirarla un momento
• SELECT: Lo que quieres mostrar
• FROM: De dónde voy a tomar los datos
• WHERE: Los filtros de los datos que quieres mostrar
• GROUP BY: Los rubros por los que me interesa agrupar la información
• ORDER BY: El orden en que quiero presentar mi información
HAVING: Los filtros que quiero que mis datos agrupados tengan
Buen resumen, con ejemplos, falto el LIMIT para indicar hasta dónde quiero obtener o limitar la información que estoy manejando.
muy buena la clase
un gran resumen de lo que hasta ahora llevamos en la clase
Clase perfecta para sintetizar los diferentes elementos que componen un Query, y pasarlo a lenguaje criollo.
buena clase
Muy útil la explicación
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?