Administración de Sistemas Gestores de Base de Datos Tarea 2: Sentencias SQL Antonio Esteban López Pérez 2º ASIR SEMI
Antonio Esteban López Pérez 2º ASIR SEMI
Administración de Sistemas Gestores de Base de Datos Tarea 2: Sentencias SQL
Ejercicio 1: Creación de Vistas .............................................................. 2 Ejercicio 2: Creación de Usuarios .......................................................... 5 Ejercicio 3: Permisos de Usuario I .......................................................... 6 Ejercicio 4: Permisos de Usuario II ......................................................... 7 Ejercicio 5: Gestión de bloqueos I .......................................................... 8 Ejercicio 6: Gestión de bloqueos II ......................................................... 9 ANEXO: Creación previa de la BBDD ..................................................... 10
1!
Antonio Esteban López Pérez 2º ASIR SEMI
Ejercicio 1: Creación de Vistas Escribe la sentencia para crear dos vistas: (2 puntos). La primera afectará a las columnas: codigo, grupo y tutor de la tabla clases. Lo primero es poner en uso la BBDD baloncesto, luego vemos el contenido de la tabla clases. Finalmente creamos la consulta de creación de vista: create view vista_uno as select código, grupo, nombre_tutor from clases;
La segunda tomará las columnas: nombre, apellido y tantos_marcados de jugadores, nombre_tutor y puntuación de clases, nombre de puestos. En este caso, la tabla Jugadores se relaciona con clase por medio del campo CLASE y con puesto por el campo PUESTO. También debemos tener en cuenta que, al existir nombres iguales en las tres tablas debemos crear alias en la consulta para referirnos correctamente al campo que queremos seleccionar:
2!
Antonio Esteban López Pérez 2º ASIR SEMI
Al ejecutar la consulta obtenemos los 28 jugadores con l descripción de su puesto, su tutor, etc.
3!
Antonio Esteban López Pérez 2º ASIR SEMI
Ahora podemos crear la vista en base a la consulta previa, además debemos tener en cuenta que hay que crear un alias para el nombre del puesto con el comando AS: create view vista_dos as select j.nombre, j.apellido, j.tantos_marcados, c.nombre_tutor, c.puntuacion, p.nombre as nombre_puesto from where
jugadores j, clases c, puestos p j.clase = c.codigo and j.puesto = p.codigo;
4!
Antonio Esteban López Pérez 2º ASIR SEMI
Ejercicio 2: Creación de Usuarios Escribe la sentencia para crear dos usuarios, asgbd01 y asgbd02, el primero con contraseña, igual a su nombre de usuario, y el otro sin contraseña. (2 puntos). Crear usuarios sin especificar nada más es muy sencillo, son sentencias SQL muy simples: create user asgdb01 identified by ‘asgbd01’ create user asgbd02
5!
Antonio Esteban López Pérez 2º ASIR SEMI
Ejercicio 3: Permisos de Usuario I Escribe las sentencias necesarias para darle al usuario asgbd01 permisos para acceder desde el servidor y cualquier otro puesto. Desde ambos tendrá autorización sobre todos los elementos de la base de datos, pero solo podrá otorgar permisos desde el servidor. (2 puntos). Mediante la sentencia GRANT modificamos los permisos de acceso. grant all on Baloncesto.* to asgbd01@’%’; grant all on Baloncesto.* to asgbd01@’localhost’ with grant option;
Previamente debemos crear el usuario en localhost para otorgarle permisos sólo para el servidor:
6!
Antonio Esteban López Pérez 2º ASIR SEMI
Ejercicio 4: Permisos de Usuario II Escribe la sentencia para dar a asgbd02 permisos para acceder desde cualquier puesto excepto el servidor y que solo pueda realizar consultas, inserciones, modificaciones y borrados sobre la base de datos Baloncesto. (2 puntos). Creamos el usuario en localhost (el servidor), le otrogamos permisos y luego se los quietamos SOLO para el servidor: create user ‘asgbd02’@’localhost’; grant select, insert, update, delete on Baloncesto.* to ‘asgbd02’@’%’; revoke all on Baloncesto.* to ‘asgbd02’@’localhost’; En este caso no es necesaria la sentencia REVOKE puesto que NO HEMOS OTORGADO PERMISOS al usuario asgbd02 en localhost (son dos usuarios distintos)
7!
Antonio Esteban López Pérez 2º ASIR SEMI
Ejercicio 5: Gestión de bloqueos I ¿Cómo bloqueas la tabla jugadores para lectura y escritura a la vez? (1 punto). Con la sentencia LOCK TABLE: lock table jugadores read, jugadores as jugadoreswr write;
Se crea un alias porque no se pueden llamar igual ambas tablas:
8!
Antonio Esteban López Pérez 2º ASIR SEMI
Ejercicio 6: Gestión de bloqueos II Escribe una SELECT que bloquee al jugador “TITTO LOPEZ” en su ejecución. (1 punto). Usamos la clausula lock in share mode: SELECT * FROM jugadores WHERE nombre LIKE 'TITTO' AND apellido LIKE 'LOPEZ' LOCK IN SHARE MODE;
9!
Antonio Esteban López Pérez 2º ASIR SEMI
ANEXO: Creación previa de la BBDD Previamente se ha creado la BBDD usando el fichero en texto plano con las sentencias SQL que generaban la BBDD:
En el workbench podemos ver las tablas y la BBDD creada
10 !