Logo SatellaSoft



Trabalhando com View no MySQL

Aprenda a criar visões que podem ser utilizadas para implementar níveis de segurança e outras regras.


Ícone homem Gunnar Correa
Ícone data de publicação 21/07/2015
Ícone quantidade de visualização 3,901
Ícone bandeira do Brasil Português

É 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 (Procedural Language/Structured Query Language) presentes no banco de dados da Oracle, como functions, trigger, procedures e view.

Este artigo aborda a utilização das View ou as famosas tabelas virtuais, 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)
);

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 CREATE VIEW, 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]
AS SELECT [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.

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;

 

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");

 

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;

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 DROP VIEW [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 inner join 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.




Sobre o autor


Gunnar Correa

Nome: Gunnar Correa

Site: http://www.gunnarcorrea.com


Autodidata, graduado em Desenvolvimento Web e especialista em Tecnologias na Educação em uma universidade no interior de São Paulo. Comecei meus estudos na área de programação quando ainda era criança, e atualmente estou estudando desenvolvimento de jogos.

Sou o CEO do portal SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.


Comentários



É necessário estar autenticado para comentar, clique aqui para se registrar ou aqui para acessar a sua conta!