0% encontró este documento útil (0 votos)
28 vistas22 páginas

Entrega Practica MySQL

Este documento describe un ejercicio de prácticas sobre SQL para consultar y modificar una base de datos. El objetivo es explorar y modificar la estructura de una base de datos de ejemplo utilizando lenguaje SQL. Se pide realizar una serie de consultas SQL y modificaciones como añadir tablas y campos. El ejercicio se evaluará en base al fichero SQL generado con las consultas y modificaciones realizadas.
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
28 vistas22 páginas

Entrega Practica MySQL

Este documento describe un ejercicio de prácticas sobre SQL para consultar y modificar una base de datos. El objetivo es explorar y modificar la estructura de una base de datos de ejemplo utilizando lenguaje SQL. Se pide realizar una serie de consultas SQL y modificaciones como añadir tablas y campos. El ejercicio se evaluará en base al fichero SQL generado con las consultas y modificaciones realizadas.
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 DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

info@inesdi.

com
www.inesdi.com
902.501.603

ASIGNATURA
Arquitectura,
modelado y bases de
datos

Ejercicio Semana 3

1
Descripción general de la actividad

Esta actividad consiste en realizar una serie de operaciones utilizando el lenguaje


SQL tanto para consultar datos como para crear estructura de datos.

Objetivos

Objetivos

 Entender un modelo de datos, sus estructuras y relaciones


 Realizar consultas sobre el modelo de datos.
 Crear estructuras de datos nuevas

Recursos necesarios

Para esta actividad tienes que contar con:

- MySQL Server instalado

- Workbench instalado

- Base de datos de ejemplo test-db_master instalada


Estructura y formato de la actividad

Guardar en un fichero con nombre Consultas-sql-<tu nombre>.sql todas las


consultas SQL resultantes.

Por ejemplo, en mi caso debería generar el archivo “Consultas-sql-


LeandroTubia.sql” y dentro de éste, las consultas SQL de los puntos 1.a, 1.b,
..2.a etc.
Además antes de cada consulta sql, colorar un mensaje (entre símbolos /* y
*/) describiendo el número de ejercicio o el enunciado de este. Por ejemplo:

Comencemos el ejercicio:

1) Exploremos los datos del modelo de datos:

a. Listar Nombres, apellidos y fecha de nacimiento de todos


los empleados que trabajan actualmente en el
departamento “Customer Service”.
i. Tip 1: buscar primero en qué tablas se encuentran los atributos que
se piden o los conceptos que se enumeran:
1. Nombres, Apellido y fecha de nacimiento saldrán de la tabla
Employees
2. La relación de empleados que trabajan en un
departamento saldrá de la tabla dept_emp.

3. El nombre del departamento saldrá de la tabla Departments.

ii. Tip 2: entender cómo se relacionan las tablas que he identificado


anteriormente:
1. El campo en común entre employees y dept_emp es el campo
emp_no.
2. El campo en común entre Departments y dept_emp es el campo
dept_no.
iii. Tip 3: una vez que he entendido el tip2, decidir qué tipo de relación
debería usar (left join, inner join, right join, full outer join, etc) para
relacionar las tablas que necesito.
1. En este caso debería usar Inner Join porque necesito la
intersección de ambas tablas, es decir todos los empleados
de Employees que existan también en Dept_emp
2. También usaremos Inner Join para traernos la descripción del
departamento.
iv. Tip 4: identificar si se necesitan filtros:
1. En este caso sí porque necesito filtrar por el
departamento Customer Service.
v. Tip 4: por último, escribir la consulta SQL.:
b. Enumerar los nombres de departamentos que no existan en
dept_emp.

Todos los departamentos de la tabla departments existen en la tabla


dept_emp

c. Enumerar los códigos de departamentos que existan en dept_emp


pero no en la tabla departments.

Todos los departamentos de la tabla dept_emp existen en la tabla


departments
d. Enumerar los nombres de departamentos que contengan al menos
un empleado con el título de “Senior Engineer”

e. Enumerar los nombres de departamentos que contengan al menos


un empleado vigente con el título de “Senior Engineer”
f. Suma de todos los salarios vigentes.

g. Los nombres y apellidos de los empleados ordenados de forma


descendente por el salario vigente.
h. Los nombres de los departamentos ordenados de forma
ascendente por la suma de todos sus salarios vigentes de sus
empleados en activo.

i. Los nombres de los departamentos junto con el nombre de


su manager actual.
2) Ahora vamos a crear una tabla nueva que llamaremos title_master y
que será la tabla maestra en donde se enumeren todos los posibles
títulos (puestos) y que sumaremos al modelo existente. Para rellenar
datos en dicha tabla vamos a usar una sentencia de inserción.

a. Crear una tabla llamada title_master con un campo llamado title de


tipo varchar(50).

Nota: No se permite crear la tabla sin una llave primaria

b. Insertar registros en la nueva tabla title_master a partir de los datos


de la tabla titles usando la siguiente sentencia SQL:
c. Listar todos los registros de la tabla title_master. ¿cuántos registros
ves? Observa si hay filas repetidas.

Si hay filas repetidas

d. Como vamos a crear la tabla nuevamente, elimina la tabla


title_master.
e. Crear nuevamente la tabla title_master con un campo llamado
title de tipo varchar(50), pero esta vez el tampo title tendrá una
clave primaria (primary key)
f. Insertar registros en la nueva tabla title_master a partir de los datos
de la tabla titles usando la siguiente sentencia SQL:

g. ¿Has podido ver qué tipo de error ha provocado la sentencia


anterior? (apúntalo en el script que entregues como resultado)

h. Insertar registros en la nueva tabla title_master a partir de los datos


de la tabla titles usando la siguiente sentencia SQL, pero en esta
ocasión vamos a insertar valores únicos (sin duplicados)
i. Listar todos los registros de la tabla title_master.

j. Volver a ejecutar la siguiente sentencia de inserción. Verás


que vuelve a salir el error del punto g), ya que estamos
tratando de insertar filas que ya existían y la clave primaria lo
impide.

k. Vamos a añadir un campo llamado bonus a la tabla title_master, y


para ello usaremos una sentencia que permite añadir campos sin
necesidad de destruir la tabla y volver a crearla. Para ello usaremos
la siguiente sentencia:
l. Listar todos los registros de la tabla title_master. Veras el nuevo
campo, pero aún falta asignarle algún valor.

m. Asignar un bonus de un 5% a la posición de “Assistant


Engineer” usando la siguiente instrucción:
n. Listar todos los registros de la tabla title_master. Veras el bonus de
Assistant Engineer actualizado a 5.

o. Asignar un bonus de un 10% a la posición de “Engineer”.

p. Asignar un bonus de un 20% a la posición de “Manager”.

q. Asignar un bonus de un 15% a la posición de “Senior Engineer”.

r. Asignar un bonus de un 15% a la posición de “Senior Staff”.

s. Asignar un bonus de un 5% a la posición de “Staff”.

t. Asignar un bonus de un 10% a la posición de “Technique Leader”.


u. Listar todos los registros de la tabla title_master. Te debería salir el
siguiente resultado:
v. Ahora vamos a insertar un registro en la tabla titles en la que el title
no exista en la tabla que hemos creado title_master. Con ello
vamos a crear una inconsistencia en los datos insertando el title
CEO. Vamos a usar la siguiente sentencia SQL:

w. Ahora enumeramos todos los titles en la tabla titles que no


existan en la tabla title_master. Vamos a usar la siguiente
sentencia SQL para identificar esta inconsistencia:
x. Para evitar este tipo de inconsistencias podemos crear una clave
foránea, que nos permitirá evitar que se creen registros en una tabla
A, que no existan en la tabla B. Ejecutaremos las siguientes
sentencias. La primera elimina el registro que habíamos creado para
poder crear la clave foránea, y al segundo comando crea la clave
foránea:
y. Ahora enumeramos todos los titles en la tabla titles que no
existan en la tabla title_master y verás que ya no hay ninguno.

z. ESTE PUNTO ES OPCIONAL. Enumerar el coste total de los


salarios vigentes por nombre de departamento. El coste total es el
salario vigente más el porcentaje de bonus correspondiente al title.
Ordenarlo de mayor a menor suma.
Criterios de evaluación o rúbrica de evaluación

Este ejercicio se evaluará a través de la ejecución correcta del contenido de los


siguientes ficheros:

1- Consultas-sql-<tu nombre>.sql

Recursos

- MySQL Server
- Workbench
- Base de datos de ejemplo test-db_master

Bibliografía

Gilfillan, I. (2003). La Biblia de MySQL. Editorial Anaya Multimedia. España

ISBN: 9788441515581
[email protected]
www.inesdi.com
902.501.603

10

También podría gustarte