Para crear una nueva vista en MySQL, puede utilizar CREATE VIEW
comunicado. Crear una vista en la sintaxis de MySQL es la siguiente:
CREAR [ ALGORITMO = {MERGE | TEMPTABLE | INDEFINIDO} ] VISTA [ database ] . [ View_name ] AS [ SELECT ]
1. Verificar el procesamiento de los algoritmos
atributo algoritmo le permite controlar el uso de mecanismos de MySQL al crear la vista, MySQL proporciona tres algoritmos: , y .MERGE
TEMPTABLE
UNDEFINED
-
Usando el
MERGE
algoritmo, MySQL primera entrada consulta de selección sentencia que define la vista en una sola consulta. A continuación, ejecutar MySQL consulta devuelve una combinación conjunto de resultados. Si la instrucción SELECT contiene una función de agregado (como MIN , MAX , SUM , COUNT , AVG , etc.) o DISTINCT , GROUP BY , la HAVING , LÍMITE , UNION , UNION ALL , la subconsulta no está autorizado a utilizarMERGE
el algoritmo. Si la tabla de referencia de la declaración sin SELECT, que tampoco está permitido el uso delMERGE
algoritmo. Si no esMERGE
el algoritmo, MySQL va a cambiar el algoritmoUNDEFINED
. Tenga en cuenta que, en la vista de definición de las consultas de entrada y de consulta se combinan en una consulta llamada resolución de vista .
- El uso de
TEMPTABLE
algoritmos, MySQL En primer lugar, según la definición de la vistaSELECT
para crear una declaración de tabla temporal, y luego ejecutar la consulta introducida por la tabla temporal. Debido a que MySQL debe crear una tabla temporal para almacenar el conjunto de resultados de la tabla de base de datos se mueve a la tabla temporal, laTEMPTABLE
eficiencia del algoritmo que laMERGE
menor eficiencia del algoritmo. Además, el uso deTEMPTABLE
algoritmos de visión y no se actualiza.
-
Cuando se crea una vista sin especificar un algoritmo explícito
UNDEFINED
es el algoritmo predeterminado.UNDEFINED
MySQL puede optar por utilizar el algoritmo o algoritmos. MySQL precedencia algoritmo de algoritmo, debido a la mayor eficiencia del algoritmo.MERGE
TEMPTABLE
MERGE
TEMPTABLE
MERGE
2, ver el nombre
En la base de datos, tablas y vistas compartir los mismos espacios de nombres, opiniones y mesas y por lo tanto no pueden tener el mismo nombre. Además, el nombre de la vista debe seguir la tabla de nombres.
instrucción SELECT
En el SELECT
comunicado, la presencia de cualquier tabla o vista puede consultar los datos de la base de datos. SELECT
Declaración debe seguir las siguientes reglas:
SELECT
En la declaración DONDE contener cláusula de sub-consulta, pero laFROM
cláusula no contiene sub-consultas.SELECT
Declaración no puede referirse a cualquier variable, incluyendo las variables locales, variables de usuario y las variables de sesión.SELECT
Declaración no puede referirse parámetros preparado comunicado.
Tenga en cuenta que la
SELECT
declaración no se requiere ninguna tabla de referencia.
3. Crear una vista MySQL ejemplo
Creación de una vista sencilla
Echemos un vistazo a orderDetails
la tabla. Sobre la base de orderDetails
la mesa para crear una vista de la representación total de ventas para cada orden.
CREAR VISTA SalePerOrder AS SELECT orderNumber, SUM (quantityOrdered * priceEach) Total DE OrderDetails GRUPO por orderNumber ORDEN POR total de DESC ;
Para saber qué objeto es una tabla o vista, utilice el SHOW FULL TABLES
comando de la siguiente manera:
mysql > MOSTRAR COMPLETA TABLAS; + - ------------------ + ------------ + | Tables_in_yiibaidb | table_type | + - ------------------ + ------------ + | article_tags | BASE TABLA | | contactos | BASE TABLA | | clientes | BASE TABLA | | departamentos | BASE TABLA | | empleados |BASE TABLA | | oficinas | BASE TABLA | | offices_bk | BASE TABLA | | offices_usa | BASE TABLA | | OrderDetails | BASE TABLA | | pedidos | BASE TABLA | | pagos | BASE TABLA | | productlines | BASE TABLA | |productos | BASE TABLA | | saleperorder | VISTA | + - ------------------ + ------------ +
table_type
especifica de columna que objeto es una vista, que objeto es una tabla (tabla de base). Como se indicó anteriormente,
saleperorder
la correspondiente
table_type
columna es:
VIEW
Cree una vista utilizando la tabla de conexiones
El siguiente es un INNER JOIN ejemplo crea una vista. Esta vista contiene el número de cliente y la cantidad total pagada por el cliente.
CREAR VISTA CustomerOrders AS SELECT c.customerNumber, p.amount DE clientes c INTERIOR ÚNETE pagos p EN p.customerNumber = c.customerNumber GRUPO POR c.customerNumber ORDEN POR p.amount DESC ;
Crear una vista usando subconsultas
CREATE VIEW aboveAvgProducts COMO SELECCIONAR ProductCode, productName, buyPrice DESDE productos DONDE buyPrice > ( SELECT AVG (buyPrice) DESDE productos) ORDEN DE buyPrice DESC ;