Una vista SQL es una tabla virtual o un conjunto de resultados generado por la consulta SELECT. A diferencia de las tablas físicas, las vistas no almacenan datos en una base de datos. Cuando ejecutamos la consulta SELECT para completar los datos, ejecuta una consulta que crea la vista (definición de vista).
Qué es Ver en MySQL
Suponga que tiene una consulta SQL compleja que usa múltiples uniones y una lógica empresarial compleja. Utiliza esta consulta en el código de la aplicación con frecuencia. Sin embargo, debido a requisitos comerciales, debe cambiar esa lógica de consulta. Los cambios realizados en una consulta deben reflejarse en toda la aplicación.
En tales casos, es preferible crear una vista SQL y encapsular la lógica comercial dentro de ella. Además, cuando queremos cambiar la definición de la consulta, podemos cambiar la definición de la vista en lugar de realizar cambios en la aplicación.
Las vistas también se aplican para ocultar el nombre real y los detalles de la tabla. Si almacenamos la información confidencial de algún cliente en la tabla y queremos mostrar solo los detalles principales, podemos crear una vista.
Este artículo explicará Crear vista , Reemplazar vista y Soltar vista uso de sentencias en el servidor MySQL.
Muestra Base de datos Configuración
Para la demostración, instalé MySQL Server y creé una base de datos ficticia llamada EltechDB . En esa base de datos, he creado una tabla llamada tblemployee .
La siguiente consulta crea el EltechDB base de datos:
Create database EltechDB;
La siguiente consulta crea un tblemployee tabla:
CREATE TABLE tblemployees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
He insertado algunos registros ficticios en tblemployee tabla usando la siguiente consulta:
INSERT INTO `EltechDB`.`tblemployees`
VALUES
(10001,'1953-09-02','Georgi','Facello','M','1986-06-26'),
(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'),
(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'),
(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'),
(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'),
(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'),
(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'),
(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'),
(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'),
(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
Ahora, aclaremos las declaraciones para administrar las vistas de MySQL.
Cómo crear vistas en MySQL
La instrucción Create View crea una nueva vista en una base de datos. La sintaxis es la siguiente:
Create View view_name
As
Select * from base_table
Aquí:
- ver_nombre es el nombre deseado de la Vista.
- El seleccionar * de es la consulta que genera la Vista usando base_table . La consulta se especifica después de AS palabra clave.
Ejemplo de sintaxis de vista de creación de MySQL
Supongamos que queremos crear una vista que rellene la lista de empleados. La definición de la Vista es la siguiente:
Create view vwEmployees
as
select * from tblemployees;
Para acceder a los datos de la Vista, podemos utilizar la consulta SELECT. Para ver los datos de vwEmployees , ejecute la siguiente consulta:
mysql> select * from vwEmployees;
Salida:
Filtrar los datos de la vista utilizando la cláusula WHERE
Podemos filtrar la salida de la Vista usando la cláusula WHERE. En nuestro caso, queremos recuperar la lista de mujeres empleados de los vwEmployees . La consulta es la siguiente:
mysql> select * from vwEmployees where gender='F';
El resultado de la consulta es:
Tomemos otro ejemplo. Queremos recuperar la lista de los empleados cuyo número de empleado es inferior a 10005 . La consulta es la siguiente:
mysql> select * from vwemployees where emp_no<10005;
Resultado de la consulta:
Usar la función de agregado en la vista
Podemos usar las funciones agregadas en la Vista.
Aquí queremos completar el recuento de empleados masculinos y femeninos de vwEmployees Vista. Primero, usamos la función COUNT para obtener el recuento de empleados. Luego, usamos la cláusula GROUP BY para agrupar la salida según la columna de género. La consulta es la siguiente:
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
Resultado de la consulta:
Usar la función de fecha y hora en la vista
Podemos usar la función de fecha y hora en la salida Ver. Recuperamos la lista de los empleados cuyo año de ingreso es mayor o igual a 1990. La consulta es la siguiente:
mysql> select * from vwemployees where Year(hire_date)>=1990;
Resultado de la consulta:
Usar la función Control-Flow en la vista
Podemos usar la función CASE o IF en la salida de la Vista.
Imprimimos el valor del género en algún formato significativo. La salida de la columna de género devuelta por la Vista es M o F. En lugar de imprimir M, la consulta debe devolver Masculino . De manera similar, en lugar de imprimir F, la consulta debe devolver Mujer . La consulta es la siguiente:
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
Resultado de la consulta:
Lea más sobre cómo crear una vista en SQL.
Reemplazar declaración de vista
REEMPLAZAR VISTA se utiliza para cambiar la definición de una vista. Las palabras clave CREATE VIEW y REPLACE VIEW se usan juntas. La sintaxis es la siguiente:
Create or replace View view_name
As
Select * from base_table
Aquí:
- Crear o reemplazar Vista: Estas palabras clave sirven para crear o reemplazar la Vista existente. Cuando ejecutamos la declaración de vista de creación o reemplazo, MySQL verifica si existe en la base de datos. Si la vista existe, cambia la definición de la vista utilizando la consulta especificada después de la palabra clave AS. Si la Vista no existe, crea una nueva vista utilizando la consulta especificada después de la palabra clave AS.
- ver_nombre es el nombre deseado de la Vista.
- El seleccionar * de es la consulta que se usa para generar la Vista usando base_table . La consulta se especifica después de AS palabra clave.
Nota: Las palabras clave Crear o Reemplazar vista crean una nueva vista o cambian la definición de Vista existente.
Escriba el nombre de la vista en ‘database_name’.’view_name’ formato . Si no especifica la base de datos, podría terminar creando la Vista en una base de datos diferente.
Ejemplo de declaraciones MySQL CREATE View o MySQL REPLACE View
Queremos mostrar solo el nombre, el apellido y el sexo de los empleados. Además, queremos proporcionar nombres apropiados a las columnas. Por ejemplo, el first_name y apellido los valores de las columnas deben combinarse y el nombre de la columna debe ser el nombre del empleado. La consulta SQL debe ser la siguiente:
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
Ejecute la siguiente consulta SELECT para ver los datos de vwEmployees :
mysql> select * from vwEmployees
Resultado de la consulta:
Como puede ver, el first_name y apellido los valores se combinan en EmployeeName columna que indica que la definición de Vista se ha actualizado.
La declaración de vista DROP de MySQL
La palabra clave DROP View sirve para eliminar la Vista de la base de datos. La sintaxis es la siguiente:
Drop View ‘database_name’.’view_name’
En la sintaxis, view_name es el nombre de la vista que desea soltar.
Dejemos a los vwEmployees Ver usando la instrucción DROP View. Ejecute la siguiente consulta:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
Para verificar que la vista se ha descartado, ejecute la siguiente consulta:
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
Salida:
La consulta devolvió cero filas, lo que indica que la vista se eliminó.
Resumen
Este artículo explicó y demostró las vistas de MySQL y las formas de crear y administrar esas vistas. También aclaró el uso de las sentencias CREATE VIEW, REPLACE View y DROP View. CREATE View se usa para crear una vista, REPLACE View cambia la definición de la vista y DROP View elimina la vista.