Trabalhando com View no MySQL

Visões podem ser utilizadas para implementar níveis de segurança e outras regras.

Publicado em

É comum em grandes empresas de tecnologias e desenvolvedoras de Software, terem profissionais específicos para cada área relacionada ao desenvolvimento de um produto, como Programador, Designer, DBA e Engenheiro.

Normalmente o DBA (Administrador de Banco de Dados) tem acesso completo a estrutura do banco de dados, mas não quer ou as regras da empresa limitam que programadores e engenheiros não possuem acesso a toda estrutura e sim apenas o que é de sua responsabilidade. Um exemplo disto é uma empresa que possui um grande sistema que é dividido em várias partes, uma delas é o financeiro, sendo assim os programadores do RH não tem necessidade de ter acesso aos dados do financeiro.

Construindo modelos arquitetônicos com Blender 3D

O MySQL conta com os recursos do PL/SQL (ProceduralLanguage/StructuredQueryLanguage) presentes no banco de dados da Oracle, como functions, trigger, procedures e view.

Este artigo aborda a utilização das View ou as famosas tabelasvirtuais, que são utilizadas para criar visões de uma tabela.

Mas afinal o que realmente é uma View? View é um recurso que pode ser utilizado para criar níveis de acessos em tabelas, como por exemplo, limitar a consultas. Imagine uma tabela que possua: nome, e-mail, telefone e salário. Mas por algum motivo o DBA necessite que o programador tenha apenas acesso ao nome e salário, então criamos uma visão que possibilita apenas a consulta de ambas informações, sendo que o programador não saberá que é uma view, pois as características são as mesmas de uma tabela.

Vamos utilizar a estrutura da tabela abaixo para os exemplos de utilização da View.

Código 01:

CREATE TABLE IF NOT EXISTS usuario(
	cod INT (6) NOT NULL AUTO_INCREMENT,
	nome VARCHAR (50) NOT NULL,
	email VARCHAR (50) NOT NULL,
	telefone varchar(12) NOT NULL,
	salario FLOAT(10) NOT NULL,
	PRIMARY KEY (cod)
);

Exibindo colunas de tabela do MySQL.
Exibindo colunas de tabela do MySQL.

Com esta tabela, podemos normalmente inserir valores nela, como mostrado abaixo.

Construindo modelos arquitetônicos com Blender 3D

Código 02:

INSERT INTO usuario VALUES ("", "Leticia", "leticia@email.com", "0183264000", "2.500");

No exemplo de Insert, conseguimos inserir valores em todas as colunas da tabela, e também podemos fazer consultar e retornar todos os valores cadastrados.

Agora vamos criar uma Visão/View que terá acesso apenas ao nome e salário do usuário cadastrado. Para se criar uma View, utilizamos o código CREATEVIEW, em seguida informamos o nome e depois as colunas e finalmente em qual tabela será criada a visão. Veja o código abaixo.

Código 03:

CREATE VIEW vsalario 
AS SELECT nome, salario
FROM usuario;

Create View [Nome_da_visão]
ASSELECT [Coluna1], [Coluna 3]
FROM [Tabela];

Após criar a View, o SGBD apresenta ela como uma tabela, mas fique de olho na especificação Tipo, pois a tabela está sendo usada com INNODB e a visão como vista.

Visualizando tabelas no MySQL.
Visualizando tabelas no MySQL.

Para realizar uma consulta na View, é o mesmo processo em tabelas, neste exemplo basta fazer um select em vsalario, como mostra o código abaixo. Note que embora tenha sido cadastrado valores na tabela usuário, a consulta em vsalario traz apenas as informações de nome e salário da tabela usuário.

Código 04:

Construindo modelos arquitetônicos com Blender 3D
SELECT * FROM vsalario;

Consulta em tabela no MySQL.
Consulta em tabela no MySQL.

Podemos fazer um Insert na visão, as informações serão cadastradas na tabela usuário apenas nos campos que a visão tem acesso, tenha em mente que a visão não é uma tabela separada e sim uma visão de campos específicos ou podemos até comparar como atalhos.

Código 05:

INSERT INTO vsalario VALUES ("Gunnar", "2.746");

 

Inserindo informações no MySQL.
Inserindo informações no MySQL.

Para alterar uma View, o processo é muito similar ao processo de criação, bastando utilizar ALTER VIEW, porém há uma regra a ser seguida, se você quer manter as colunas já existentes, terá que especifica-las novamente, caso contrário as existentes serão perdidas dando espaço a nova.

Código 06:

ALTER VIEW vsalario
AS SELECT nome, telefone, salario
FROM usuario;

SELECT * FROM vsalario;

Consulta em view no MySQL.
Consulta em view no MySQL.

Note que após o SELECT na View alterada, o campo Telefone correspondente ao usuário Gunnar está vazio, isto ocorreu porquê a view não tem acesso as demais colunas da tabela original, e durante o insert a regra foi respeitada. Isto é bom porque ninguém além do DBA sabe que existe uma visão, para o programador a visão não passa de uma tabela.

Para deletar uma visão, usamos o código DROPVIEW[Nome_da_View], como mostra o código abaixo.

Código 07:

DROP VIEW vsalario;

Após deletar a View, as informações processadas por ela, não será perdida, pois conforme explicado anteriormente, ela funciona como um atalho ou intermédio até a tabela usuário.

Construindo modelos arquitetônicos com Blender 3D

Você pode utilizar as View com o innerjoin ou outras regras mais complexas que acabam fazendo parte da rotina, pois com a View você deixa toda regra implementada e depois basta fazer a consulta na View.

Recomendo a leitura da documentação completa sobre o assunto no site do MySQL, https://dev.mysql.com/doc/refman/5.0/en/create-view.html.

Vamos ficando por aqui, se houver dúvidas deixem nos comentários.

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção


Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção