¡El poder de los datos!

1

¡El poder de los datos!

Fundamentos de Bases de Datos

2

Sistema de Gestión de Bases de Datos

3

¿Qué es una base de datos?

4

¿Qué es SQL?

5

Los comandos SQL más importantes

6

Operaciones básicas en SQL

7

Modelo Entidad Relación (ER)

8

Normalización

Introducción a las bases de datos relacionales

9

Tipos de datos en SQL

10

¿Cómo crear una base de datos en SQL?

11

Buenas practicas de bases de datos con SQL

12

Práctica: Tu primera consulta en bases de datos

Manipulación de Datos

13

Insertando Datos con SQL (INSERT)

14

Práctica: Creación de Tablas en SQL (CREATE TABLE)

15

Consultas y Selecciones en SQL (SELECT)

16

Práctica: SELECT en SQL

17

Eliminación de Datos con SQL (DELETE)

18

Actualización de Datos con SQL (UPDATE)

19

Práctica: CRUD con SQL

Manipulación Avanzada de Datos

20

🛠️ Guía de instalación de MySQL y MySQL Workbench

21

¿Qué es la cláusula WHERE de SQL?

22

Filtrar y Ordenar Datos en SQL (LIKE)

23

Cláusulas de Comparación Textual en SQL (AND, NULL, IN, NOT)

24

Funciones de Aritmética Básica en SQL (COUNT)

25

Funciones de Aritmética Básica en SQL (MIN, MAX)

Agrupación de Datos

26

Agrupación de Datos en SQL: GROUP BY, HAVING y CASE para Análisis Avanzado

27

Tipos de JOIN en SQL

28

¿Cómo funciona INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?

Transformación de Datos

29

Vistas Materializadas en SQL: Como optimizar tus consultas y reportes.

30

Vistas Materializadas y Temporales en SQL

31

Expresiones de Tablas Comunes (CTE) en SQL

Procedimientos Almacenados

32

Procedimientos Almacenados en SQL

33

Procedimientos Almacenados en SQL: Gestión de Variables y Manejo de Excepciones

Administración de Base de Datos

34

Respaldos y Restauración de Bases de Datos

Análisis de Datos Avanzados

35

Potenciando los Datos en la Nube: Data Science, Big Data, ML e AI

36

SQL para Análisis de Datos: Primeros pasos con Power BI

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Vistas Materializadas en SQL: Como optimizar tus consultas y reportes.

29/36
Recursos

¿Por qué son importantes las vistas en la transformación de datos?

Al abordar el análisis de datos, un paso crucial es la transformación, donde típicamente empleamos diversos recursos. Las vistas temporales, las tablas temporales, las vistas materializadas y los procedimientos almacenados son solo algunos de estos recursos esenciales. Estos recursos facilitan la transformación de datos como parte del proceso ETL (Extracción, Transformación y Carga). Además, las vistas nos ofrecen una ventaja significativa: limitan la cantidad de datos mostrada al usuario final, mejorando la eficiencia y rendimiento de nuestras consultas.

¿Cómo se crea una vista?

Crear una vista dentro de la sintaxis de consola es sencillo pero requiere atención a ciertos detalles. Utilizamos la palabra reservada CREATE VIEW, seguida del nombre deseado para la vista. Posteriormente, empleamos el término AS para especificar la consulta que configurará la vista.

CREATE VIEW vista_estudiantes AS
SELECT *
FROM estudiantes;

Este ejemplo básico selecciona todos los campos de la tabla "estudiantes". Aunque las vistas son conceptos distintos a las tablas, el resultado se encuentra en una sección llamada "vistas" al actualizarlas.

¿Cómo se optimiza una vista para mostrar solo datos necesarios?

Normalmente, el propósito principal de una vista no es mostrar todos los campos de una tabla, sino limitar los datos mostrados sólo a lo relevante para el usuario.

Por razones de seguridad, muchas veces es necesario restringir la información accesible para ciertos usuarios. Podemos lograrlo llamando específicamente los campos deseados. Por ejemplo, si queremos mostrar solo la clave primaria, el primer nombre y el apellido de las personas, se podría modificar así:

CREATE OR REPLACE VIEW vista_estudiantes_ligera AS
SELECT clave_primaria, primer_nombre, apellido
FROM estudiantes;

Podemos recrear o modificar una vista usando CREATE OR REPLACE, que no requiere la palabra reservada UPDATE ya que está destinada solo a la manipulación de datos en tablas.

¿Cómo se elimina una vista?

Si una vista ya no es necesaria o fue creada por error, eliminarla es simple usando DROP VIEW. Este comando elimina la vista de la base de datos de forma rápida y efectiva.

DROP VIEW vista_estudiantes_ligera;

El comando DROP es el mismo utilizado para la eliminación de tablas, añadiendo la palabra reservada VIEW para indicarle que aplicaremos la acción sobre una vista.

¿Cómo avanzar en la práctica de la creación de vistas?

Te invito a crear una vista usando otra tabla de tu base de datos y realizar una consulta más elaborada. Intenta aplicar lo que has aprendido, como los JOIN y condicionales. Comparte tu experiencia y tus consultas recreadas en los comentarios, ¡y hazme saber si tienes preguntas! La práctica es la clave para el dominio de la transformación de datos y cada intento te acerca más a la maestría en el manejo de bases de datos.

Aportes 19

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

REPLACE SE USA EN MYSQL PERO EN SQL SERVER ES ALTER VIEW
Casi no puedo salir de esta clase. Si están usando mysql, yo utilizo (SQLyog) la profesora esta usando (WorkBench). En mi caso el famoso: ```js CREATE OR REPLACE VIEW vw_school AS ``` NO FUNCIONABA. (Estoy usando XAMPP). Y al recargar con f5 (refresca la info de la DB) la VIEW nunca se reemplazaba entonces tuve que utilizar: ```js DROP VIEW IF EXISTS vw_school; RESET QUERY CACHE; ``` Supongo que es por que mi XAMPP obviamente en localhost NO puede estar escuchando los cambios constantemente o algo así pues ya había intentado algo similar Y al iniciar XAMPP al otro día los cambios se vieron aplicados. Ahora así queda mi ejemplo de VIEW para esta clase. (PD: aprendí mucho porque fallo mucho). ```js DROP VIEW IF EXISTS vw_school; RESET QUERY CACHE; CREATE OR REPLACE VIEW vw_school AS SELECT CONCAT(students.name_student, ' ', students.lastname_student) AS full_name, courses.name_course, courses.description_course, CONCAT(instructors.name_instructor, ' ', instructors.lastname_instructor) FROM students JOIN courses ON courses.course_id = students.course JOIN instructors ON instructors.instructor_id = courses.fk_instructor_id ORDER BY courses.course_id; ```
![](https://static.platzi.com/media/user_upload/VIEW-874c06e1-7231-4e2a-a11e-e1c586cc44c2.jpg)
Hay algo que tener en cuenta, todo el código está muy bien conocerlo; solo en el caso que quieras ser ingeniero de datos si debes saber hacerlo desde 0, si aspiras a ser analista de datos no es tan necesario, porque el ambiente de gestor de base de datos permite crear sin código las tablas, relaciones, procedimientos almacenados y vistas. Mi única recomendación si aspiras a ser analista de datos es que aprendas muy bien a hacer las consultas de datos y eso que en algunos casos no lo necesitarás pero está bien tenerlo como habilidad Saludos
Humildemente, mi aporte. ![](https://static.platzi.com/media/user_upload/image-7965a5df-e916-439d-9b3b-0efc25e88761.jpg)
les comparto como va mi consulta de la base de datos, donde hay una clase de mysql: `CREATE VIEW Students_In_MySQL AS` `SELECT S.STUDENTID, S.FIRSTNAME, S.LASTNAME, S.AGE, S.EMAIL, C.COURSENAME` `FROM STUDENTS S` `JOIN STUDENT_COURSE SC ON S.STUDENTID = SC.STUDENTID` `JOIN COURSES C ON SC.COURSEID = C.COURSEID` `WHERE C.COURSENAME = 'Bases de Datos MySQL' AND S.AGE > 21;`
Esta fue mi consulta para mostrar el nombre de los instructores que tienen un salario mayor a 1500.00 y que tengan menos de 28 años, su salario y el numero de cursos que imparte. `CREATE OR REPLACE VIEW VW_INSTRUCTORES AS` `SELECT firstname, lastname, salary, COUNT(coursename) AS numCourses ` `FROM courses ` `INNER JOIN instructors ON instructors.instructorid = courses.instructorid` `WHERE salary>1500 AND age<30 ;` ![](https://static.platzi.com/media/user_upload/image-dbc4de2e-d509-48b6-9f4f-596b97047039.jpg)
![](https://static.platzi.com/media/user_upload/upload-c0aab1fe-e823-46a4-9337-fc91c35afd92.png)
![](https://static.platzi.com/media/user_upload/upload-078fc8ee-b9be-46e9-b408-b087a3e52363.png) Vista creada a partir de la tabla INSTRUCTORS.
Yo hice una vista asociada a la tabla estudiantes donde muestro el nombre del curso y la cantidad total de estudiantes inscritos a ese curso. ![](https://static.platzi.com/media/user_upload/image-f8f8d23d-39df-405d-bc78-64732c7f6659.jpg)
Me salia un error al querer mostrar la tabla con un COUNT en SELECT, y es que se tenia que usar el GROUP BY para mostrarla pero usando todos los datos de no son COUNT si no, me seguia saliendo error. ![](https://static.platzi.com/media/user_upload/image-73ad8d06-0374-4e17-99a4-5bb68fd3c82d.jpg)
1 esta este codigo bien? 2 tiene el sistema de comentarios un formato mejor(no veo sql) para subir el codigo ? ```jsx select courseID,count(studentsId) as studentsEnroll case when count(studentsId)between 20 and 40 then 'ok' when count(studentsId) > 40 then 'popular' else 'unpopular' end as popilarity from students_courses where active=1 group by courseId having count (studentsId)> avg(studentsId) order by studentsEnrroll desc limit 40; ``` select courseID,count(studentsId) as studentsEnroll case when count(studentsId)between 20 and 40 then 'ok' when count(studentsId) > 40 then 'popular' else 'unpopular' end as popilarity from students\_courses where active=1 group by courseId having count (studentsId)> avg(studentsId) order by studentsEnrroll desc limit 40;
hola descubri algo interesante un alias no puede ser creado y utilizado en el mismo select. (ademas de otros errores ) como esta escrito en el siguiente codigo el studentsEnrrolled no se puede usar, puesto que primero se crocesa el having count y despues el select (eso entendi)```tsx create or replace view teams as select courseId,count(studentsId) as studentsEnroll from students_courses group by coursesId having count(*) case when studentsEnroll between 20 and 40 then 'popular' -- an alias cant' be created and use in the sam> when studentsEnroll > 40 then 'superpopular' else studentsEnroll < 20 then 'unpopular'end as popularity ```
CREATE OR REPLACE VIEW materias\_estudiantes AS SELECT     estudiantes.id,     estudiantes.nombre,     COUNT(cursos.id) AS cantidad\_cursosFROM estudiantesINNER JOIN cursos ON estudiantes.id = cursos.idGROUP BY estudiantes.id, estudiantes.nombre;
En SQL SERVER `ALTER VIEW vista_clientes AS` `SELECT nombre, telefono` `FROM clientes;` PARA MODIFICAR LA VISTA
Realicé una vista, donde podemos ver las vinculaciones (Tabla ENROLLMENTS) con los nombres de los cursos y de los estudiantes en una sola vista, utilizando dos INNER JOIN: `CREATE VIEW vw_st_cour AS SELECT E.enrollmentid, S.firstname AS StudentName, C.coursename AS CourseName FROM ENROLLMENTS E INNER JOIN STUDENTS S ON E.studentid = S.studentid INNER JOIN COURSES C ON E.courseid = C.courseid;`
CREATE VIEW StudentCoursesView AS SELECT Estudiantes.studentid, Estudiantes.firstname, Estudiantes.lastname, Cursos.courseid, Cursos.coursename FROM Students Estudiantes INNER JOIN Student\_Course Estudiantes\_Cursos ON Estudiantes.studentid = Estudiantes\_Cursos.studentid INNER JOIN Courses Cursos ON Estudiantes\_Cursos.courseid = Cursos.courseid;
Para crear una vista en SQL, podemos usar el siguiente ejemplo: ```sql CREATE VIEW vista_estudiantes AS SELECT id, nombre, apellido FROM estudiantes WHERE fecha_inscripcion > '2022-01-01'; ``` Este comando crea una vista llamada `vista_estudiantes` que solo muestra el ID, nombre y apellido de los estudiantes que se inscribieron después del 1 de enero de 2022. Usar vistas es útil porque permite simplificar consultas complejas y mejorar la seguridad al limitar la exposición de datos. Además, optimiza el rendimiento al evitar la carga de datos innecesarios.
El video aborda la manipulación avanzada de datos utilizando SQL, enfocándose en la generación de informes para decisiones empresariales. Los conceptos clave son: 1. **GROUP BY**: Agrupación de datos por columnas, permitiendo contar estudiantes por curso. 2. **HAVING**: Filtrado de resultados tras aplicar GROUP BY, útil para condiciones como estudiantes con más de dos cursos. 3. **Funciones de Agregación**: Uso de funciones como COUNT, SUM y AVG para obtener resúmenes, como el promedio de salarios. Ejemplo práctico: ```sql SELECT curso_id, COUNT(estudiante_id) FROM inscripciones GROUP BY curso_id; ``` Recuerda la mnemotécnica "GHEC" (Group, Having, Aggregation, Console) para los pasos clave.