Está en la página 1de 10

UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO

Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
SESIÓN SEMANAL DE CLASES

REGISTRO Y MANIPULACIÓN DE LOS OBJETOS DE UNA BASE DE


DATOS CON MYSQL
En la presente sesión hablaremos del registro y manipulación de los objetos de una base
de datos con MySQL.

I. VISTAS

Podemos definirlas como tablas virtuales que son creadas o generadas a partir de las
tablas de la base de datos y con el uso del T_SQL, aunque los DBMS, también nos
dan la posibilidad de implementarlas mediante entornos gráficos y con el uso de
asistentes. En realidad, la implementación de las vistas surge por la necesidad de
contar con estructuras que permitan visualizar los datos de una forma diferente a
como están almacenadas en las tablas, las mismas que por razones de normalización
tienen que ser fraccionadas para mantener la integridad de los datos, pero cuando se
quiere presentar la información al usuario se deben juntar, para que este tenga una
mejor apreciación de la información.

Las vistas en MySQL (VIEWS) son tablas virtuales. Es decir, tablas que no
guardan ningún dato propiamente dentro de ellas. Solo muestran los datos que están
almacenados en otras tablas (que sí son reales). Siendo así, crear vistas en MySQL
significa mostrar información de una fuente de origen sin necesidad de mostrar ni
exponer a la fuente en sí. En lenguaje técnico, las VIEWS no son más que
SELECT Queries.

Algunas de las ventajas de MySQL y su opción de crear vistas son:


• Control de accesos: de una tabla real, se puede escoger qué información
específicamente se desea compartir con otros usuarios. De este modo, ellos no
tendrán acceso al resto de los datos de la tabla, solo a las VIEWS.
• Mejora del rendimiento: se pueden crear queries (consultas) a partir de vistas
que han sido extraídas de SELECT complejas. Esto evita tener que
ejecutar queries
MSc. Ing. Wilfredo M. Trejo Flores 1
UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
• Pruebas seguras: las vistas ofrecen un entorno de tablas de prueba para que los
desarrolladores no afecten la información real.
• Reusabilidad de consultas: gracias a las vistas, no se deben crear consultas
complejas que requieran uniones de manera repetida.
• Mantenimiento de la integridad: al crear aplicaciones y usar las VIEWS en vez
de las tablas reales se garantiza que dichas aplicaciones no se rompan cuando se
realicen cambios en la estructura de la base de datos.

Algunos recursos de información técnica para crear vistas en MySQL en su versión


más reciente son:
• Uso de las sentencias CREATE VIEW y OR REPLACE para crear vistas o
reemplazar una existente.

• Uso de la sentencia SHOW CREATE VIEW para crear la vista nombrada.

• Restricciones sobre las VIEWS.


El número máximo de tablas a las que se puede hacer referencia en la
definición de una vista es 61. No es posible crear un índice en una vista.

MSc. Ing. Wilfredo M. Trejo Flores 2


UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14

Crear vistas en MySQL es un método que ofrece seguridad y alto rendimiento


en todo tipo de desarrollo basado en este motor de base de datos. Su
implementación técnica es sencilla. Sin embargo, requiere de personal
capacitado tanto para la creación de las VIEWS como para el desarrollo en conjunto.

Sintaxis general:
Create View Nombre_Vista
As
Consulta del tipo Select

Para crear una vista disponemos de la orden:


CREATE VIEW nombrevista AS consulta

Una vista es un objeto persistente, por lo tanto, para eliminarla del catálogo, hay que
ejecutar:
DROP VIEW nombrevista

También se puede consultar la definición de una vista ya definida (aunque esto ya es


particular de MySQL, en otros gestores tienen sus propios métodos):
SHOW CREATE VIEW nombrevista

II. PROCEDIMIENTOS ALMACENADOS

Vienen a ser un conjunto de instrucciones que se guarda en un archivo generalmente


de texto, en el cual se puede realizar diferentes cálculos, búsquedas y visualizaciones
de la información que esta almacenada en la base de datos. Nos permiten generar y
visualizar la información de una manera más dinámica en comparación con otras
formas y además cuando se implementan aplicaciones, nos facilitan la separación de
la lógica de la aplicación en diferentes capas.

Un procedimiento almacenado MySQL no es más que una porción de código que


puedes guardar y reutilizar. Es útil cuando repites la misma tarea repetidas veces,
MSc. Ing. Wilfredo M. Trejo Flores 3
UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
siendo un buen método para encapsular el código. Al igual que ocurre con las
funciones, también puede aceptar datos como parámetros, de modo que actúa en base
a éstos. Para poder crear un procedimiento almacenado es necesario que tengas
permisos INSERT y DELETE sobre la base de datos.

Sintaxis general:
DELIMITER//
CREATE PROCEDURE NOMBREPROCEDIMIENTO ([Argumentos])
Begin
Instrucciones;
End//
DELIMITER;

Luego de creado el procedimiento quedara formando parte de la base de datos como


un objeto más de la misma. Posteriormente podremos utilizar el procedimiento para
lo cual lo llamaremos siguiendo la siguiente sintaxis.
Call nombreprocedimiento([Valores de los argumentos]);

Parámetros
Los parámetros se definen separados por una coma. Los parámetros de los
procedimientos almacenados de MySQL pueden ser de tres tipos:
• IN: Es el tipo de parámetro que se usa por defecto. La aplicación o código que
invoque al procedimiento tendrá que pasar un argumento para este parámetro. El
procedimiento trabajará con una copia de su valor, teniendo el parámetro su valor
original al terminar la ejecución del procedimiento.
• OUT: El valor de este parámetro pude ser cambiado en el procedimiento, y
además su valor modificado será enviado de vuelta al código o programa que
invoca el procedimiento.
• INOUT: Es una mezcla de los dos conceptos anteriores. La aplicación o código
que invoca al procedimiento puede pasarle un valor a éste, devolviendo el valor
modificado al terminar la ejecución.

MSc. Ing. Wilfredo M. Trejo Flores 4


UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
Procedimientos sin parámetros de entrada: Son aquellos procedimientos que entre
los paréntesis no llevan ningún argumento.

Procedimientos con parámetros de entrada: Para enviarle un argumento de


entrada a un procedimiento debemos anteponerle al nombre del argumento la palabra
reservada IN; pero si no le ponemos nada MySQL lo interpreta por defecto como un
parámetro de entrada.

MSc. Ing. Wilfredo M. Trejo Flores 5


UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14

Ventajas

MSc. Ing. Wilfredo M. Trejo Flores 6


UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
Al reducir la carga en las capas superiores a la aplicación, se reduce el tráfico de
red y, si el uso de los procedimientos almacenados es el correcto, puede mejorar el
rendimiento.
Al encapsular las operaciones en el propio código SQL, nos aseguramos de que el
acceso a los datos es consistente entre todas las aplicaciones que hagan uso de ellos.
En cuanto a seguridad, es posible limitar los permisos de acceso de usuario a los
procedimientos almacenados y no a las tablas directamente. De este modo evitamos
problemas derivados de una aplicación mal programada que haga un mal uso de las
tablas.

Inconveniente
Un posible problema puede ocurrir con las migraciones. No todos los sistemas
gestores de bases de datos usan los procedimientos del mismo modo, por lo que se
reduce la portabilidad del código.

III. FUNCIONES
Son similares a los procedimientos almacenados con la diferencia de que estas
siempre retornan un valor y al momento de pasar los parámetros, no se necesita
indicarles si es del tipo input u output, esta característica es propia del MySQL.

Sintaxis General:
Delimiter//
Create function Nombre_funcion([Argumentos]) as Returns TipoDatoDevueve
Begin
Instrucciones;
Return valor_devolver;
End//
Delimiter;

Una función en MySQL es una rutina creada para tomar unos parámetros, procesarlos
y retornar en una salida.
Se diferencian de los procedimientos en las siguientes características:

MSc. Ing. Wilfredo M. Trejo Flores 7


UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
- Solamente pueden tener parámetros de entrada IN y no parámetros de salida
OUT o INOUT.
- Deben retornar en un valor con algún tipo de dato definido.
- Solo retornan un valor individual, no un conjunto de registros.

MySQL viene incluido con una serie de funciones integradas. Las funciones
integradas son simplemente funciones que ya vienen implementadas en el servidor
MySQL. Estas funciones nos permiten realizar diferentes tipos de manipulaciones en
los datos. Las funciones integradas se pueden clasificar básicamente en las siguientes
categorías más utilizadas.
➢ Funciones de cadenas – operan en tipos de datos de cadena.
➢ Funciones numéricas: operan en tipos de datos numéricos.
➢ Funciones de fecha: operan en tipos de datos de fecha.
➢ Funciones agregadas: operan en todos los tipos de datos anteriores y produzca
conjuntos de resultados resumidos.
➢ Otras funciones: MySQL también admite otros tipos de funciones
incorporadas.

IV. TRIGGERS
Son objetos relacionados con tablas y almacenados en la base de datos, que se
ejecutan o se muestran cuando sucede un evento sobre sus tablas asociadas.
Consideraciones:
➢ Los eventos pueden ser las sentencias INSERT, DELETE, UPDATE; que
modifican los datos de una tabla.
➢ Se pueden ejecutar antes (BEFORE) y/o después (AFTER) de que sean
ejecutados los datos.
➢ Tienen dos palabras clave, OLD y NEW; que se refieren a los valores que
tienen las columnas antes y después de la modificación; los INSERT permiten
NEW, los DELETE OLD y UPDATE permiten ambos.
➢ Para nombrar un triggers se debe seguir una convención a fin de reconocer de
manera más fácil sobre que tabla y evento.

Sintaxis general
MSc. Ing. Wilfredo M. Trejo Flores 8
UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
CREATE TRIGGER <nombre>
{BEFORE|AFTER}
{INSERT|UPDATE|DELETE}
ON
<tablename>
FOR EACH ROW
BEGIN
<sentenciasSQL>
END;

Un Trigger o disparador es una funcionalidad que la base de datos ejecuta de forma


automática cuando se realiza una operación de tipo insert, update o delete en una
tabla o vista, o cuando se ejecuta una consulta SQL sobre una tabla o vista.

V. GESTIÓN DE USUARIOS
MySQL es un sistema de gestión de bases de datos claramente orientado escritorio y
web, y una de los síntomas en su arquitectura ha venido siendo que la creación de los
usuarios se realiza en la misma sentencia que el permiso (grant) de acceso a una o
varias bases de datos. La orientación de MySQL va cambiando con el tiempo y el
uso que se les da a las bases de datos cada vez trasciende más el entorno web,
actualmente hay tres formas de crear un usuario:
✓ Con la sentencia SELECT current_user(), podemos ver todos los usuarios que
están asignados con una base de datos.
✓ Para asignar privilegios a bases de datos específicas o tablas específicas, se debe
usar GRANT. Utilizando este método, tenemos que forzar que se refresquen las
tablas de permisos usando FLUSH PRIVILEGES.
✓ Con algunos privilegios:
- La forma clásica, con la sentencia GRANT.
- Utilizando la sentencia GRANT podemos crear un usuario a la par que
otorgarle uno o varios privilegios sobre los objetos de una base de datos, o
la base de datos completa.

MSc. Ing. Wilfredo M. Trejo Flores 9


UNIVERSIDAD NACIONAL SANTIAGO ANTÚNEZ DE MAYOLO
Facultad De Ciencias – Escuela Profesional De Ingeniería De Sistemas E Informática

ADMINISTRACIÓN DE BASE DE DATOS SEMESTRE 2022-I


Semana 7 – Sesión 13-14
- Al encontrarse una sentencia de tipo GRANT, el motor de MySQL revisa si
el usuario existe previamente para el contexto que estamos asignándole
permisos, y si dicho usuario no está presente en el sistema, lo crea.
Por ejemplo, queremos crear el usuario manuel para la base de datos test:
- Nos conectamos con un usuario que tenga privilegios, root, como
propietario de la base de datos, los tiene.
- GRANT SELECT, INSERT ON test.* TO 'manuel'@'localhost'
IDENTIFIED BY 'man', esta sentencia crea al usuario manuel al que se le
permite seleccionar e insertar registros en las tablas de la base de datos test.
- grant create on test.* to 'jesus'@'localhost' identified by 'jes', crea al usuario
jesus, el cual puede crear objetos en la base de datos test.

✓ Con todos los privilegios:


- Si queremos darle todos los privilegios entonces crearemos al usuario de la
siguiente manera:
grant all privileges on *.* to 'trejo'@'localhost' identified by 'tr'
- Creamos al usuario manuel: grant select,insert,update,delete on bdejemplo.*
to 'manuel'@'localhost' identified by 'trejo'; luego se le quita el privilegios
select.

✓ Quitar privilegios:
- Revoke select on bdejemplo.* from 'manuel'@'localhost' identified by
'trejo';
- REVOKE all ON *.* from ‘trejo’ @'localhost' identified by 'tr';
✓ Eliminar usuarios
- drop user 'trejo'@'localhost'

MSc. Ing. Wilfredo M. Trejo Flores 10

También podría gustarte