¿Qué son las vistas en MySQL?
Las VIEWS son tablas virtuales que no almacenan ningún dato propio, pero muestran datos almacenados en otras tablas. En otras palabras, las VIEWS no son más que consultas SQL. Una vista puede contener todas o algunas filas de una tabla. Una vista de MySQL puede mostrar datos de una o varias tablas.
Sintaxis de vistas de MySQL
Veamos ahora la sintaxis básica utilizada para crear una vista en MySQL.
CREATE VIEW `view_name` AS SELECT statement;
DÓNDE
- "CREATE VIEW` view_name` " le dice al servidor MySQL que cree un objeto de vista en la base de datos llamado` view_name`
- "Sentencia AS SELECT" son las sentencias SQL que se empaquetarán en las Vistas MySQL. Puede ser una instrucción SELECT que puede contener datos de una tabla o de varias tablas.
Cómo crear vistas en MySQL
A continuación, se muestra un proceso paso a paso para crear una vista en MySQL:
Ahora creemos nuestra primera vista usando "myflixdb", crearemos una vista simple que restringe las columnas que se ven en la tabla de miembros.
Suponga que los requisitos de autorización establecen que el departamento de cuentas solo puede ver el número, el nombre y el sexo del miembro de la tabla de miembros. Para lograr esto, puede crear una VISTA -
CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;
Ejecutar el script anterior en MySQL workbench contra myflixdb y expandir el nodo de vistas en el explorador de la base de datos nos da los siguientes resultados.
Tenga en cuenta que el objeto accounts_v_members ahora está visible en los objetos de vistas de la base de datos. Ahora ejecutemos una instrucción SELECT que seleccione todos los campos de la vista como se muestra en el siguiente ejemplo de creación de vista de MySQL.
SELECT * FROM `accounts_v_members`;
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados que se muestran a continuación.
membership_number | full_names | gender |
---|---|---|
1 | Janet Jones | Female |
2 | Janet Smith Jones | Female |
3 | Robert Phil | Male |
4 | Gloria Williams | Female |
5 | Leonard Hofstadter | Male |
6 | Sheldon Cooper | Male |
7 | Rajesh Koothrappali | Male |
8 | Leslie Winkle | Male |
9 | Howard Wolowitz | Male |
Solo se han devuelto las columnas autorizadas para el departamento de cuentas. Se han ocultado otros detalles que se encuentran en la tabla de miembros.
Si queremos ver las sentencias SQL que componen una vista en particular, podemos usar el script que se muestra a continuación para hacerlo.
MOSTRAR CREAR VISTA `accounts_v_members`;
La ejecución de la secuencia de comandos anterior le proporciona el nombre de la vista y las instrucciones SQL SELECT utilizadas para crear la vista.
Uniones y vistas en MySQL
Veamos ahora un ejemplo bastante complejo que involucra múltiples tablas y usa combinaciones.
Empaquetaremos el JOIN creado que obtiene información de tres (3) tablas, a saber, miembros, películas y alquiler de películas. A continuación se muestra el guión que nos ayuda a lograrlo.
CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;
La ejecución de los scripts anteriores crea la vista denominada general_v_movie_rentals en nuestro myflixdb
Ahora seleccionemos todos los campos de una tabla llamada general_v_movie_rentals.
SELECT * FROM `general_v_movie_rentals`;
La ejecución del script anterior en MySQL workbench contra myflixdb nos da los siguientes resultados que se muestran a continuación.
membership_number | full_names | title | transaction_date | return_date |
---|---|---|---|---|
1 | Janet Jones | Pirates of the Caribean 4 | 20-06-2012 | 28-06-2012 |
1 | Janet Jones | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
3 | Robert Phil | Forgetting Sarah Marshal | 22-06-2012 | 25-06-2012 |
2 | Janet Smith Jones | Forgetting Sarah Marshal | 21-06-2012 | 24-06-2012 |
3 | Robert Phil | X-Men | 23-06-2012 | 28-06-2012 |
Tenga en cuenta que no tuvimos que escribir la compleja consulta JOIN para obtener información sobre miembros, películas y detalles de alquiler de películas. Simplemente usamos la vista en una instrucción SELECT regular como cualquier otra tabla ordinaria. La vista se puede llamar desde cualquier lugar del sistema de aplicaciones que se ejecuta en la parte superior de myflixdb.
Eliminación de vistas en MySQL
El comando DROP se puede utilizar para eliminar una vista de la base de datos que ya no es necesaria. La sintaxis básica para eliminar una vista es la siguiente.
DROP VIEW ` general_v_movie_rentals `;
¿Por qué utilizar vistas?
Es posible que desee utilizar las vistas principalmente por las siguientes 3 razones
- En última instancia, utilizará sus conocimientos de SQL para crear aplicaciones, que utilizarán una base de datos para los requisitos de datos. Se recomienda que use VISTAS de la estructura de la tabla original en su aplicación en lugar de usar las tablas en sí. Esto asegura que cuando refactorice su base de datos, su código heredado verá el esquema original a través de la vista sin romper la aplicación.
- Las VISTAS aumentan la reutilización. No tendrá que crear consultas complejas que involucren combinaciones repetidamente. Toda la complejidad se convierte en una sola línea de consulta de uso VIEWS. Dicho código condensado será más fácil de integrar en su aplicación. Esto eliminará la posibilidad de errores tipográficos y su código será más legible.
- VIEWS ayuda en la seguridad de los datos. Puede usar vistas para mostrar solo información autorizada a los usuarios y ocultar datos confidenciales como números de tarjetas de crédito.
Resumen
- Las vistas son tablas virtuales; no contienen los datos que se devuelven. Los datos se almacenan en las tablas a las que se hace referencia en la instrucción SELECT.
- Las vistas mejoran la seguridad de la base de datos al mostrar solo los datos previstos a los usuarios autorizados. Ocultan datos sensibles.
- Las vistas te facilitan la vida, ya que no tienes que escribir consultas complejas una y otra vez.
- Es posible utilizar INSERT, UPDATE y DELETE en una VISTA. Estas operaciones cambiarán las tablas subyacentes de la VISTA. La única consideración es que VIEW debe contener todas las columnas NOT NULL de las tablas a las que hace referencia. Idealmente, no debería usar VIEWS para actualizar.