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.

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.

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:

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.

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