mysql create view tutorial with code examples
Este tutorial do MySQL Create View explica tudo sobre como criar uma visualização no MySQL usando diferentes cláusulas e exemplos. Também aborda como descartar e gerenciar visualizações:
No MySQL, view é uma tabela virtual que nos permite ver os dados na tabela sem bloquear o acesso da tabela por outros programas e, assim, nos ajudar a evitar situações de deadlock.
As visualizações são criadas em cima de uma ou mais tabelas que contêm dados. Antes de prosseguir, observe que estamos usando MySQL versão 8.0 .
O que você aprenderá:
MySQL Create View
Sintaxe:
CREATE (REPLACE) VIEW view_name AS SELECT col1, col2, ... FROM table_name WHERE condition;Explicação da sintaxe:
- A sintaxe inicia com a palavra-chave “CREATE VIEW”, informando assim o servidor MySQL sobre o tipo de atividade a ser realizada. Esta é uma palavra-chave obrigatória e não pode ser omitida.
- REPLACE é um parâmetro opcional. Podemos usar isso enquanto estamos trabalhando em uma visualização existente.
- Em seguida, vem o nome da visualização. Deve ser exclusivo, assim como os nomes das tabelas e colunas.
- Em seguida, selecione as colunas da tabela. Uma visão pode ter todas as colunas da tabela subjacente ou apenas algumas selecionadas.
- Em seguida, vem o nome da tabela na qual a visualização deve ser executada. Isso é obrigatório e não pode ser omitido.
- Em seguida, vem a condição WHERE, que restringe ou filtra o número de linhas de destino nas quais a ação CREATE VIEW deve ser aplicada. WHERE também é uma palavra-chave, mas opcional.
A cláusula WHERE é, no entanto, significativa. Se não for mencionado ou se a condição não for definida corretamente, a tabela inteira ou as linhas não obrigatórias farão parte da visualização.
Exemplo de criação de visualização do MySQL
A seguir está uma tabela de exemplo criada em MYSQL.
Nome do esquema: pacífico
Nome da tabela: funcionários
Nomes de coluna:
empNum : Contém valores inteiros para o número do funcionário.
sobrenome : Contém valores varchar para o sobrenome do funcionário.
primeiro nome : Contém valores varchar para o nome do funcionário.
o email : Contém valores varchar para o ID de e-mail do funcionário.
deptNum : Contém varchar para o ID do departamento ao qual um funcionário pertence.
salário : Contém valores decimais de salário para cada funcionário.
data de início : Retém valores de data para a data de adesão do funcionário.

Nome do esquema: pacífico
Nome da tabela: departamentos
Nomes de coluna:
deptNum; Contém varchar para o ID do departamento dentro de uma organização.
cidade: Contém o nome da cidade de onde funcionam os departamentos.
país: Contém o nome do país correspondente à cidade.
bônus Contém o valor percentual do bônus.

MySQL Simple Create A View
Agora vamos criar uma visualização em cima da tabela acima.
A seguir está a consulta.

A cláusula SELECT pode ter nomes de coluna específicos ou podemos usar “*” para obter todas as colunas. Uma vez que criamos uma visão, não podemos adicionar ou excluir as colunas. Se quisermos adicionar ou deletar colunas, teremos que criar uma nova visão ou substituir esta existente.
A instrução de saída mostra que as instruções CREATE VIEW SQL foram executadas com sucesso. Ele também diz que nenhuma linha foi afetada. Isso significa que, quando uma nova linha é criada, ela não afeta os dados da tabela subjacente.
Agora vamos consultar a visualização.

Consulta:
CREATE VIEW employees_view AS SELECT empNum, lastName, firstName, email, deptNum, salary, start_date FROM employees ; SELECT empNum, firstName, lastName, email, deptNum, salary, start_date FROM employees_view ;ResultSet:
| empNum | sobrenome | primeiro nome | o email | deptNum | salário | data de início |
|---|---|---|---|---|---|---|
| 1008 | Bailey | Oliver | oliver.bailey@gmail.com | 3 | 24494,4 | 0001-01-01 |
| 1001 | Andrews | Jack | ja@gmail.com | 1 | 3182,7 | 0001-01-01 |
| 1002 | Schwatz | Mike | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
| 1003 | Langley | Margaret | margaret.langley@gmail.com | dois | 8820 | 0001-01-01 |
| 1004 | Harera | Sandra | sh@gmail.com | 1 | 10609 | 0001-01-01 |
| 1005 | leitura | Peter | pl@gmail.com | dois | 14332,5 | 0001-01-01 |
| 1006 | Keith | Jenny | jk@gmail.com | dois | 16537,5 | 0001-01-01 |
| 1009 | xícara | atormentar | hb@gmail.com | 5 | 30645,6 | 0001-01-01 |
| 1011 | Hanks | Tom | th@gmail.com | NULO | 10100 | 0001-01-01 |
| 1012 | Luther | Martin | ml@gmail.com | 3 | 13000 | 0001-01-01 |
| 1014 | Murray | Keith | km@gmail.com | 1 | 25000 | 0001-01-01 |
| 1015 | Branson | John | jb@gmail.com | dois | 15000 | 0001-01-01 |
| 1016 | Martin | Richard | rm@gmail.com | 4 | 5000 | 0001-01-01 |
| 1017 | Johnson | véspera | ej@gmail.com | 3 | 5500 | 25/11/2019 |
| 1018 | Ligação | Nolan | nb@gmail.com | dois | 15000 | 13/09/2019 |
Criar visualização usando GROUP BY e ORDER BY
Vamos supor um cenário em que precisamos obter o valor total do salário, em termos de departamento.
A seguir está a consulta:

Em vez de executar esta consulta na tabela todas as vezes, precisamos das informações, é melhor consultar a visualização, pois isso consumirá menos fontes de banco de dados.
Agora, vamos ver o conteúdo de nossa visão. Veremos quanto cada departamento está enviando para seus funcionários em termos de salários.

Consulta:
CREATE VIEW salPerDept AS SELECT deptNum, sum(salary) FROM employees GROUP BY deptNum ORDER BY deptNum desc ; SELECT * FROM employees_view ;Conjunto de resultados:
| deptNum | soma (salário) | |||||
|---|---|---|---|---|---|---|
| 1006 | Keith | Jenny | dois | Charlotte | Estados Unidos | 5 |
| 5 | 30645,6 | |||||
| 4 | 5000 | |||||
| 3 | 42994,4 | |||||
| dois | 69690 | |||||
| 1 | 44096,2 | |||||
| NULO | 10100 |
O NULL em deptNum indica que um funcionário não faz parte de nenhum departamento, mas está nas folhas de pagamento da organização.
MySQL Criar visualização usando JOIN
Vamos supor que desejamos obter dados sobre o departamento, a cidade em que ele está baseado e o bônus oferecido a seus funcionários. Precisamos dessas informações para todos os funcionários.
Para conseguir isso, usaremos a palavra-chave JOIN para obter dados dos departamentos e da tabela de funcionários.
Vamos dar uma olhada na consulta e sua saída.

Podemos usar diferentes tipos de JOIN aqui, como INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN ou FULL OUTER JOIN, dependendo de nossos requisitos.
Consulta:
CREATE VIEW join_view AS SELECT A.empNum, A.lastName, A.firstName, A.deptNum, B.city, B.country, B.bonus FROM employees A INNER JOIN departments B USING (deptNum) ; SELECT * FROM join_view ; Vamos agora executar uma consulta SELECT nesta visualização para ver o resultado:

Conjunto de resultados:
| empNum | sobrenome | primeiro nome | deptNum | cidade | país | bônus |
|---|---|---|---|---|---|---|
| 1001 | Andrews | Jack | 1 | Nova york | Estados Unidos | 3 |
| 1002 | Schwatz | Mike | 1 | Nova york | Estados Unidos | 3 |
| 1004 | Harera | Sandra | 1 | Nova york | Estados Unidos | 3 |
| 1014 | Murray | Keith | 1 | Nova york | Estados Unidos | 3 |
| 1003 | Langley | Margaret | dois | Charlotte | Estados Unidos | 5 |
| 1005 | leitura | Peter | dois | Charlotte | Estados Unidos | 5 |
| 1015 | Branson | John | dois | Charlotte | Estados Unidos | 5 |
| 1018 | Ligação | Nolan | dois | Charlotte | Estados Unidos | 5 |
| 1008 | Bailey | Oliver | 3 | Chicago | Estados Unidos | 8 |
| 1012 | Luther | Martin | 3 | Chicago | Estados Unidos | 8 |
| 1017 | Johnson | véspera | 3 | Chicago | Estados Unidos | 8 |
| 1016 | Martin | Richard | 4 | Londres | Inglaterra | 10 |
| 1009 | xícara | atormentar | 5 | Berlim | Alemanha | 13 |
Criar visualização usando subconsulta
Neste tipo de instrução de criação de visualização, tentamos buscar o valor de uma coluna onde a cláusula é baseada na saída de uma subconsulta. Digamos, precisamos encontrar todos os funcionários cujo salário é maior do que o salário médio da organização.
Vamos ver a consulta:


Consulta:
CREATE VIEW avgSal_view AS SELECT empNum, lastName, firstName, salary FROM employees WHERE salary > ( SELECT avg(salary) FROM employees ) ; SELECT * FROM avgSal_view ; Conjunto de resultados:
| empNum | sobrenome | primeiro nome | salário |
|---|---|---|---|
| 1018 | Ligação | Nolan | 15000 |
| 1005 | leitura | Peter | 14332,5 |
| 1006 | Keith | Jenny | 16537,5 |
| 1008 | Bailey | Oliver | 24494,4 |
| 1009 | xícara | atormentar | 30645,6 |
| 1014 | Murray | Keith | 25000 |
| 1015 | Branson | John | 15000 |
Gerenciando visualizações
Usando Alterar Visualização ou Criar / Substituir visualização, podemos modificar / substituir qualquer visualização. Usar ALTER VIEW explicitamente para recompilar uma visão não é válido.
Se você tiver privilégios de sistema ALTER ANY Table ou se a visão estiver em seu esquema, você pode usar a instrução ALTER VIEW.
como se parece uma chave wep
Usando a consulta Alter View, podemos localizar os erros de recompilação antes do tempo de execução. O uso da instrução ALTER VIEW pode afetar o outro objeto / visão que depende dele. Portanto, podemos recompilar uma visão após a alteração.
Podemos redefinir uma visualização usando Criar Visualização e substituir a visualização existente pela consulta Substituir visualização.
Por exemplo, considere a visão dos funcionários. Aqui temos as colunas lastName e firstName junto com algumas outras. Considere que temos um requisito para mesclar as colunas firstName e lastName.
A seguir está o instantâneo da visualização antes de executar a consulta ALTER.

Agora vamos executar a consulta ALTER VIEW para mesclar o firstName e o lastName.
A consulta é fornecida abaixo:

Consulta:
ALTER VIEW employees_view AS SELECT empNum, CONCAT(firstName, ' ', lastName) AS empName, email, deptNum, salary, start_date FROM employees ; Vamos ver o conteúdo da visão dos funcionários agora:

Se você pode notar, não temos duas colunas separadas para nomes. Em vez disso, temos apenas uma coluna que possui o nome e o sobrenome concatenados.
Saiba mais = >> Função MySQL CONCAT
Consulta:
SELECT * FROM employees_view;Conjunto de resultados:
| empNum | empName | o email | deptNum | salário | data de início |
|---|---|---|---|---|---|
| 1008 | Oliver Bailey | oliver.bailey@gmail.com | 3 | 24494 | 0001-01-01 |
| 1001 | Jack Andrews | ja@gmail.com | 1 | 3182,7 | 0001-01-01 |
| 1002 | Mike Schwatz | ms@gmail.com | 1 | 5304,5 | 0001-01-01 |
| 1003 | Margaret Langley | margaret.langley@gmail.com | dois | 8820 | 0001-01-01 |
| 1004 | Sandra Harera | sh@gmail.com | 1 | 10609 | 0001-01-01 |
| 1005 | Peter Lee | pl@gmail.com | dois | 14333 | 0001-01-01 |
| 1006 | Jenny Keith | jk@gmail.com | dois | 16538 | 0001-01-01 |
| 1009 | Harry Beaker | hb@gmail.com | 5 | 30646 | 0001-01-01 |
| 1011 | Tom Hanks | th@gmail.com | 10100 | 0001-01-01 | |
| 1012 | Martin Luther | ml@gmail.com | 3 | 13000 | 0001-01-01 |
| 1014 | Keith Murray | km@gmail.com | 1 | 25000 | 0001-01-01 |
| 1015 | John Branson | jb@gmail.com | dois | 15000 | 0001-01-01 |
| 1016 | Richard Martin | rm@gmail.com | 4 | 5000 | 0001-01-01 |
| 1017 | Eve Johnson | ej@gmail.com | 3 | 5500 | 25/11/2019 |
| 1018 | Nolan Bond | nb@gmail.com | dois | 15000 | 13/09/2019 |
Soltando uma vista
Podemos eliminar uma visão usando a instrução DROP VIEW. Pode-se usar um DROP VIEW se eles tiverem o privilégio DROP ANY view ou então ele deveria estar em seu esquema. A exibição inclinada não afeta a tabela subjacente na qual a exibição foi construída ou os dados dessa tabela.
Consulta:
DROP VIEW (view name); 
FAQs
P # 1) Como criar visualizações no MySQL?
Responda: Existem várias maneiras de criar visualizações no MySQL. Passamos por quatro maneiras diferentes, conforme mostrado abaixo.
1. MySQL Simple Create A View
2. Criação de visão MySQL usando GROUP BY e ORDER BY
3. MySQL Create View usando JOIN
4. Criação de visualização MySQL usando subconsulta
Q # 2) O que é uma visão no MySQL?
Responda: As visualizações são como consultas pré-executadas armazenadas em uma estrutura lógica, para que não tenhamos que executar novamente as consultas complexas na tabela. Podemos apenas consultar a visualização e obter nossos dados sem impactar a tabela.
Q # 3) Podemos aplicar JOIN em visualizações durante a criação de visualizações?
Responda: Sim, as instruções JOIN podem ser usadas em visualizações, de maneira semelhante à que usamos nas tabelas.
Q # 4) Podemos criar uma visão de outra visão?
Responda: As visualizações atuam essencialmente como tabelas, mas virtuais. Portanto, da maneira como criamos visualizações em cima de uma tabela, podemos criar visualizações em cima de outra visualização.
Q # 5) Por que usamos visualizações?
Responda: Como resultado da consulta SQL, a visualização cria uma tabela lógica. Usamos visualizações pelos seguintes motivos.
- Usando a visualização, podemos limitar a visibilidade de linhas e colunas (usando a cláusula Select e Where) para tarefas relevantes.
- As visualizações são usadas quando combinamos linhas e colunas (usando União e Join) de várias tabelas.
- Para obter uma apresentação mais distinta da agregação de linhas (usando Agrupar por e Ter) em uma tabela com detalhes mais precisos.
- As visualizações são usadas ao renomear ou decodificar colunas (usando AS) ou linhas (usando JOIN, IF, CASE ou DECODE da Oracle).
- Combinando qualquer uma das opções acima com as configurações de segurança, podemos verificar se o usuário tem acesso apenas ao que está autorizado.
Conclusão
Neste tutorial, exploramos as diferentes maneiras de criar uma visualização no MySQL.
1. MySQL Simple Create A View
2. Criação de visão MySQL usando GROUP BY e ORDER BY
3. MySQL Create View usando JOIN
4. Criação de visualização MySQL usando subconsulta
Podemos escolher qualquer uma dessas opções dependendo dos requisitos do projeto.
Leitura adicional = >> MySQL CREATE TABLE
Aprendizagem feliz !!
Leitura recomendada
- MySQL ALTER TABLE - Como adicionar colunas a uma tabela no MySQL
- Funções MySQL CONCAT e GROUP_CONCAT com exemplos
- MySQL COUNT And COUNT DISTINCT com exemplos
- MySQL Create Database - Como criar um banco de dados no MySQL
- MySQL CRIAR USUÁRIO: Como criar um novo usuário no MySQL
- Tutorial de criação de visualização do MySQL com exemplos de código
- Cláusula MySQL GROUP BY - Tutorial com exemplos
- Tutorial do MySQL JOIN: interno, externo, cruzado, esquerdo, direito e próprio