bloque2:vistas
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
bloque2:vistas [2021/10/02 13:57] – [Ventajas e inconvenientes] fernando | bloque2:vistas [2024/09/16 15:37] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
- | ====== Índices | + | ====== Índices, Vistas |
===== Índices ===== | ===== Índices ===== | ||
Los índices se utilizan para obtener datos de una columna concreta de las tablas de una forma más rápida. Optimizan el rendimiento de las consultas '' | Los índices se utilizan para obtener datos de una columna concreta de las tablas de una forma más rápida. Optimizan el rendimiento de las consultas '' | ||
Línea 30: | Línea 30: | ||
Los índices se aplican a una columna en concreto, pudiendo haber distintas columnas con distintos índices en la misma tabla. Los tipos habituales de índice son: | Los índices se aplican a una columna en concreto, pudiendo haber distintas columnas con distintos índices en la misma tabla. Los tipos habituales de índice son: | ||
+ | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | ||
* '' | * '' | ||
+ | Además el motor '' | ||
==== Implementación ==== | ==== Implementación ==== | ||
Existen distintas formas de añadir índices a una tabla: | Existen distintas formas de añadir índices a una tabla: | ||
Línea 49: | Línea 50: | ||
-- Después de crear la tabla | -- Después de crear la tabla | ||
CREATE INDEX indice_autor ON libro(autor); | CREATE INDEX indice_autor ON libro(autor); | ||
+ | -- ó | ||
ALTER TABLE libro ADD INDEX [nombre_indice] (autor); | ALTER TABLE libro ADD INDEX [nombre_indice] (autor); | ||
Línea 67: | Línea 69: | ||
<code sql> | <code sql> | ||
DROP INDEX nombre_indice ON nombre tabla; | DROP INDEX nombre_indice ON nombre tabla; | ||
+ | -- ó | ||
ALTER TABLE nombre_tabla DROP INDEX nombre_indice; | ALTER TABLE nombre_tabla DROP INDEX nombre_indice; | ||
-- Para índices PRIMARY | -- Para índices PRIMARY | ||
DROP INDEX ' | DROP INDEX ' | ||
+ | -- ó | ||
ALTER TABLE nombre_tabla DROP PRIMARY KEY; | ALTER TABLE nombre_tabla DROP PRIMARY KEY; | ||
</ | </ | ||
Línea 82: | Línea 86: | ||
Cuando creamos una vista a partir de una consulta sobre una o más tablas, las futuras modificaciones en las tablas no se propagarán a la vista; si se añaden columnas a las tablas no se mostrarán en la vista, y si se eliminan columnas de las tablas que aparecían en la vista, la ejecucón dará un error. Funciona del mismo modo que funciona al consulta con la que se ha creado. | Cuando creamos una vista a partir de una consulta sobre una o más tablas, las futuras modificaciones en las tablas no se propagarán a la vista; si se añaden columnas a las tablas no se mostrarán en la vista, y si se eliminan columnas de las tablas que aparecían en la vista, la ejecucón dará un error. Funciona del mismo modo que funciona al consulta con la que se ha creado. | ||
- | Del midmo modo, ya que una vista depende de la estructura de las tablas de origen, no se pueden añadir índices a una vista. Sin embargo podemos crear vistas usando la clausula | + | Del midmo modo, ya que una vista depende de la estructura de las tablas de origen, no se pueden añadir índices a una vista. Sin embargo podemos crear vistas usando la cláusula |
====Ventajas==== | ====Ventajas==== | ||
Línea 90: | Línea 94: | ||
* Seguridad: podemos limitar el acceso a ciertas columnas con datos no autorizados a usuarios que deben consultar y procesar información de esas tablas. | * Seguridad: podemos limitar el acceso a ciertas columnas con datos no autorizados a usuarios que deben consultar y procesar información de esas tablas. | ||
* Mantiene la apariencia original: podemos modificar la estructura de las tablas que almacenan los datos sin que la estructura de la vista se vea afectada. | * Mantiene la apariencia original: podemos modificar la estructura de las tablas que almacenan los datos sin que la estructura de la vista se vea afectada. | ||
+ | * Sustituye a consultas sobre subconsultas en la cláusula '' | ||
Como hemos indicado, las vistas son una solución para ciertos aspectos por lo que no generan importantes desventajas. | Como hemos indicado, las vistas son una solución para ciertos aspectos por lo que no generan importantes desventajas. | ||
====Implementación==== | ====Implementación==== | ||
+ | |||
+ | ===Crear una vista === | ||
<code sql> | <code sql> | ||
Línea 99: | Línea 106: | ||
</ | </ | ||
- | ===Crear una vista === | ||
Veamos un ejemplo: | Veamos un ejemplo: | ||
Línea 112: | Línea 118: | ||
GROUP BY PP.id | GROUP BY PP.id | ||
</ | </ | ||
+ | |||
+ | === Uso de Vistas para resolver consultas complejas=== | ||
Si ahora suponemos que nos pidieran conocer el polideportivo o polideportivos que más pistas tiene, sólo tendríamos que realizar una consulta utilizando la vista creada anteriormente. | Si ahora suponemos que nos pidieran conocer el polideportivo o polideportivos que más pistas tiene, sólo tendríamos que realizar una consulta utilizando la vista creada anteriormente. | ||
Línea 122: | Línea 130: | ||
FROM pistas_por_polideportivos) | FROM pistas_por_polideportivos) | ||
</ | </ | ||
+ | |||
===Eliminar una vista=== | ===Eliminar una vista=== | ||
Nos permite eliminar una vista creada: | Nos permite eliminar una vista creada: | ||
Línea 130: | Línea 139: | ||
{{ youtube> | {{ youtube> | ||
\\ | \\ | ||
+ | |||
+ | ===== Administración de Usuarios ===== | ||
+ | |||
+ | Una de las funciones del SGBD es la de proporcionar seguridad en el acceso a los datos a través de mecanismos de control de acceso. | ||
+ | |||
+ | En SQL, y así lo hacen todos los SGBD relacionales, | ||
+ | |||
+ | Supongamos que somos los administradores de un SGBD MySQL y tenemos que proporcionar acceso a una Base de Datos para una aplicación // | ||
+ | |||
+ | <code sql> | ||
+ | -- Si no hemos creado la base de datos, podemos hacerlo ahora | ||
+ | CREATE DATABASE biblioteca; | ||
+ | |||
+ | -- Crea el usuario asignándole contraseña | ||
+ | CREATE USER ' | ||
+ | |||
+ | -- Indicando el host de conexion del usuario | ||
+ | -- Desde cualquier host (igual que si se omite) | ||
+ | CREATE USER ' | ||
+ | |||
+ | -- Usuario para conectarse localmente | ||
+ | CREATE USER ' | ||
+ | |||
+ | -- Usuario para conectarse remotamente | ||
+ | CREATE USER ' | ||
+ | |||
+ | -- Ver los usuarios | ||
+ | SELECT ' | ||
+ | SELECT * FROM mysql.user; | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Permisos y privilegios ==== | ||
+ | === Conceder privilegios sobre un objeto: GRANT === | ||
+ | |||
+ | Permite conceder privilegios sobre un objeto a un usuario de la Base de Datos. | ||
+ | <code sql> | ||
+ | GRANT < | ||
+ | ON < | ||
+ | TO < | ||
+ | [WITH GRANT OPTIONS] | ||
+ | </ | ||
+ | |||
+ | === Revocar privilegios sobre un objeto: REVOKE === | ||
+ | |||
+ | Permite eliminar el privilegio sobre un objeto a un usuario. | ||
+ | |||
+ | <code sql> | ||
+ | REVOKE < | ||
+ | ON < | ||
+ | FROM < | ||
+ | </ | ||
+ | |||
+ | === Tipos de permisos=== | ||
+ | |||
+ | ^Tipo^Función^ | ||
+ | |SELECT | ver las tablas| | ||
+ | |INDEX| crear o eliminar índices| | ||
+ | |CREATE| usar la sentencia create| | ||
+ | |DELETE| eliminar registros de una tabla| | ||
+ | |DROP|eliminar elementos de la base de datos| | ||
+ | |SHOW TABLES|permite ver las tablas de la base de datos| | ||
+ | |USAGE| permite la instrucción USE 'base de datos' | ||
+ | |||
+ | Ejemplos: | ||
+ | <code sql> | ||
+ | -- Uso sin permisos para acceder desde local | ||
+ | mysql> GRANT USAGE ON *.* TO ' | ||
+ | |||
+ | -- Uso sin permisos para acceder desde remoto | ||
+ | mysql> GRANT USAGE ON *.* TO ' | ||
+ | |||
+ | -- Conceder todos los privilegios sobre una base de datos en local | ||
+ | GRANT ALL PRIVILEGES ON `mibd`.* TO ' | ||
+ | |||
+ | -- Privilegios desde remoto | ||
+ | GRANT ALL PRIVILEGES ON `mibd`.* TO ' | ||
+ | |||
+ | -- Mostrar privilegios | ||
+ | mysql> SHOW GRANTS FOR ' | ||
+ | |||
+ | -- Eliminar privilegios | ||
+ | REVOKE ALL PRIVILEGES on *.* from ' | ||
+ | REVOKE USAGE on *.* from ' | ||
+ | |||
+ | -- Aplicar los cambios realizados | ||
+ | FLUSH PRIVILEGES; | ||
+ | |||
+ | -- Verificar permisos | ||
+ | mysql> SHOW GRANTS FOR ' | ||
+ | </ | ||
+ | |||
+ | {{ : | ||
+ | |||
---- | ---- | ||
(c) {{date> %Y}} Santiago Faci y Fernando Valdeón | (c) {{date> %Y}} Santiago Faci y Fernando Valdeón |
bloque2/vistas.1633183054.txt.gz · Última modificación: 2024/09/16 15:40 (editor externo)