Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar visualizações em um banco de dados MySQL


Uma visualização no MySQL é uma consulta nomeada que pode ser acionada para exibir dados armazenados em outras tabelas. Em outras palavras, as visualizações são tabelas virtuais definidas pelo usuário. As visualizações podem ser usadas para:
  • Aprimore a segurança do banco de dados. Se seu banco de dados contiver informações confidenciais que precisam ser protegidas, o uso de uma exibição ajuda a isolar os dados. Uma visualização pode ser criada com um conjunto de resultados predefinido e você pode conceder aos usuários acesso apenas a essa visualização, em vez da tabela que contém informações confidenciais.
  • Mova a lógica de negócios complexa para o servidor de banco de dados. Em vez de codificar a lógica de software usada com frequência em diferentes clientes, um desenvolvedor pode mover a lógica para o nível do banco de dados usando uma exibição. Por exemplo, uma visualização pode ser criada para exibir classificações de clientes dependendo de suas vendas totais.
  • Reduza a distração de dados. Uma visualização pode combinar resultados de diferentes tabelas e exibir apenas as colunas relevantes quando invocada.

Neste guia você aprenderá:
  • Como a sintaxe de uma visualização do MySQL é estruturada.
  • Como criar uma visualização do MySQL.
  • Como invocar uma visualização do MySQL.
  • Como descartar uma visualização no MySQL.

Antes de começar


Para acompanhar este guia, certifique-se de ter o seguinte:

  1. Um Linode, no qual você executa o software MySQL. Você pode seguir o guia de Introdução ao Linode para provisionar um Linode.

  2. O software do servidor MySQL (ou MariaDB) instalado no seu Linode. Consulte a seção MySQL, que contém guias que descrevem como instalar o MySQL em várias distribuições Linux.

Preparando o banco de dados


Antes de criar suas visualizações MySQL, crie um banco de dados de amostra, defina algumas tabelas e preencha-as com alguns dados primeiro:

  1. SSH para o seu Linode. Em seguida, digite este comando para efetuar login no MySQL como usuário root:
    mysql -u root -p
    

    Quando solicitado, digite a senha root do seu servidor MySQL e pressione Enter continuar.
    Observação
    Se sua senha não for aceita, talvez seja necessário executar o comando anterior com sudo :
    sudo mysql -u root -p
    

  2. Se sua senha for aceita, você deverá ver o prompt do MySQL:
    
    mysql >
    
    Observação
    Se você estiver usando o MariaDB, poderá ver um prompt como o seguinte:
    
    MariaDB [(none)]>
    

  3. Em seguida, execute este comando SQL para criar um banco de dados de exemplo chamado sample_database :
    CREATE DATABASE sample_database;
    

    Você deve ver esta saída, que confirma que o banco de dados foi criado com sucesso:
    
    Query OK, 1 row affected (0.02 sec)
    

  4. Selecione o sample_database base de dados:
    USE sample_database;
    

    Você deve ver esta saída:
    
    Database changed
    

  5. Execute este comando para criar um customers tabela:
     CREATE TABLE customers
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     customer_name VARCHAR(50)
     ) ENGINE = InnoDB;
    

    Você deve ver esta saída:
    
    Query OK, 0 rows affected (0.07 sec)
    

  6. Em seguida, preencha os customers tabela com três registros. Execute o INSERT abaixo comandos um por um:
    INSERT INTO customers (customer_name) VALUES ('Leslie');
    INSERT INTO customers (customer_name) VALUES ('Andy');
    INSERT INTO customers (customer_name) VALUES ('Ben');
    

    A saída abaixo é mostrada após a inserção de cada registro:
    
    Query OK, 1 row affected (0.08 sec)
    ...
    

  7. Certifique-se de que os registros de amostra foram inseridos no banco de dados executando este SELECT comando:
    SELECT * FROM customers;
    

    Esta saída aparece, o que confirma que os dados foram inseridos com sucesso na etapa anterior:
    
    +-------------+---------------+
    | customer_id | customer_name |
    +-------------+---------------+
    |           1 | Leslie        |
    |           2 | Andy          |
    |           3 | Ben           |
    +-------------+---------------+
    3 rows in set (0.01 sec)
    

  8. Em seguida, crie um sales tabela. Execute este comando:
     CREATE TABLE sales
     (
     customer_id BIGINT PRIMARY KEY AUTO_INCREMENT,
     monthly_sales DECIMAL(17,2)
     ) ENGINE = InnoDB;
    

    Esta saída aparece:
    
    Query OK, 0 rows affected (0.07 sec)
    

  9. Em seguida, adicione alguns dados ao sales tabela. Execute estes comandos um por um:
    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');
    

    Após inserir cada registro de vendas, esta saída aparece:
    
    Query OK, 1 row affected (0.01 sec)
    ...
    

  10. Em seguida, execute um SELECT consulta para verificar se os dados de vendas foram inseridos na tabela:
    SELECT * FROM sales;
    

    Esta saída aparece, o que confirma que os dados de vendas foram inseridos com sucesso na etapa anterior:
    
    
    
    
    +-------------+---------------+
    | customer_id | monthly_sales |
    +-------------+---------------+
    |           1 |        500.27 |
    |           2 |       7600.32 |
    |           3 |      25879.63 |
    +-------------+---------------+
    3 rows in set (0.00 sec)
    

Você definiu o banco de dados e as tabelas para trabalhar. A próxima seção descreve a sintaxe de uma visualização do MySQL.

A sintaxe da visualização do MySQL


Esta é uma versão simplificada da sintaxe de visualização do MySQL:
    CREATE
    VIEW view_name
    AS select_statement

  • view_name :O nome da visualização MySQL deve ser definido aqui. É aconselhável usar um nome descritivo para que você possa lembrar a função da visualização posteriormente.

  • select_statement :esta é a consulta SQL que é acoplada à visualização definida. Quando a visualização é invocada, o MySQL executa esta consulta para retornar um conjunto de registros.

Criando uma visualização do MySQL


Esta seção apresenta um exemplo de visualização do MySQL. Essa exibição é usada para classificar os clientes do banco de dados de amostra, dependendo do número de vendas mensais.

Certifique-se de estar conectado ao seu servidor MySQL. Em seguida, execute o comando abaixo para criar um customers_membership visualizar:
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;

Se a visualização for criada com sucesso, você deverá ver a saída mostrada abaixo:

Query OK, 0 rows affected (0.01 sec)

O comando MySQL acima cria uma visão chamada customers_membership que une os customers e sales tabela com a PRIMARY KEY customer_id . A lógica IF(expression, value_if_true, value_if_false) A lógica da instrução é usada para determinar a associação do cliente de suas vendas mensais:

  • Se as vendas de um cliente forem iguais ou superiores a 5.000, a visualização classificará o cliente como PREMIUM membro.

  • Caso contrário (se as vendas estiverem abaixo de 5,000 ), o cliente é classificado como BASIC membro.

O customers_membership agora está salva no banco de dados. A próxima seção mostra como chamar uma visualização do MySQL e exibir um conjunto de registros sem consultar as tabelas base diretamente.

Invocando uma visualização do MySQL


Esta seção mostra como invocar a visualização MySQL que você criou acima e confirmar se ela funciona conforme o esperado. Depois que uma visualização é criada, ela fica visível como um objeto de banco de dados e pode ser chamada usando o SELECT demonstração.

  1. Para invocar o customers_membership ver, executar:
    SELECT * FROM customers_membership;
    

    Se a visualização estiver funcionando conforme o esperado, você deverá ver uma lista de clientes com sua membership gerada valores com base em suas vendas. Desde Leslie 's foram inferiores a 5.000 (500,27), a visualização mostra a associação do cliente como BASIC . Andy e Ben as vendas de 7600,32 e 25879,63, respectivamente, e isso os torna PREMIUM membros:
    
    +-------------+---------------+------------+
    | customer_id | customer_name | membership |
    +-------------+---------------+------------+
    |           1 | Leslie        | BASIC      |
    |           2 | Andy          | PREMIUM    |
    |           3 | Ben           | PREMIUM    |
    +-------------+---------------+------------+
    3 rows in set (0.00 sec)
    

  2. Depois que os dados da tabela base forem atualizados e você invocar uma visualização do MySQL novamente, você deverá ver as informações mais recentes. As exibições extraem informações de suas tabelas base e não armazenam os dados. Para demonstrar como uma visualização extrai informações atualizadas das tabelas base, adicione outro cliente chamado Rajie aos customers tabela:
    INSERT INTO customers (customer_name) VALUES ('Rajie');
    

    Esta saída aparece:
    
    Query OK, 1 row affected (0.01 sec)
    

  3. Em seguida, adicione as informações de vendas mensais do cliente à tabela de vendas:
    INSERT INTO sales (customer_id, monthly_sales) VALUES ('4', '147.41');
    

    Esta saída aparece:
    
    Query OK, 1 row affected (0.01 sec)
    

  4. Em seguida, invoque o customers_membership veja novamente:
    SELECT * FROM customers_membership;
    

    A saída abaixo é exibida, o que confirma que a visualização é capaz de captar as alterações e extrair as informações dos novos clientes conforme o esperado:
    
    +-------------+---------------+------------+
    | 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 você pode ver no conjunto de registros de visualização acima, agora você tem um novo cliente chamado Rajie com um BASIC Filiação.

Eliminando uma visualização do MySQL


Assim como outros objetos de banco de dados, você pode excluir exibições se não precisar mais delas. Esta é a sintaxe básica para descartar uma visualização do MySQL:
    DROP VIEW IF EXISTS view_name;

  1. Antes de descartar uma visualização do MySQL, primeiro identifique seu nome executando o comando abaixo:
    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    

    Uma lista de todas as visualizações no banco de dados selecionado atualmente é exibida:
    
    +---------------------------+------------+
    | Tables_in_sample_database | Table_type |
    +---------------------------+------------+
    | customers_membership      | VIEW       |
    +---------------------------+------------+
    1 row in set (0.01 sec)
    

  2. Nesse caso, o nome da visualização que você deseja eliminar é customers_membership . Então, para excluí-lo, execute:
    DROP VIEW IF EXISTS customers_membership;
    

    Certifique-se de que a saída abaixo seja exibida após a exibição ser excluída do banco de dados:
    
    Query OK, 0 rows affected (0.01 sec)
    
    Observação Observe que, se você tentar excluir uma visualização do MySQL que não existe sem usar o IF EXISTS palavra-chave, o MySQL lança um erro.

  3. Quando o comando da etapa 1 é executado novamente, agora não deve haver resultados:
    SHOW FULL TABLES WHERE TABLE_TYPE LIKE 'VIEW';
    
    
    Empty set (0.000 sec)
    

Mais informações


Você pode querer consultar os seguintes recursos para obter informações adicionais sobre este tópico. Embora estes sejam fornecidos na esperança de que sejam úteis, observe que não podemos garantir a precisão ou pontualidade dos materiais hospedados externamente.
  • MySQL - Usando visualizações