Bienvenida conceptos básicos y contexto histórico de las Bases de Datos

1

Bienvenida conceptos básicos y contexto histórico de las Bases de Datos

Introducción a las bases de datos relacionales

2

Historia de las bases de datos relacionales

3

Entidades y atributos

4

Entidades de Platzi Blog

5

Relaciones

6

Múltiples muchos

7

Diagrama ER

8

Diagrama Físico: tipos de datos y constraints

9

Diagrama Físico: normalización

10

Formas normales en Bases de Datos relacionales

11

Diagrama Físico: normalizando Platziblog

RDBMS (MySQL) o cómo hacer lo anterior de manera práctica

12

¿Qué es RDB y RDBMS?

13

Instalación local de un RDBMS (Windows)

14

Instalación local de un RDBMS (Mac)

15

Instalación local de un RDBMS (Ubuntu)

16

Clientes gráficos

17

Servicios administrados

SQL hasta en la sopa

18

Historia de SQL

19

DDL create

20

CREATE VIEW y DDL ALTER

21

DDL drop

22

DML

23

¿Qué tan standard es SQL?

24

Creando Platziblog: tablas independientes

25

Creando Platziblog: tablas dependientes

26

Creando Platziblog: tablas transitivas

Consultas a una base de datos

27

¿Por qué las consultas son tan importantes?

28

Estructura básica de un Query

29

SELECT

30

FROM

31

Utilizando la sentencia FROM

32

WHERE

33

Utilizando la sentencia WHERE nulo y no nulo

34

GROUP BY

35

ORDER BY y HAVING

36

El interminable agujero de conejo (Nested queries)

37

¿Cómo convertir una pregunta en un query SQL?

38

Preguntándole a la base de datos

39

Consultando PlatziBlog

Introducción a la bases de datos NO relacionales

40

¿Qué son y cuáles son los tipos de bases de datos no relacionales?

41

Servicios administrados y jerarquía de datos

Manejo de modelos de datos en bases de datos no relacionales

42

Top level collection con Firebase

43

Creando y borrando documentos en Firestore

44

Colecciones vs subcolecciones

45

Recreando Platziblog

46

Construyendo Platziblog en Firestore

47

Proyecto final: transformando tu proyecto en una db no relacional

Bases de datos en la vida real

48

Bases de datos en la vida real

49

Big Data

50

Data warehouse

51

Data mining

52

ETL

53

Business intelligence

54

Machine Learning

55

Data Science

56

¿Por qué aprender bases de datos hoy?

Bonus

57

Bases de datos relacionales vs no relacionales

58

Elegir una base de datos

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

¿Cómo convertir una pregunta en un query SQL?

37/58
Recursos

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

Aportes 150

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Sumado a la clase, propongo lo siguiente
LIMIT: La cantidad de registros que quiero

Quiero obtener todos los post creados por [email protected]

  • SELECT: Lo que quieres mostrar
    • Nickname
    • Titulo del post
  • FROM: De dónde voy a tomar los datos
    • Tabla usuarios y post
  • WHERE: Los filtros de los datos que quieres mostrar
  • GROUP BY: Los rubros por los que me interesa agrupar la información
    • No deseo agrupar
  • ORDER BY: El orden en que quiero presentar mi información
    • por fecha de publicación
  • HAVING: Los filtros que quiero que mis datos agrupados tengan

SELECT u.nickname, p.titulo FROM usuarios u inner join posts p ON u.id=p.usuario_id where u.email="[email protected]" 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:

  • WHERE utiliza las propiedades:
    –> 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’.
  • ORDER BY utiliza los siguientes criterios:
    –> ASC. Ordena de forma ascendente.
    –> DESC. Ordena de forma descendente
    –> LIMIT. Limita la cantidad de resultados para mostrar en el query, Ej: Mostrar los 5 primeros registros.
    '
    También se pueden hacer NESTED QUERIES (Consultas o Queries Anidados), esto significa que podemos hacer un query dentro de otro query.

Lo que dijo el profe con algo mas si les sirve 😄

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!!!

Esta clase debió llamarse: “inglés básico para SQL”, jeje

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.

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

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:

  1. SELECT: ¿Qué datos quiere ver?
  2. FROM: ¿A qué tabla pertenecen?
  3. WHERE: ¿Qué condiciones deben cumplir?
  4. GROUP BY ¿Cómo quieres agrupar los datos?
  5. ORDER BY ¿Cómo quieres organizar los datos?
  6. HAVING: ¿Qué condiciones deben cumplir las agrupaciones?

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.

Algo importante que hay que recordar es que having va despues de Group by, y antes de Order By

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

Las preguntas ayudan mucho que buena clase.

Sería interesante un sistema que traduzca preguntas a consultas de bases de datos.

En argentina le decimos “Machete”

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

31. Mis apuntes sobre: “¿Cómo convertir una pregunta en una query SQL?”

De pregunta a Query

  • Lo que quieres mostrar = SELECT.
  • De dónde voy a tomar los datos = FROM.
  • Los filtros de los datos que quieres mostrar = WHERE.
  • Los rubros por los que me interesa agrupar la información = GROUP BY.
  • El orden en que quiero presentar mi información = ORDER BY.
  • Los filtros que quiero que mis datos agrupados tengan = HAVING (usar en vez de WHERE cuando se usa GROUP BY).

ESta clase si me clara la forma de hacer los reportes, y el uso del having, porque no me habia quedado claro su uso

mi gustó el resumen, excelente… Gracias.

  • SELECT: Lo que quieres mostrar
  • FROM: De dónde voy a tomar los datos
  • WHERE: Los filtros de los datos que quieres mostrar. Utiliza las propiedades de:
    • 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’.

  • GROUP BY: Los rubros por los que me interesa agrupar la información
  • HAVING: Los filtros que quiero que mis datos agrupados tengan (va después del GROUP BY)
  • ORDER BY: El orden en que quiero presentar mi información. Utiliza las siguientes propiedades:
    • ASC ➡️ Ordena de forma ascendente.
    • DESC ➡️ Ordena de forma descendente
    • LIMIT ➡️ Limita la cantidad de resultados para mostrar en el query. Ej: Mostrar los 5 primeros registros.
  • LIMIT: La cantidad de registros que quiero
  • También se pueden hacer NESTED QUERIES (Consultas o Queries Anidados), esto significa que podemos hacer un query dentro de otro query.

Si quieren retos, en hackerrank hay un apartado con restos interesantes en SQL

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

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

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.

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?

Esta clase es para tomar nota 📝

Excelente la clase !!!

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

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.

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

¿Cómo transformar una pregunta en un query?

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 (Tambien nos sirva para tener los 5 primeros o este tipo de tops)
  • HAVING: Los filtros que quiero que mis datos agrupados tengan
  • SELECT, lo que se quiere mostrar.
  • FROM, origen de datos.
  • WHERE, filtros de datos.
  • GROUP BY, para agrupar la información.
  • ORDER BY, Orden en que se presenta la información.
  • HAVING, filtros que requieren los datos agrupados.

¿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

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

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

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!!!

Un resumen corto, pero gran aporte

Maravillosa clase, aclaró muchas dudas que tenía… 👍

buena la clase ,para oracle tambien sirve creo?

Excelente resumen!!!

que resumen tan bueno, con esto aclare las ultimas 10 clases para que fueron

Qué bueno que haya un resumen, excelente.

Nunca habia tenido unos apuntes asi!

Gracias por cerrar este excelente tema de la mejor forma.

Importante entender que quiere el negocio y analizarlo antes de ponerse a escribir sql.

Ya sabemos como convertir Preguntas en Queries, vamos con todo a resolver Preguntas.

En esta diapositiva creo que HAVING deberia estar en medio de GROUP BY y ORDER BY

Buen resumen, con ejemplos, falto el LIMIT para indicar hasta dónde quiero obtener o limitar la información que estoy manejando.

Información importante, el orden lógico de operaciones con SELECT:

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

Buenismo esto me ayudo como un pequeño resumen.

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

Para la pregunta ¿Cuántos posts ha publicado cada usuario?

SELECT users.login, COUNT(*) AS post_quantity
FROM users 
INNER JOIN posts
ON users.id = posts.usuario_id
GROUP BY users.login
ORDER BY post_quantity DESC;

![Result!](

convert ask to query

Excelente síntesis!

La sentencia HAVING va siempre despues de la sentencia GROUP BY

Excelente glosario!

Convertir un apregunta en un query SQL es lo mismo cuando traduces de ingles al español al menos asi lo estudio. O tambien como cuando programas yo hago similitud de enseñarle a un bebe hablar

ya vamos a terminar el cursoooooo, son 58 clases y aprendes lo que no en toda una vida. #platzibonitobelloyprecioso

Cabe recalcar que HAVING siempre se pone antes de ORDER BY y despues de GROUP BY, sino, aparece error

EL último slide resume el módulo de consultas de forma que puedes recordar casi todo con solo mirarla un momento

Un muy buen resumen para poder entender más el uso de estas sentencias.

Sumado a la clase, propongo lo siguiente
DROP: El odio que siento por la empresa

Estaba bien, tengo todas las clases pensadolo así :V

Alguna de las notas que rescaté de los comentarios que me parecieron muy importantes

Excelente resumen!

Realmente excelente

gran lección

SELECT * FROM Customers WHERE LastName = ‘Myers’ AND FirstName = ‘Kaitlyn’;

Perfecto resumen.

Muy buen resumen!

muy buena la clase

un gran resumen de lo que hasta ahora llevamos en la clase

Muy interesante esta explicacion para la generacion de reportes utiles.

Clase perfecta para sintetizar los diferentes elementos que componen un Query, y pasarlo a lenguaje criollo.

buena clase

buena sintesis

Excelente para traducir la interrogante al lenguaje de base de datos.

Muy claro todo, gracias!

Muy útil la explicación

exelente

Excelente explicación y muy buena sintesis para abordar en una primera instancia una questión.

¡Excelentes consejos, resumen y aplicación de lo visto!

muy interesante!
★★★★★

Que buena resumen!

Muy buena clase!

Buen resumen

Muy interesante esto de convertir una pregunta en un query

Las bases de datos se vuelven más interesante día con día.

excelente herramienta de ‘traduccion’, muy util

buen resumen

Buen resumen

punto de referencia muy importante

Es una buena manera de darle un orden a todos los temas explicados!

excelente resumen