Visualizações MySQL: como criar visualizações a partir de tabelas com exemplos

Índice:

Anonim

O que são visualizações no MySQL?

VIEWS são tabelas virtuais que não armazenam nenhum dado próprio, mas exibem dados armazenados em outras tabelas. Em outras palavras, VIEWS nada mais é que consultas SQL. Uma visão pode conter todas ou algumas linhas de uma tabela. Uma visualização do MySQL pode mostrar dados de uma ou várias tabelas.

Sintaxe do MySQL Views

Vamos agora dar uma olhada na sintaxe básica usada para criar uma visualização no MySQL.

CREATE VIEW `view_name` AS SELECT statement;

ONDE

  • "CREATE VIEW` view_name` " diz ao servidor MySQL para criar um objeto de visão no banco de dados chamado` view_name`
  • "Instrução AS SELECT" são as instruções SQL a serem compactadas no MySQL Views. Pode ser uma instrução SELECT pode conter dados de uma tabela ou várias tabelas.

Como criar visualizações no MySQL

A seguir está um processo passo a passo para criar uma visualização no MySQL:

Vamos agora criar nossa primeira visão usando o "myflixdb", vamos criar uma visão simples que restringe as colunas vistas na tabela de membros.

Suponha que os requisitos de autorização declarem que o departamento de contas só pode ver o número do membro, nome e sexo da tabela do membro. Para conseguir isso, você pode criar uma VIEW -

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Executar o script acima no ambiente de trabalho MySQL no myflixdb e expandir o nó de visualizações no explorador de banco de dados nos dá os seguintes resultados.

Observe que o objeto accounts_v_members agora está visível nos objetos de visualizações do banco de dados. Vamos agora executar uma instrução SELECT que seleciona todos os campos da visualização, conforme mostrado no exemplo de visualização de criação do MySQL a seguir.

SELECT * FROM `accounts_v_members`;

Executar o script acima no ambiente de trabalho MySQL em myflixdb nos dá os seguintes resultados mostrados abaixo.

 
membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

Apenas as colunas autorizadas para o departamento de contas foram retornadas. Outros detalhes encontrados na tabela de membros foram ocultados.

Se quisermos ver as instruções SQL que constituem uma visão específica, podemos usar o script mostrado abaixo para fazer isso.

SHOW CREATE VIEW `accounts_v_members`;

A execução do script acima fornece o nome da visão e as instruções SQL SELECT usadas para criar a visão.

Associações e visualizações no MySQL

Vejamos agora um exemplo bastante complexo que envolve várias tabelas e usa joins.

Vamos empacotar o JOIN criado que obtém informações de três (3) tabelas a saber, membros, filmes e aluguel de filmes. Abaixo está o roteiro que nos ajuda a conseguir isso.

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

Executar os scripts acima cria a visão chamada general_v_movie_rentals em nosso myflixdb

Vamos agora selecionar todos os campos de uma tabela chamada general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Executar o script acima no ambiente de trabalho MySQL no myflixdb nos dá os seguintes resultados mostrados abaixo.

 
membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

Observe que não precisamos escrever a complexa consulta JOIN para obter informações sobre membros, filmes e detalhes de aluguel de filmes. Simplesmente usamos a visão em uma instrução SELECT regular como qualquer outra tabela comum. A visualização pode ser chamada de qualquer lugar no sistema de aplicativo em execução no myflixdb.

Eliminando visualizações no MySQL

O comando DROP pode ser usado para excluir uma visão do banco de dados que não é mais necessária. A sintaxe básica para eliminar uma visualização é a seguinte.

DROP VIEW ` general_v_movie_rentals `;

Por que usar visualizações?

Você pode querer usar visualizações principalmente pelos 3 motivos a seguir

  • Em última análise, você usará seu conhecimento de SQL para criar aplicativos, que usarão um banco de dados para requisitos de dados. É recomendado que você use VIEWS da estrutura da tabela original em seu aplicativo em vez de usar as próprias tabelas. Isso garante que, quando você refatorar seu banco de dados, seu código legado verá o esquema original por meio da visualização, sem quebrar o aplicativo.
  • VIEWS aumenta a reutilização. Você não terá que criar consultas complexas envolvendo junções repetidamente. Toda a complexidade é convertida em uma única linha de VIEWS de uso de consulta. Esse código condensado será mais fácil de integrar em seu aplicativo. Isso eliminará as chances de erros de digitação e seu código ficará mais legível.
  • VIEWS ajuda na segurança de dados. Você pode usar visualizações para mostrar apenas informações autorizadas aos usuários e ocultar dados confidenciais, como números de cartão de crédito.

Resumo

  • As visualizações são tabelas virtuais; eles não contêm os dados que são retornados. Os dados são armazenados nas tabelas referenciadas na instrução SELECT.
  • As visualizações melhoram a segurança do banco de dados, mostrando apenas os dados pretendidos para usuários autorizados. Eles escondem dados confidenciais.
  • As visualizações tornam a vida mais fácil, pois você não precisa escrever consultas complexas repetidamente.
  • É possível usar INSERT, UPDATE e DELETE em uma VIEW. Essas operações mudarão as tabelas subjacentes da VIEW. A única consideração é que VIEW deve conter todas as colunas NOT NULL das tabelas que faz referência. Idealmente, você não deve usar VIEWS para atualização.