MYSQL – Trabalhando com Views – Parte 01

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (4)  (2)

Neste artigo serão apresentados os principais conceitos de armazenamento de procedimentos no servidor de bancos de dados MySQL.



Neste artigo serão apresentados os principais conceitos de armazenamento de procedimentos no servidor de bancos de dados MySQL, além de mostrar como trabalhar essencialmente com objetos chamados Views. Além dos conceitos que serão vistos, aprenderemos também, como montar nossas próprias visões dos dados de tabelas em um banco de dados.


Para os exemplos que criaremos durante o artigo, utilizaremos o banco de dados World, disponível em mysql.com.

 

sql-24-04-2008pic01.JPG 

World Database disponível em mysql.com .

 

Introdução


Para quem trabalha com desenvolvimento de sistemas e administração de dados diretos em bases de dados concentradas em um SGBD como o MySQL, Oracle ou SQL Server, sabe o quanto é chateante ter que escrever e reescrever determinadas consultas todos os dias ou mesmo mais de uma vez no mesmo dia. Muitas destas consultas são derivadas de várias tabelas o que nos dá um re-trabalho ao montar todas aquelas JOIN's, utilizar esse ou aquele índice setado para esta ou aquela tabela para que também a performance de tal consulta tenha um tempo razoavelmente atraente.

Sabemos também que a cada momento em que reescrevemos uma mesma consulta, conseguir os mesmos resultados de antes é uma tarefa séria, já que existem várias formas para se escrever uma mesma consulta, levando em conta a ordem em que as tabelas aparecem, a ordem dos campos e tudo mais. Tudo isso implica em ganho ou perda de performance. Estamos falando tanto em performance que parece que nosso artigo tomou outros rumos, mas não. De fato, quando temos um grande trabalho de ajuste de performance em uma consulta, podemos rapidamente transformar esta em uma View, que a partir disso, permanecerá armazenada no servidor de bancos de dados em forma de tabela, para que possamos consultá-la todas as vezes que precisarmos, sem ter que reescrever a mesma, aproveitando todo o trabalho de refino de performance supracitado.

 

Mas, o que é uma View?


Uma View é um objeto que pertence a um banco de dados, definida baseada em declarações SELECT’s, retornando uma determinada visualização de dados de uma ou mais tabelas. Esses objetos são chamados por vezes de “virtual tables”, formada a partir de outras tabelas que por sua vez são chamadas de “based tables” ou ainda outras Views. E alguns casos, as Views são atualizáveis e podem ser alvos de declaração INSERT, UPDATE e DELETE, que na verdade modificam sua “based tables”.


Os benefícios da utilização de Views, além dos já salientados, são:

 

·                                             Uma View pode ser utilizada, por exemplo, para retornar um valor baseado em um identificador de registro;

·                                             Pode ser utilizada para promover restrições em dados para aumentar a segurança dos mesmos e definir políticas de acesso em nível de tabela e coluna. Podem ser configurados para mostrar colunas diferentes para diferentes usuários do banco de dados;

·                                             Pode ser utilizada com um conjunto de tabelas que podem ser unidas a outros conjuntos de tabelas com a utilização de JOIN’s ou UNION.

 

Criando Views


Para definir Views em um banco de dados, utilize a declaração CREATE VIEW, a qual tem a seguinte sintaxe:

 

CREATE [OR REPLACE] [ALGORITHM = algorithm_type] VIEW

         VIEW view_name [(column_list)]

         AS select_statement

         [WITH [CASCADED | LOCAL] CHECK OPTION]

 

view_name: é o nome que damos ao objeto View que criarmos. Esse nome poderá ser não qualificado, quando criado no banco de dados corrente ou totalmente qualificado quando criarmos em um banco de dados que não está definido no contexto atual (db_name.view_name).

 

column_list: recurso para que possamos sobrescrever os nomes das colunas que serão recuperadas pela declaração SELECT;

 

select_statement: é a sua declaração SELECT e indica a forma na qual você deseja que os dados sejam retornados. Tal declaração deverá indicar a forma a qual você deseja retornar os dados, podendo ser utilizado funções, JOIN’s e UNION. Podem ser utilizadas quaisquer tabelas ou views contidas no servidor de bancos de dados MySQL, observando a questão de nomes totalmente qualificados ou não.

 

OR REPLACE: pode ser utilizada para substituir uma View de mesmo nome existente no banco de dados ao qual ela pertence. Pode-se utilizar ALTER TABLE para o mesmo efeito;

 

ALGORITHM: essa cláusula define qual algoritmo interno utilizar para processar a View quando a mesma for invocada. Estes podem ser UNDEFINED (cláusula em branco), MERGE ou TEMPTABLE.

 

WITH CHECK OPTION: todas as declarações que tentarem modificar dados de uma view definida com essa cláusula serão revisadas para checar se as modificações respeitarão a condição WHERE, definida no SELECT da View.

 

Ao criar uma View, um arquivo com extensão “.frm”, com o mesmo nome desta também é criado no diretório do banco de dados, sob o diretório de dados do MySQL (datadir).

 

Definindo Views


Para iniciarmos com a mão na massa, definiremos uma View simples para listar cidades da tabela City, do banco de dados World, como segue na figura 01.

 

sql-24-04-2008pic02.JPG 

Figura 01 – Criando uma view simples e executando a mesma com um SELECT.

 

Podemos explicar que, a partir desse momento, se dermos um SHOW TABLES no banco de dados World, veremos que uma tabela adicional foi criada, que é a View que criamos. Para uma conceituação mais ampla, uma View é um mapeamento lógico de várias tabelas contidas em um ou mais bancos de dados que por sua vez estão em um servidor MySQL. No caso da View criada na Figura 01, temos uma tabela virtual (vw_viewCity) baseada em uma tabela chamada de base (City). Um bom exemplo para utilizarmos a tal lista de colunas é criar a mesma View, mas agora sobrescrevendo o nome da coluna “Name” para “Cidade”, como segue na Figura 02.

 

sql-24-04-2008pic03.JPG 

Figura 02 – Erro!!! O que houve???

 

Nossa intenção foi boa, mas faltou um pouco mais de análise. Teremos que sobrescrever também a View, pois já existe uma outra com o mesmo nome. Portanto, usaremos o OR REPLACE para facilitar nossa vida, Figura 03.

 

sql-24-04-2008pic04.JPG 

Figura 03 – Criando uma View sobrescrevendo o nome da coluna e uma View com o mesmo nome.

 

Podemos criar Views mais sofisticadas, com um comando SELECT mais trabalhado, podendo utilizar das cláusulas WHERE, GROUP BY, HAVING e ORDER BY. Alguns SGBD’s comerciais não permitem a utilização de ORDER BY em meio ao SELECT na definição de uma View, a exemplo do SQL Server, da Microsoft. A Figura 04 mostra uma consulta mais trabalhada para a criação de uma View, envolvendo as tabelas Country e CountryLanguage do banco de dados World.

 

sql-24-04-2008pic05.JPG 

Figura 04 – Criando uma View mais trabalhada.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?