Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
67 vistas7 páginas

UD7 Practicas

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 7

2022

Bases de datos

Fecha última revisión:


11/03/2022

JCCA

[Unidad 7
Prácticas]

DML - DCL
Unidad 7: Prácticas Bases de datos

Sumario
Práctica 1. Gestión de empleados........................................................................................................3
Práctica 2. Transacciones......................................................................................................................4
Práctica 3. Usuarios y privilegios..........................................................................................................6

2
Unidad 7: Prácticas Bases de datos

Nombre de las bases de datos: pZ_ud7_pX (donde Z es el número de puesto y X el número de actividad solucionada).
Ejemplo: Rosa está en el puesto 61 y crea la base de datos de la práctica 2, entonces el nombre de la base de datos
será: p61_ud7_p2

Renombrar el archivo suministrado por el profesor, realizar los cambios necesarios en el código y ejecutar el spript.

Nombre de los archivos:


• Archivo de creación de la BD: será el mismo que el nombre dado a las bases de datos.
• Archivo de solución de práctica: mismo que el de la BD pero terminado en "s".

Práctica 1. Gestión de empleados


Base de datos original: bd_ud7_p1.

1. Inserta un nuevo departamento indicando su código, nombre y presupuesto.

2. Inserta un nuevo departamento indicando su nombre y presupuesto.

3. Inserta un nuevo departamento indicando su código, nombre, presupuesto y gastos.

4. Inserta un nuevo empleado asociado a uno de los nuevos departamentos. La sentencia de


inserción debe incluir: código, nif, nombre, apellido1, apellido2 y codigo_departamento.

5. Inserta un nuevo empleado asociado a uno de los nuevos departamentos. La sentencia de


inserción debe incluir: nif, nombre, apellido1, apellido2 y codigo_departamento.

6. Crea una nueva tabla con el nombre departamento_backup que tenga las mismas columnas
que la tabla departamento. Una vez creada copia todos las filas de tabla departamento en
departamento_backup.

7. Elimina el departamento Proyectos. ¿Es posible eliminarlo? Si no fuese posible, ¿qué


cambios debería realizar para que fuese posible borrarlo? El modo safe updates (Edit –>
Preferences –> SQL Editor –> Safe updates) está activo y no se puede cambiar.

8. Elimina el departamento Desarrollo. ¿Es posible eliminarlo? Si no fuese posible, ¿qué


cambios debería realizar para que fuese posible borrarlo?

9. Actualiza el código del departamento Recursos Humanos y asígnale el valor 30. ¿Es posible
actualizarlo? Si no fuese posible, ¿qué cambios debería realizar para que fuese actualizarlo?

10. Actualiza el código del departamento Publicidad y asígnale el valor 40. ¿Es posible
actualizarlo? Si no fuese posible, ¿qué cambios debería realizar para que fuese actualizarlo?.
Hay que suponer que no tenemos permisos de modificación de la estructura de tabla.

11. Actualiza el presupuesto de los departamentos sumándole 50000 € al valor del presupuesto
actual, solamente a aquellos departamentos que tienen un presupuesto menor que 20000€.

12. Realiza una transacción que elimine todas los empleados que no tienen un departamento
asociado.

3
Unidad 7: Prácticas Bases de datos

Práctica 2. Transacciones
Base de datos original: bd_ud7_p2

1. Ejecuta las siguientes instrucciones del archivo bd_ud7_p2.sql (recuerda previamente


cambiar el nombre de la base de datos y renombrar el archivo)

2. ¿Qué devolverá esta consulta?


SELECT *
FROM Tproducto;

3. Vamos a intentar deshacer la transacción actual


ROLLBACK;

4. ¿Qué devolverá esta consulta? Justifique su respuesta.


SELECT *
FROM Tproducto;

5. Ejecutamos la siguiente transacción


START TRANSACTION;
INSERT INTO Tproducto (pkid, cnombre) VALUES (4, 'Cuarto');
SELECT * FROM Tproducto;
ROLLBACK;

6. ¿Qué devolverá esta consulta? Justifique su respuesta.


SELECT * FROM Tproducto;

7. Ejecutamos la siguiente transacción


INSERT INTO Tproducto (pkid, cnombre) VALUES (5, 'Quinto');
ROLLBACK;

8. ¿Qué devolverá esta consulta? Justifique su respuesta.


SELECT * FROM Tproducto;

9. Desactivamos el modo AUTOCOMMIT y borramos el contenido de la tabla


SET AUTOCOMMIT = 0;
SELECT @@AUTOCOMMIT;
DELETE FROM Tproducto WHERE pkid > 0;

10. Comprobamos que la tabla esta vacía


SELECT * FROM Tproducto;

4
Unidad 7: Prácticas Bases de datos

11. Insertamos dos filas nuevas


INSERT INTO Tproducto (pkid, cnombre) VALUES (6, 'Sexto');
INSERT INTO Tproducto (pkid, cnombre) VALUES (7, 'Séptimo');
SELECT * FROM Tproducto;

12. Hacemos un ROLLBACK


ROLLBACK;

13. ¿Qué devolverá esta consulta? Justifique su respuesta.


SELECT * FROM Tproducto;

14. Ejecutamos la siguiente transacción


SET AUTOCOMMIT = 0;
START TRANSACTION;
CREATE TABLE Tfabricante (pkid INT UNSIGNED);
INSERT INTO Tfabricante (pkid) VALUES (1);
SELECT * FROM Tfabricante;
COMMIT;

15. ¿Qué devolverá esta consulta? Justifique su respuesta.


SELECT * FROM Tfabricante;

5
Unidad 7: Prácticas Bases de datos

Práctica 3. Usuarios y privilegios


Base de datos de trabajo (local): jardinería

Nota: la clave para todos los usuarios, salvo que se indique lo contrario será: alumno

Realiza las siguientes operaciones y almacena los comandos y los resultados en un único archivo
asociado a esta práctica:
1. Crea un usuario llamado paco@localhost con permisos de solo conexión y comprueba que
se pueda conectar.

2. Crea un usuario llamado juan@localhost con permisos de solo conexión y comprueba que
se pueda conectar.

3. Otorga al usuario paco@localhost permisos de select en la tabla jardineria.Clientes y


comprueba que se pueda consultar la tabla.

4. Otorga al usuario juan@localhost permisos de select, insert y update en las tablas de la


base de datos jardinería con opción GRANT.

5. Conéctate con el usuario juan y otorga permisos a paco de selección en la tabla


jardineria.Empleados.

6. Quítale ahora los permisos a paco de selección sobre la tabla jardineria.Clientes.

7. Conéctate con root y elimina todos los permisos que has concedido a Paco y Juan.

8. Otorga a juan los permisos de SELECT sobre las columnas CodigoOıcina y Ciudad de la tabla
Oıcinas de la base de datos jardineria.

9. Conéctate con juan y ejecuta la query: SELECT * from jardineria.Oficinas ¿Qué sucede?.

10. Borra el usuario paco@localhost.

11. Crea un nuevo usuario llamado usuario@direccion_ip donde direccion_ip es una máquina
de un compañero tuyo y usuario su nombre.

12. Otórgale permisos de selección en todas las tablas de la base de datos jardineria. Ten
cuidado, es posible que tu servidor solo permita conexiones desde el ordenador local, para
permitir conexiones remotas debes comentar la linea bind-adress de tu fichero my.cnf que
impide conexiones desde otros sitios que no sea el especificado (127.0.0.1). Asegúrate de
reiniciar el servidor.

13. Pide a tu compañero que se conecte desde su máquina y que averigüe qué permisos le has
otorgado. El a ti te pedirá lo mismo, es decir, que te conectes a su máquina, indica qué
instrucción sql ejecutas para conocer los permisos que tienes.

6
Unidad 7: Prácticas Bases de datos

14. Revócale los permisos concedidos al usuario usuario@direccion_ip.

15. Concédele ahora permisos de creación de tablas en una nueva base de datos que has
creado.

16. Solicítale que se conecte y que pruebe a crear una tabla. ¿Puede consular la información?

17. Borra ahora el usuario usuario@direccion_ip.

18. Con la bbdd mysql consulta qué privilegios tiene el usuario juan@localhost a nivel de
servidor, a nivel de base de datos, a nivel de tablas y a nivel de columnas. Utiliza el
comando show grants for usuario.

También podría gustarte