0% encontró este documento útil (0 votos)
253 vistas9 páginas

Taller MySQL Workbench PDF

1) El documento describe un taller sobre MySQL Workbench donde se pide crear una base de datos llamada "blog" con tres tablas - "usuarios", "entradas" y "comentarios" - y realizar varias consultas SQL. 2) Se proporciona código SQL para crear la base de datos y las tablas con los campos especificados. 3) También se incluye código SQL para tres consultas solicitadas que unen las tres tablas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
253 vistas9 páginas

Taller MySQL Workbench PDF

1) El documento describe un taller sobre MySQL Workbench donde se pide crear una base de datos llamada "blog" con tres tablas - "usuarios", "entradas" y "comentarios" - y realizar varias consultas SQL. 2) Se proporciona código SQL para crear la base de datos y las tablas con los campos especificados. 3) También se incluye código SQL para tres consultas solicitadas que unen las tres tablas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Taller MySQL Workbench:

¡Reto para MySQL Workbench:

1. Crea una base de datos llamada "blog"


2. Crea tres tablas: "usuarios", "entradas" y "comentarios"
3. La tabla "usuarios" debe tener los siguientes campos:
• id (clave primaria)
• nombre
• email
4. La tabla "entradas" debe tener los siguientes campos:
• id (clave primaria)
• titulo
• contenido
• fecha
• autor (clave foránea a la tabla "usuarios")
5. La tabla "comentarios" debe tener los siguientes campos:
• id (clave primaria)
• texto
• fecha
• id_entrada (clave foránea a la tabla "entradas")
• id_usuario (clave foránea a la tabla "usuarios")
6. Inserta algunos registros en la tabla "usuarios"
7. Inserta algunos registros en la tabla "entradas", asegurándote de que cada entrada
tenga un autor asociado.
8. Inserta algunos registros en la tabla "comentarios", asegurándote de que cada
comentario tenga una entrada y un usuario asociado.
9. Crea una consulta que muestre el nombre del autor de cada entrada, junto con el título
y la fecha de la entrada, y el número total de comentarios que tiene la entrada.
10. Crea una consulta que muestre el nombre del autor de cada comentario, junto con el
texto del comentario y el título de la entrada a la que pertenece el comentario.
11. Crea una consulta que muestre el nombre de cada usuario que ha escrito al menos una
entrada y al menos un comentario, junto con el número total de entradas y
comentarios que ha escrito.
Código SQL para crear la base de datos "blog" y las tres tablas "usuarios", "entradas"
y "comentarios":

Este código SQL creará la base de datos "blog" y las tres tablas "usuarios", "entradas" y
"comentarios", con las columnas especificadas en el reto que te di anteriormente. Espero que
te sea útil.
-- Crear la base de datos "blog"
CREATE DATABASE blog;

-- Seleccionar la base de datos "blog"


USE blog;

-- Crear la tabla "usuarios"


CREATE TABLE usuarios (
id INT PRIMARY KEY,
nombre VARCHAR(50),
email VARCHAR(50)
);

-- Crear la tabla "entradas"


CREATE TABLE entradas (
id INT PRIMARY KEY,
titulo VARCHAR(100),
contenido TEXT,
fecha DATE,
autor INT,
FOREIGN KEY (autor) REFERENCES usuarios(id)
);

-- Crear la tabla "comentarios"


CREATE TABLE comentarios (
id INT PRIMARY KEY,
texto TEXT,
fecha DATE,
id_entrada INT,
id_usuario INT,
FOREIGN KEY (id_entrada) REFERENCES entradas(id),
FOREIGN KEY (id_usuario) REFERENCES usuarios(id)
);
Codigo de las consultas
¡Claro! Aquí tienes el código SQL para las tres consultas del reto que te di anteriormente:

1. Consulta que muestra el nombre del autor de cada entrada, junto con el título y la
fecha de la entrada, y el número total de comentarios que tiene la entrada.

SELECT u.nombre AS autor, e.titulo, e.fecha, COUNT(c.id) AS total_comentarios


FROM usuarios u
JOIN entradas e ON u.id = e.autor
LEFT JOIN comentarios c ON e.id = c.id_entrada
GROUP BY e.id;

SELECT u.nombre AS autor, c.texto, e.titulo


FROM usuarios u
JOIN comentarios c ON u.id = c.id_usuario
JOIN entradas e ON c.id_entrada = e.id;

SELECT u.nombre, COUNT(DISTINCT e.id) AS total_entradas, COUNT(DISTINCT c.id) AS


total_comentarios
FROM usuarios u
LEFT JOIN entradas e ON u.id = e.autor
LEFT JOIN comentarios c ON u.id = c.id_usuario
GROUP BY u.id
HAVING total_entradas > 0 AND total_comentarios > 0;

1. Consulta que muestra las fechas de cumpleaños de los usuarios en orden cronológico,
y resalta el cumpleaños más reciente con un mensaje de "Feliz Cumpleaños".
2. Consulta que muestra los usuarios que han escrito al menos dos entradas en el mismo
día, junto con el número de entradas y la fecha en la que fueron escritas.
3. Consulta que muestra los comentarios que contienen palabras prohibidas en una lista,
junto con el texto del comentario y el nombre del usuario que lo escribió.
4. Consulta que muestra los usuarios que han escrito una entrada pero no han escrito
ningún comentario, junto con el número total de entradas que han escrito.
5. Consulta que muestra los usuarios que han escrito una entrada con un título que
contiene alguna palabra de una lista, junto con el título de la entrada.
6. Consulta que muestra los usuarios que han escrito al menos una entrada pero no han
escrito ninguna entrada en los últimos 30 días, junto con el número total de entradas
que han escrito.
7. Consulta que muestra el título de la entrada que tiene el contenido más largo.
8. Consulta que muestra la fecha en que se escribieron la primera y la última entrada de
cada autor.
9. Consulta que muestra el número total de entradas escritas en cada mes, ordenado por
mes y año.
10. ….

Código Detallado Consulta 10.

SELECT e.titulo, u.nombre, COUNT(*) AS total_comentarios


FROM entradas e
JOIN usuarios u ON e.autor = u.id
JOIN comentarios c ON e.id = c.id_entrada
GROUP BY e.id
ORDER BY total_comentarios DESC;
• SELECT e.titulo, u.nombre, COUNT(*) AS total_comentarios: La consulta
selecciona tres columnas de las tablas entradas, usuarios y comentarios. Estas
columnas son el título de la entrada, el nombre del autor y el número total de
comentarios que se han escrito en cada entrada.
• FROM entradas e: La consulta comienza seleccionando datos de la tabla entradas, y le
da el alias de e.
• JOIN usuarios u ON e.autor = u.id: Luego la consulta une la tabla usuarios a la
tabla entradas utilizando la columna autor de la tabla entradas y la columna id de la
tabla usuarios.
• JOIN comentarios c ON e.id = c.id_entrada: Finalmente, la consulta une la tabla
comentarios a la tabla entradas utilizando la columna id_entrada de la tabla
comentarios y la columna id de la tabla entradas.
• GROUP BY e.id: La consulta agrupa los resultados por el identificador de la entrada,
para que pueda contar el número total de comentarios por entrada.
• ORDER BY total_comentarios DESC: La consulta ordena los resultados por el número
total de comentarios en orden descendente, de mayor a menor.

La consulta muestra el número de comentarios que se han escrito en cada entrada, junto con el
título de la entrada y el nombre del autor, ordenados por el número total de comentarios en
orden descendente.

No olvides Plantear en tus palabras la CONSULTA 10.


Código Detallado Consulta 9.
• SELECT AVG(DATEDIFF(c.fecha, e.fecha)) AS promedio_dias: La consulta selecciona
la diferencia de días entre la fecha del comentario y la fecha de la entrada utilizando la
función DATEDIFF. Luego, calcula el promedio de esas diferencias de días usando la
función AVG, y lo muestra en la columna promedio_dias.
• FROM comentarios c: La consulta comienza seleccionando datos de la tabla
comentarios, y le da el alias de c.
• JOIN entradas e ON c.id_entrada = e.id: Luego, la consulta une la tabla entradas
a la tabla comentarios utilizando la columna id_entrada de la tabla comentarios y la
columna id de la tabla entradas.

La consulta calcula el promedio de días que pasan entre la fecha de publicación de una entrada
y la fecha en que se escribe un comentario en esa entrada.

Función COUNT
La función COUNT en SQL se utiliza para contar el número de filas que cumplen con una
determinada condición en una tabla. En la consulta 10 que vimos anteriormente, la función
COUNT se utiliza para contar el número total de comentarios que se han escrito en cada entrada.

En particular, la consulta utiliza COUNT(*), lo que significa que se están contando todas las filas
que cumplen con la condición, sin importar el contenido de las columnas. En otras palabras, la
consulta simplemente está contando el número de filas en la tabla comentarios que están
relacionadas con cada entrada en la tabla entradas.

Luego, la consulta utiliza la cláusula GROUP BY para agrupar los resultados por el identificador
de cada entrada, lo que permite contar los comentarios de forma individual para cada entrada.

Análisis JOIN entradas e ON u.id = e.autor WHERE e.titulo LIKE '%palabra1%' OR


e.titulo LIKE '%palabra2%' OR e.titulo LIKE '%palabra3%';
La consulta utiliza la cláusula JOIN y la cláusula WHERE para recuperar datos de dos tablas
relacionadas, usuarios y entradas. Aquí está la explicación línea por línea:

• JOIN entradas e ON u.id = e.autor: Esta parte de la consulta une la tabla entradas
a la tabla usuarios, utilizando la columna autor de la tabla entradas y la columna id
de la tabla usuarios. Esto significa que sólo se seleccionarán las entradas cuyo autor
tenga una coincidencia en la tabla de usuarios.
• WHERE e.titulo LIKE '%palabra1%' OR e.titulo LIKE '%palabra2%' OR e.titulo
LIKE '%palabra3%': Esta parte de la consulta filtra los resultados por el título de la
entrada. La condición LIKE se utiliza para buscar entradas que contengan las palabras
clave palabra1, palabra2 o palabra3 en su título. El símbolo % se utiliza como
comodín para representar cualquier número de caracteres que puedan aparecer antes
o después de las palabras clave.

En resumen, la consulta recupera las entradas que contienen una o más de las palabras clave
especificadas en su título, y que están escritas por autores que aparecen en la tabla de
usuarios.

En estas instrucciones SELECT u.nombre, COUNT(*) AS total_entradas, fecha FROM usuarios u


JOIN entradas e ON u.id = e.autor GROUP BY u.id, fecha HAVING COUNT(*) > 1; da una
explicacion pero precisa y detalla para que la e. y la u.
En la consulta que mencionas, u y e son los alias que se utilizan para hacer referencia a las
tablas usuarios y entradas, respectivamente. Los alias se utilizan para simplificar la sintaxis de
la consulta, de modo que no sea necesario escribir el nombre completo de la tabla en cada
referencia de columna.

Aquí está una explicación detallada de cada línea de la consulta:

• SELECT u.nombre, COUNT(*) AS total_entradas, fecha: La consulta selecciona tres


columnas: el nombre del autor de la entrada ( u.nombre), el número total de entradas
escritas por ese autor ( COUNT(*)), y la fecha de cada entrada ( fecha).
• FROM usuarios u JOIN entradas e ON u.id = e.autor: La consulta une la tabla
usuarios (que tiene el alias u) a la tabla entradas (que tiene el alias e) utilizando la
columna id de la tabla usuarios y la columna autor de la tabla entradas.
• GROUP BY u.id, fecha: La consulta agrupa los resultados por el identificador del autor
(u.id) y la fecha de la entrada ( fecha). Esto significa que el número total de entradas se
contará por autor y por fecha.
• HAVING COUNT(*) > 1: La consulta filtra los resultados por el número total de entradas
por autor y por fecha. La cláusula HAVING se utiliza para filtrar los resultados después de
que se hayan agrupado. En este caso, la consulta seleccionará sólo aquellos autores
que tengan más de una entrada escrita en una fecha determinada.

La consulta utiliza alias para hacer referencia a las tablas usuarios y entradas, y agrupa los
resultados por autor y por fecha para contar el número total de entradas escritas por cada
autor en una fecha determinada. La cláusula HAVING se utiliza para filtrar los resultados por
aquellos autores que tengan más de una entrada en una fecha determinada.
8.

SELECT u.nombre, MIN(e.fecha) AS primera_entrada, MAX(e.fecha) AS ultima_entrada

FROM usuarios u

JOIN entradas e ON u.id = e.autor

GROUP BY u.id;

7.

SELECT titulo

FROM entradas

ORDER BY LENGTH(contenido) DESC

LIMIT 1;

6.

SELECT u.nombre, COUNT(*) AS total_entradas

FROM usuarios u

JOIN entradas e ON u.id = e.autor

WHERE e.fecha < DATE_SUB(NOW(), INTERVAL 30 DAY)

GROUP BY u.id;

5.

SELECT u.nombre, e.titulo

FROM usuarios u

JOIN entradas e ON u.id = e.autor

WHERE e.titulo LIKE '%palabra1%' OR e.titulo LIKE '%palabra2%' OR e.titulo LIKE '%palabra3%';
4.

SELECT u.nombre, COUNT(*) AS total_entradas

FROM usuarios u

JOIN entradas e ON u.id = e.autor

LEFT JOIN comentarios c ON e.id = c.id_entrada

WHERE c.id IS NULL

GROUP BY u.id;

3.

SELECT u.nombre, c.texto

FROM usuarios u

JOIN comentarios c ON u.id = c.id_usuario

WHERE c.texto LIKE '%prohibido1%' OR c.texto LIKE '%prohibido2%' OR c.texto LIKE


'%prohibido3%';

2.

SELECT u.nombre, COUNT(*) AS total_entradas, fecha

FROM usuarios u

JOIN entradas e ON u.id = e.autor

GROUP BY u.id, fecha

HAVING COUNT(*) > 1;


1.

SELECT fecha_nacimiento,

IF(DATE_FORMAT(fecha_nacimiento, '%m-%d') = DATE_FORMAT(NOW(), '%m-%d'),

'Feliz Cumpleaños', '') AS mensaje

FROM usuarios

ORDER BY fecha_nacimiento ASC;

También podría gustarte