Domine Views SQL: Segurança, Simplicidade e Desempenho em Banco de Dados

Utilizamos SQL, ou Linguagem de Consulta Estruturada, para interagir com um banco de dados relacional e criar as chamadas visualizações SQL.

Mas, afinal, o que são essas visualizações SQL? Elas são tabelas virtuais que consolidam e armazenam dados provenientes de tabelas de bancos de dados reais. Ao criá-las, você garante um acesso mais seguro e simplificado ao seu conjunto de dados, ao mesmo tempo em que oculta as complexidades e implementações das tabelas subjacentes.

Como isso funciona? Já sabemos que as consultas SQL são usadas para gerar visualizações SQL. Ao criar uma visualização, a consulta SQL correspondente é armazenada. Ao realizar uma consulta SQL que busca dados de múltiplas tabelas, essa consulta é executada, recuperando os dados das tabelas de banco de dados pertinentes. Similarmente, ao consultar uma visualização SQL, a consulta armazenada é primeiramente acessada e, em seguida, executada.

Quais as vantagens de criar visualizações SQL?

Como as visualizações SQL se baseiam em consultas SQL armazenadas, elas contribuem para a segurança do seu banco de dados. Além disso, simplificam consultas complexas e melhoram a performance das suas consultas. Vejamos como a criação de visualizações SQL pode beneficiar seu banco de dados e aplicações:

#1. Maior segurança para o banco de dados

As visualizações SQL atuam como tabelas virtuais, obscurecendo a estrutura das tabelas reais do banco de dados. Assim, ao analisar uma visualização, não é possível identificar quantas tabelas existem e quais as colunas de cada uma. É possível adicionar restrições de controle de acesso ao seu banco de dados, permitindo que um usuário consulte apenas a visualização, e não as tabelas originais.

#2. Simplificação de consultas complexas

É frequente que as consultas SQL envolvam várias tabelas com condições de junção elaboradas. Se você utiliza essas consultas complexas com frequência, pode se beneficiar da criação de visualizações SQL. A consulta complexa pode ser armazenada em uma visualização SQL, simplificando o processo, pois, em vez de executar a consulta inteira, você consulta apenas a visualização.

#3. Proteção contra mudanças de esquema

Caso a estrutura das tabelas subjacentes seja modificada, como a adição ou remoção de colunas, as suas visualizações SQL permanecem inalteradas. Ao utilizar visualizações SQL para todas as suas consultas, você não precisa se preocupar com alterações de esquema. Por serem tabelas virtuais, as visualizações SQL continuam a funcionar sem problemas.

#4. Melhoria no desempenho das consultas

Ao criar visualizações SQL, o sistema de gerenciamento de banco de dados otimiza a consulta subjacente antes de armazená-la. Uma consulta armazenada é executada mais rapidamente do que executar a mesma consulta diretamente. Portanto, usar visualizações SQL para consultar os dados proporciona um desempenho superior e resultados mais rápidos.

Como criar visualizações SQL?

Para criar uma visualização SQL, utilizamos o comando CREATE VIEW. Uma visualização contém uma instrução SELECT, que define a consulta que será armazenada na visualização. A sintaxe é:

CREATE VIEW nome_da_visualizacao AS
SELECT
  coluna_1,
  coluna_2,
  coluna_3...
FROM
  tabela_1, tabela_2
WHERE
  condicao

Para entender melhor, vamos usar um exemplo com duas tabelas: `departamento` e `funcionario`. A tabela `departamento` armazena o nome e o ID do departamento, enquanto a tabela `funcionario` contém o nome, ID do funcionário e o ID do departamento ao qual o funcionário pertence. Utilizaremos essas tabelas para criar nossa visualização SQL.

Criando as tabelas do banco de dados

departamento_id departamento_nome
1 Finanças
2 Tecnologia
3 Negócios

Tabela 1: departamento

Se você utiliza MySQL, pode criar essa tabela com a seguinte consulta:

CREATE TABLE `department` (
  `department_id` int,
  `department_name` varchar(255),
  PRIMARY KEY (`department_id`)
);

Insira os dados na tabela usando o seguinte SQL:

INSERT INTO department VALUES (1, 'Finance');
INSERT INTO department VALUES (2, 'Technology');
INSERT INTO department VALUES (3, 'Business');
funcionario_id funcionario_nome departamento_id
100 John 3
101 Mary 1
102 Natalya 3
103 Bruce 2

Tabela 2: funcionario

Com a tabela `departamento` pronta, crie a tabela `funcionario` com a seguinte consulta MySQL:

CREATE TABLE `employee` (
  `employee_id` INT,
  `employee_name` VARCHAR(255),
  `department_id` INT,
  FOREIGN KEY (`department_id`) REFERENCES department(department_id)
);

Em seguida, insira os registros dos funcionários na tabela. Lembre-se que, como a coluna `department_id` possui uma referência de chave estrangeira com a tabela `department`, você não pode inserir um `department_id` que não esteja presente na outra tabela.

INSERT INTO employee VALUES (100, 'John', 3);
INSERT INTO employee VALUES (101, 'Mary', 1);
INSERT INTO employee VALUES (102, 'Natalya', 3);
INSERT INTO employee VALUES (103, 'Bruce', 1);

Consultando as tabelas do banco de dados

Vamos utilizar as tabelas em uma consulta de banco de dados. Suponha que você precise consultar o `employee_id`, `employee_name` e `department_name` para todos os funcionários. Neste caso, será necessário utilizar ambas as tabelas e uni-las pela coluna comum, que é `department_id`. A consulta seria:

SELECT
  employee_id,
  employee_name,
  department_name
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Criando a sua visualização SQL

Pode acontecer de você consultar ou referenciar esses dados com frequência. Além disso, com o tempo, à medida que mais registros forem adicionados às tabelas, o tempo de consulta poderá aumentar. Nesse cenário, você pode criar uma visualização SQL correspondente a essa consulta.

Use a seguinte consulta para criar uma visualização chamada `employee_info`:

CREATE VIEW employee_info AS
SELECT
  employee_id,
  employee_name,
  department_name
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Com essa visualização criada, você pode consultá-la diretamente. Sua consulta se torna:

SELECT
  *
FROM
  employee_info;

Ao consultar a visualização SQL, você obtém o mesmo resultado da consulta original. Contudo, sua consulta agora é mais fácil de manter. A visualização oculta a complexidade da consulta sem comprometer o resultado ou desempenho.

Como substituir visualizações SQL?

Se você tiver uma visualização com um nome específico e deseja modificá-la ou substituí-la, utilize o comando `CREATE OR REPLACE VIEW`. Com ele, você pode alterar a instrução SELECT que foi utilizada para criar a visualização. Desta forma, a saída da visualização é substituída, mantendo o nome da visualização intacto. Adicionalmente, uma nova visualização SQL é criada se ela não existir.

A sintaxe para substituir uma visualização SQL é:

CREATE OR REPLACE VIEW nome_da_visualizacao AS
SELECT
  nova_coluna_1,
  nova_coluna_2,
  nova_coluna_3 ...
FROM
  nova_tabela_1,
  nova_tabela_2 ...
WHERE
  nova_condicao

Um exemplo prático pode ajudar. Considere as tabelas `departamento` e `funcionario`. Uma visualização SQL `employee_info` foi criada a partir delas, contendo as colunas `employee_id`, `employee_name` e `department_name`.

Por motivos de segurança, talvez você queira remover a coluna `employee_id` dessa visualização. Além disso, você também pode querer alterar os nomes das colunas para ocultar as colunas reais do banco de dados. É possível realizar essas modificações na visualização existente com a seguinte consulta SQL:

CREATE OR REPLACE VIEW employee_info AS
SELECT
  employee_name as name,
  department_name as department
FROM
  employee,
  department
WHERE
  employee.department_id = department.department_id;

Após a substituição da visualização, você obterá resultados diferentes ao usar a mesma consulta que utilizava anteriormente. Por exemplo, no resultado da consulta, você perceberá que uma das colunas foi removida. Além disso, os nomes das colunas foram alterados de `employee_name` e `department_name` para `Name` e `Department`, respectivamente.

Aproveitando o poder das visualizações SQL

A criação de visualizações SQL não apenas oferece consultas simplificadas e uma pesquisa de dados mais rápida, mas também proporciona segurança e proteção contra alterações de esquema. Criar visualizações SQL é um processo direto. Você pode pegar qualquer consulta existente e transformá-la em uma visualização SQL.

Siga o guia passo a passo acima para criar visualizações SQL e usufruir de suas vantagens. Com visualizações SQL, você pode tornar suas aplicações de banco de dados mais simples, seguras e com desempenho aprimorado.

Se você deseja gerenciar seu próprio servidor SQL, consulte o SQL Server Management Studio (SSMS).