即使在明確患有的是心因性勃起障礙,需要正確的心理健康治療才能根治問題,仍是無可奈何地依靠服用犀利士、威而鋼等ED藥物。因為心理疾病難以完全治愈,一定條件下可從新觸發。

Banco de dados MySql

SQL VIEWs: O Guia Direto para Simplificar e Proteger seu Banco de Dados

Curso gratuito - Como trabalhar com o Banco de dados MySQL

No mundo do SQL, gastamos muito tempo escrevendo consultas complexas. E se você pudesse salvar uma consulta SELECT e tratá-la como uma tabela? É exatamente isso que uma VIEW faz.

Uma VIEW (ou “Visão”) não é uma tabela real. Ela não armazena dados. Pense nela como um atalho ou uma consulta pré-definida que recebe um nome.

Quando você consulta uma VIEW, o banco de dados (como o MySQL) simplesmente executa a consulta SELECT original que você usou para criá-la.

Por que usar VIEWs?

Existem dois motivos principais que justificam o uso de VIEWs em qualquer projeto:

  1. Simplificação: Se você precisa executar um JOIN complexo de cinco tabelas toda vez que gera um relatório, você pode salvar esse JOIN como uma VIEW. A partir daí, em vez de 30 linhas de SQL, você escreve apenas: SELECT * FROM v_Relatorio_Complexo;
  2. Segurança (Abstração): Este é o uso mais poderoso. Imagine uma tabela Funcionarios com colunas sensíveis como salario. Você não quer que todos os usuários do banco vejam essa informação. Você pode criar uma VIEW que seleciona apenas as colunas “seguras” (como nome e cargo) e dar permissão de acesso ao usuário apenas nessa VIEW, e não na tabela original.

Exemplo Prático no MySQL

Vamos usar um cenário simples com duas tabelas:

SQL

-- Tabelas de exemplo
CREATE DATABASE IF NOT EXISTS Exemplo_Views;
USE Exemplo_Views;

CREATE TABLE Departamentos (
    id_depto INT PRIMARY KEY,
    nome_depto VARCHAR(100)
);

CREATE TABLE Funcionarios (
    id_func INT PRIMARY KEY,
    nome_func VARCHAR(150),
    cargo VARCHAR(100),
    salario DECIMAL(10, 2),
    id_depto INT,
    FOREIGN KEY (id_depto) REFERENCES Departamentos(id_depto)
);

-- Dados
INSERT INTO Departamentos VALUES (1, 'Engenharia'), (2, 'Marketing');
INSERT INTO Funcionarios VALUES 
(101, 'Ana Silva', 'Engenheira Sênior', 14000.00, 1),
(102, 'Bruno Costa', 'Engenheiro Pleno', 9500.00, 1),
(103, 'Carla Mendes', 'Gerente de Marketing', 12000.00, 2);

Caso de Uso 1: Simplificando um JOIN

A consulta para ver funcionários e seus departamentos é um JOIN repetitivo:

SQL

SELECT F.nome_func, F.cargo, D.nome_depto
FROM Funcionarios AS F
JOIN Departamentos AS D ON F.id_depto = D.id_depto;

Vamos salvar isso como uma VIEW:

SQL

CREATE VIEW v_Funcionarios_Departamentos AS
SELECT
    F.nome_func,
    F.cargo,
    D.nome_depto
FROM
    Funcionarios AS F
JOIN
    Departamentos AS D ON F.id_depto = D.id_depto;

Agora, para obter os mesmos dados, basta fazer:

SQL

-- Consulta simples!
SELECT * FROM v_Funcionarios_Departamentos;

Caso de Uso 2: Implementando Segurança

Queremos criar uma lista telefônica que não mostre o salário.

SQL

CREATE VIEW v_Lista_Telefonica AS
SELECT
    nome_func AS Nome,
    cargo AS Cargo,
    nome_depto AS Departamento
FROM
    v_Funcionarios_Departamentos; -- Sim, VIEWs podem ser baseadas em outras VIEWs

Se um usuário tiver permissão apenas para v_Lista_Telefonica, ele nunca saberá que a coluna salario existe.

Como Gerenciar VIEWs

O gerenciamento de VIEWs é direto:

1. Alterar uma VIEW (ALTER VIEW ou CREATE OR REPLACE)

A forma mais segura de modificar uma VIEW sem precisar dar DROP nela primeiro é usando CREATE OR REPLACE VIEW:

SQL

CREATE OR REPLACE VIEW v_Lista_Telefonica AS
SELECT
    nome_func AS Nome,
    cargo AS Cargo
    -- Removemos o departamento da visão
FROM
    Funcionarios;

2. Excluir uma VIEW (DROP VIEW)

Isso remove apenas a VIEW (o “atalho”). Os dados nas tabelas originais (Funcionarios, Departamentos) permanecem intactos.

SQL

DROP VIEW v_Lista_Telefonica;

Limitações Importantes

VIEWs são poderosas, mas não são mágicas. Tenha em mente dois pontos:

  1. Performance: Uma VIEW não armazena os dados (no MySQL padrão). Se sua VIEW faz um JOIN em tabelas de milhões de linhas, essa consulta pesada será executada toda vez que você chamar a VIEW. Ela simplifica a escrita, não necessariamente o processamento.
  2. Atualizações (UPDATE/INSERT): É possível, em casos muito específicos (geralmente VIEWs baseadas em uma única tabela), fazer UPDATE ou INSERT através da VIEW, o que altera a tabela original. No entanto, isso é complexo e não é recomendado para VIEWs que envolvem JOINs ou agregações (GROUP BY). Trate VIEWs como ferramentas de leitura (SELECT).

Conclusão

VIEWs são uma ferramenta essencial em SQL. Elas limpam seu código, reduzem a repetição de JOINs complexos e fornecem uma camada de segurança robusta para controlar exatamente quais dados os usuários podem acessar.

Tags

About the author

Danilo Filitto

Mestre em Ciência da Computação pela Universidade Estadual de Maringá - UEM, Pós-Graduado em Redes de Computadores e Comunicação de Dados pela Universidade do Estado do Paraná - UEL, Bacharel em Ciência da Computação pela Universidade do Oeste Paulista - UNOESTE.

Atuo na área acadêmica como professor desde 2006. Atualmente leciono na UNOESTE (Universidade do Oeste Paulista), no SENAC (Serviço Nacional de Aprendizagem Comercial) e possuo vários cursos na Udemy (https://www.udemy.com/user/danilo-filitto/).

Além disso, sou o CEO dos sites https:www.dfilitto.com.br e https:www.makeindiegames.com.br

Você também pode me encontrar no YouTube por meio do endereço https://www.youtube.com/danilofilittoppr

Add Comment

Click here to post a comment

Aprenda a criar seus próprios jogos

Cursos em promoção

Cursos em destaque

Quer aprender a programar?

Aprenda a criar seus próprios jogos com os melhores desenvolvedores