Crear Vistas y Gestionar Permisos de Usuario en MySQL: Práctica con la Base de Datos Jardinería
-Crear una vista llamada CuentaPedidosMadrid, que muestre los campos nombreCliente, nombreContacto y Número de Pedidos de todos los clientes de Madrid ordenados ascendentemente por nombre. Comprobar que se ha creado consultando el diccionario de datos.
create view cuentapedidosmadrid (numeropedidos, nombrecliente, nombrecontacto)
as select count(codigopedido), nombrecliente, nombrecontacto
from clientes natural join pedidos
where ciudad = 'madrid'
group by nombrecliente order by nombrecliente;
use information_schema;
select table_name from views where table_name = 'CuentaPedidosMadrid';-Crear un usuario user@localhost y otorgarle permisos de consulta sobre los campos NombreCliente y NumeroDePedidos de la vista CuentaPedidosMadrid y de consulta sobre la tabla Clientes. Comprobar que se han concedido los permisos consultando las tablas adecuadas de la base de datos mysql.
create user user@localhost identified by 'usu1';
grant select (NombreCliente, NumeroPedidos) on jardineria.CuentaPedidosMadrid to user@localhost;
grant select on jardineria.Clientes to user@localhost;
select * from mysql.tables_priv
where user = 'user' and host = 'localhost' with grant option;-Con el usuario user@localhost ejecuta una consulta que, utilizando la vista CuentaPedidosMadrid y la tabla Clientes, muestre el código postal y el teléfono de los 5 clientes de Madrid con más pedidos.
exit
mysql -u root -p user1
select NombreCliente, CodigoPostal, Telefono from
CuentaPedidosMadrid inner join Clientes
on CuentaPedidosMadrid.NombreCliente = Clientes.NombreCliente order by NumeroPedidos desc limit 5;Crear una vista llamada Top5Madrid que muestre la información anterior.
-Comprueba que se ha creado consultando el diccionario de datos.
user jardineria;
mysql -u root -p toor
create view Top5Madrid
as select NombreCliente, CodigoPostal, Telefono from
CuentaPedidosMadrid inner join Clientes
on CuentaPedidosMadrid.NombreCliente = Clientes.NombreCliente order by NumeroPedidos desc limit 5;
use information_schema;
select table_name from views
where table_name = 'Top5Madrid';