sql >> Base de Datos >  >> RDS >> Mysql

Cómo usar vistas en una base de datos MySQL

Una vista en MySQL es una consulta con nombre que se puede activar para mostrar datos almacenados en otras tablas. En otras palabras, las vistas son tablas virtuales definidas por el usuario. Las vistas se pueden utilizar para:

  • Mejore la seguridad de la base de datos. Si su base de datos contiene información confidencial que debe protegerse, el uso de una vista lo ayuda a aislar los datos. Se puede crear una vista con un conjunto de resultados predefinido y puede otorgar a los usuarios acceso solo a esa vista, en lugar de a la tabla que contiene información confidencial.
  • Mueva la lógica empresarial compleja al servidor de la base de datos. En lugar de codificar la lógica de software de uso frecuente en diferentes clientes, un desarrollador puede mover la lógica al nivel de la base de datos mediante una vista. Por ejemplo, se puede crear una vista para mostrar las clasificaciones de los clientes según sus ventas totales.
  • Reduzca la distracción de datos. Una vista puede combinar resultados de diferentes tablas y solo mostrar las columnas relevantes cuando se invoca.

En esta guía aprenderá:

  • Cómo está estructurada la sintaxis de una vista MySQL.
  • Cómo crear una vista MySQL.
  • Cómo invocar una vista MySQL.
  • Cómo soltar una vista en MySQL.

Antes de comenzar

Para seguir esta guía, asegúrese de tener lo siguiente:

  1. Un Linode, en el que ejecuta el software MySQL. Puede seguir la guía Introducción a Linode para aprovisionar un Linode.

  2. El software del servidor MySQL (o MariaDB) instalado en su Linode. Consulte la sección MySQL, que contiene guías que describen cómo instalar MySQL en varias distribuciones de Linux.

Preparando la base de datos

Antes de crear sus vistas de MySQL, cree una base de datos de muestra, defina algunas tablas y complételas primero con algunos datos:

  1. SSH a su Linode. Luego, ingrese este comando para iniciar sesión en MySQL como usuario root:

    mysql -u root -p
    

    Cuando se le solicite, ingrese la contraseña raíz de su servidor MySQL y presione Enter para continuar.

    Nota

    Si no se acepta su contraseña, es posible que deba ejecutar el comando anterior con sudo :

    sudo mysql -u root -p
    
  2. Si se acepta su contraseña, debería ver el aviso de MySQL:

    
    mysql >
    
    Nota

    Si está utilizando MariaDB, es posible que vea un mensaje como el siguiente:

    
    MariaDB [(none)]>
    
  3. A continuación, ejecute este comando SQL para crear una base de datos de muestra que se llame sample_database :

    CREATE DATABASE sample_database;
    

    Debería ver este resultado, que confirma que la base de datos se creó correctamente:

    
    Query OK, 1 row affected (0.02 sec)
    
  4. Seleccione la sample_database base de datos:

    USE sample_database;
    

    Deberías ver este resultado:

    
    Database changed
    
  5. Ejecute este comando para crear un customers tabla:

     CREATE TABLE customers
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     customer_name VARCHAR(50)
     ) ENGINE = InnoDB;
    

    Deberías ver este resultado:

    
    Query OK, 0 rows affected (0.07 sec)
    
  6. A continuación, complete los customers tabla con tres registros. Ejecute el siguiente INSERT comandos uno por uno:

    INSERT INTO customers (customer_name) VALUES ('Leslie');
    INSERT INTO customers (customer_name) VALUES ('Andy');
    INSERT INTO customers (customer_name) VALUES ('Ben');
    

    El siguiente resultado se muestra después de insertar cada registro:

    
    Query OK, 1 row affected (0.08 sec)
    ...
    
  7. Asegúrese de que los registros de muestra se hayan insertado en la base de datos ejecutando este SELECT comando:

    SELECT * FROM customers;
    

    Aparece este resultado, que confirma que los datos se insertaron correctamente en el paso anterior:

    
    +-------------+---------------+
    | customer_id | customer_name |
    +-------------+---------------+
    |           1 | Leslie        |
    |           2 | Andy          |
    |           3 | Ben           |
    +-------------+---------------+
    3 rows in set (0.01 sec)
    
  8. A continuación, cree un sales mesa. Ejecute este comando:

     CREATE TABLE sales
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     monthly_sales DECIMAL(17,2)
     ) ENGINE = InnoDB;
    

    Aparece esta salida:

    
    Query OK, 0 rows affected (0.07 sec)
    
  9. Luego, agregue algunos datos a las sales mesa. Ejecute estos comandos uno por uno:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('1','500.27');
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('2','7600.32');
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('3', '25879.63');
    

    Después de insertar cada registro de ventas, aparece este resultado:

    
    Query OK, 1 row affected (0.01 sec)
    ...
    
  10. A continuación, ejecute un SELECT consulta para verificar que los datos de ventas se insertaron en la tabla:

    SELECT * FROM sales;
    

    Aparece este resultado, que confirma que los datos de ventas se insertaron correctamente en el paso anterior:

    
    
    
    
    +-------------+---------------+
    | customer_id | monthly_sales |
    +-------------+---------------+
    |           1 |        500.27 |
    |           2 |       7600.32 |
    |           3 |      25879.63 |
    +-------------+---------------+
    3 rows in set (0.00 sec)
    

Ha definido la base de datos y las tablas para trabajar. La siguiente sección describe la sintaxis de una vista MySQL.

La sintaxis de vista de MySQL

Esta es una versión simplificada de la sintaxis de la vista de MySQL:

    CREATE
    VIEW view_name
    AS select_statement
  • view_name :El nombre de la vista MySQL debe definirse aquí. Es recomendable utilizar un nombre descriptivo para que luego pueda recordar la función de la vista.

  • select_statement :Esta es la consulta SQL que se acopla con la vista definida. Cuando se invoca la vista, MySQL ejecuta esta consulta para devolver un conjunto de registros.

Creando una Vista MySQL

Esta sección presenta un ejemplo de vista de MySQL. Esta vista se utiliza para clasificar a los clientes de su base de datos de muestra, según su número de ventas mensuales.

Asegúrese de haber iniciado sesión en su servidor MySQL. Luego, ejecute el siguiente comando para crear un customers_membership ver:

CREATE
VIEW customers_membership
AS SELECT sales.customer_id,
customer_name,
(IF(sales.monthly_sales >= 5000, 'PREMIUM', 'BASIC')) as membership
FROM sales
LEFT JOIN customers
ON sales.customer_id = customers.customer_id;

Si la vista se crea correctamente, debería ver el resultado que se muestra a continuación:


Query OK, 0 rows affected (0.01 sec)

El comando MySQL anterior crea una vista llamada customers_membership que se une a los customers y sales tabla con la PRIMARY KEY customer_id . El IF(expression, value_if_true, value_if_false) La lógica del estado de cuenta se usa para determinar la membresía del cliente a partir de sus ventas mensuales:

  • Si las ventas de un cliente son iguales o superiores a 5000, la vista clasifica al cliente como PREMIUM miembro.

  • De lo contrario (si las ventas están por debajo de 5,000) ), el cliente se clasifica como BASIC miembro.

El customers_membership La vista ahora está guardada en la base de datos. La siguiente sección muestra cómo llamar a una vista de MySQL y mostrar un juego de registros sin consultar las tablas base directamente.

Invocar una vista MySQL

Esta sección muestra cómo invocar la vista de MySQL que creó anteriormente y confirmar que funciona como se esperaba. Una vez que se crea una vista, es visible como un objeto de base de datos y se puede llamar usando SELECT declaración.

  1. Para invocar el customers_membership ver, ejecutar:

    SELECT * FROM customers_membership;
    

    Si la vista funciona como se esperaba, ahora debería ver una lista de clientes con su membership generada valores basados ​​en sus ventas. Desde Leslie las ventas de estaban por debajo de 5000 (500.27), la vista muestra la membresía del cliente como BASIC . Andy y Ben Las ventas de fueron 7600.32 y 25879.63 respectivamente y esto los convierte en PREMIUM miembros:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    
  2. Una vez que se actualizan los datos de la tabla base y vuelve a invocar una vista de MySQL, debería ver la información más reciente. Las vistas extraen información de sus tablas base y no almacenan los datos. Para demostrar cómo una vista extrae información actualizada de las tablas base, agregue otro cliente llamado Rajie a los customers tabla:

    INSERT INTO customers (customer_name) VALUES ('Rajie');
    

    Aparece esta salida:

    
    Query OK, 1 row affected (0.01 sec)
    
  3. Luego, agregue la información de ventas mensuales del cliente a la tabla de ventas:

    INSERT INTO sales (customer_id, monthly_sales) VALUES ('4', '147.41');
    

    Aparece esta salida:

    
    Query OK, 1 row affected (0.01 sec)
    
  4. A continuación, invoque el customers_membership ver de nuevo:

    SELECT * FROM customers_membership;
    

    Aparece el siguiente resultado, que confirma que la vista puede recoger los cambios y extraer la información de los nuevos clientes como se esperaba:

    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    |           4 | Rajie         | BASIC      |
    +-------------+---------------+------------+
    4 rows in set (0.00 sec)
    

    Como puede ver en el conjunto de registros de vista anterior, ahora tiene un nuevo cliente llamado Rajie con un BASIC membresía.

Soltar una vista MySQL

Al igual que otros objetos de la base de datos, puede eliminar vistas si ya no las necesita. Esta es la sintaxis básica para soltar una vista de MySQL:

    DROP VIEW IF EXISTS view_name;
  1. Antes de colocar una vista de MySQL, primero identifique su nombre ejecutando el siguiente comando:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    

    Aparece una lista de todas las vistas en la base de datos actualmente seleccionada:

    
    +---------------------------+------------+
    | Tables_in_sample_database | Table_type |
    +---------------------------+------------+
    | customers_membership      | VIEW       |
    +---------------------------+------------+
    1 row in set (0.01 sec)
    
  2. En este caso, el nombre de la vista que desea descartar es customers_membership . Entonces, para eliminarlo, ejecute:

    DROP VIEW IF EXISTS customers_membership;
    

    Asegúrese de que se muestre el siguiente resultado después de eliminar la vista de la base de datos:

    
    Query OK, 0 rows affected (0.01 sec)
    
    Nota Tenga en cuenta que si intenta eliminar una vista de MySQL que no existe sin utilizar IF EXISTS palabra clave, MySQL arroja un error.
  3. Cuando se vuelve a ejecutar el comando del paso 1, ahora no debería haber resultados:

    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    
    
    Empty set (0.000 sec)
    

Más información

Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

  • MySQL:uso de vistas