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:48] – [Implementación] 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==== | ||
| + | Las vistas se usan principalmente con fines organizativos: | ||
| + | |||
| + | * Simplicidad: | ||
| + | * 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. | ||
| + | * 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. | ||
| - | ====Ventajas e inconvenientes==== | ||
| ====Implementación==== | ====Implementación==== | ||
| + | |||
| + | ===Crear una vista === | ||
| <code sql> | <code sql> | ||
| Línea 91: | Línea 106: | ||
| </ | </ | ||
| - | ===Crear una vista === | ||
| Veamos un ejemplo: | Veamos un ejemplo: | ||
| Línea 104: | 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 114: | 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 122: | 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.1633182523.txt.gz · Última modificación: 2024/09/16 15:40 (editor externo)