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/03 11:49] – [Funcionamiento] 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 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 clausula | + | * 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. | ||
Línea 114: | 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 124: | 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 132: | 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.1633261750.txt.gz · Última modificación: 2024/09/16 15:40 (editor externo)