MySQL-- crear una vista (3)

Para crear una nueva vista en MySQL, puede utilizar CREATE VIEWcomunicado. 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: ,.MERGETEMPTABLE UNDEFINED

  • Usando el MERGEalgoritmo, 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 utilizar MERGEel algoritmo. Si la tabla de referencia de la declaración sin SELECT, que tampoco está permitido el uso del MERGEalgoritmo. Si no es MERGEel algoritmo, MySQL va a cambiar el algoritmo UNDEFINED. 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 TEMPTABLEalgoritmos, MySQL En primer lugar, según la definición de la vista SELECTpara 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, la TEMPTABLEeficiencia del algoritmo que la MERGEmenor eficiencia del algoritmo. Además, el uso de TEMPTABLEalgoritmos de visión y no se actualiza.
  • Cuando se crea una vista sin especificar un algoritmo explícito UNDEFINEDes el algoritmo predeterminado. UNDEFINEDMySQL puede optar por utilizar el algoritmo o algoritmos. MySQL precedencia algoritmo de algoritmo, debido a la mayor eficiencia del algoritmo.MERGETEMPTABLEMERGETEMPTABLEMERGE

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 SELECTcomunicado, la presencia de cualquier tabla o vista puede consultar los datos de la base de datos. SELECTDeclaración debe seguir las siguientes reglas:

  • SELECTEn la declaración DONDE contener cláusula de sub-consulta, pero la FROMcláusula no contiene sub-consultas.
  • SELECTDeclaración no puede referirse a cualquier variable, incluyendo las variables locales, variables de usuario y las variables de sesión.
  • SELECTDeclaración no puede referirse parámetros preparado comunicado.

Tenga en cuenta que la SELECTdeclaración no se requiere ninguna tabla de referencia.

3. Crear una vista MySQL ejemplo

Creación de una vista sencilla

Echemos un vistazo a orderDetailsla tabla. Sobre la base de orderDetailsla 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 TABLEScomando 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        | 
+ - ------------------ + ------------ +
Los resultados establecen 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

Aquí es cómo utilizar una subconsulta para crear una vista que contiene el precio es más alto que el precio medio de todos los productos del producto.
CREATE  VIEW aboveAvgProducts COMO 
    SELECCIONAR  
        ProductCode, productName, buyPrice 
    DESDE 
        productos 
    DONDE 
        buyPrice >  
 ( SELECT  
                AVG (buyPrice)
             DESDE 
                productos) 
    ORDEN  DE buyPrice DESC ;

 

Supongo que te gusta

Origin www.cnblogs.com/yuezc/p/12661469.html
Recomendado
Clasificación