Uma visualização em SQL é uma consulta SQL salva que atua como uma tabela virtual. Ao contrário das tabelas normais, as visualizações não armazenam dados por si mesmas. Em vez disso, eles geram dados dinamicamente executando a consulta SQL definida na visualização cada vez que ela é acessada.
Ele pode buscar dados de uma ou mais tabelas e apresentá-los em um formato personalizado, permitindo aos desenvolvedores:
- Simplifique consultas complexas: Encapsule junções e condições complexas em um único objeto.
- Aumente a segurança: Restrinja o acesso a colunas ou linhas específicas.
- Apresente dados com flexibilidade: Forneça visualizações de dados personalizadas para diferentes usuários.
Usaremos essas duas tabelas SQL como exemplos.
Detalhes do aluno:
-- Create StudentDetails table
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);
INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');
Saída:
S_ID | Nome | Endereço |
|---|---|---|
1 | Severo | Calcutá |
2 | Ashish | Durgapur |
3 | Prática | Délhi |
4 | Dhanraj | Bihar |
5 | Bater | Rajastão |
Notas do aluno:
-- Create StudentMarks table
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);
INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);
Saída:
EU IA | Nome | Marcas | Idade |
|---|---|---|---|
1 | Severo | 90 | 19 |
2 | Suresh | 50 | 20 |
3 | Prática | 80 | 19 |
4 | Dhanraj | 95 | 21 |
5 | Bater | 85 | 18 |
CRIAR VISUALIZAÇÕES em SQL
Podemos criar uma visualização usando a instrução CREATE VIEW. Uma visualização pode ser criada a partir de uma única tabela ou de várias tabelas.
Sintaxe:
CREATE VIEW view_name AS
SELECT column1 column2.....
FROM table_name
WHERE condition;
Termos-chave:
- nome_visualização : Nome da Visualização
- nome_tabela : Nome da tabela
- doença : Condição para selecionar linhas
Exemplo 1: Criando uma Visualização Simples a partir de uma Única Tabela
Exemplo 1.1: Neste exemplo criaremos uma View chamada DetailsView da tabela StudentDetails.
Consulta:
CREATE VIEW DetailsView AS
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;
Use a consulta abaixo para recuperar os dados desta visualização
SELECT * FROM DetailsView;Saída:
Nome | Endereço |
|---|---|
Severo | Calcutá |
Ashish | Durgapur |
Prática | Délhi |
Dhanraj | Bihar |
Exemplo 1.2: Aqui criaremos uma visualização chamada StudentNames da tabela StudentDetails.
Consulta:
CREATE VIEW StudentNames AS
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;
Se agora consultarmos a visão como
SELECT * FROM StudentNames;
Saída:
S_ID | Nome |
|---|---|
2 | Ashish |
4 | Dhanraj |
1 | Severo |
3 | Prática |
5 | Bater java instanciado |
Exemplo 2: Criando uma visualização a partir de várias tabelas
Neste exemplo criaremos uma View MarksView que combina dados das tabelas StudentDetails e StudentMarks. Para criar uma View a partir de múltiplas tabelas, podemos simplesmente incluir múltiplas tabelas no SELECIONAR declaração.
Consulta:
CREATE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Para exibir dados de View MarksView:
SELECT * FROM MarksView;Saída:
Nome | Endereço | Marcas |
|---|---|---|
Severo | Calcutá | 90 |
Prática | Délhi | 80 |
Dhanraj | Bihar | 95 |
Bater | Rajastão | 85 |
Gerenciando visualizações: atualização e exclusão de listagem
1. Listando todas as visualizações em um banco de dados
Podemos listar todas as visualizações em um banco de dados usando a instrução SHOW FULL TABLES ou consultando as tabelas information_schema.
USE 'database_name';
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';
Usando information_schema
SELECT table_name
FROM information_schema.views
WHERE table_schema = 'database_name';
OR
SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';
2. Excluindo uma visualização
SQL nos permite excluir uma visualização existente. Pudermos excluir ou elimine View usando a instrução DROP.
pivô do servidor sql
Sintaxe:
DROP VIEW view_name;Exemplo: Neste exemplo estamos excluindo a View MarksView.
DROP VIEW MarksView;3. Atualizando uma definição de visualização
Se quisermos atualizar os dados existentes na visualização, use o ATUALIZAR declaração.
UPDATE view_name
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];
Se você deseja atualizar a definição da visualização sem afetar os dados, use a instrução CREATE OR REPLACE VIEW. Por exemplo vamos adicionar oAgecoluna para oMarksView:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 column2 ...
FROM table_name
WHERE condition;
Observação: Nem todas as visualizações podem ser atualizadas usando a instrução UPDATE.
Regras para atualizar visualizações em SQL:
Certas condições precisam ser satisfeitas para atualizar uma visão. Se alguma destas condições for não conheci a visualização não pode ser atualizada.
- A instrução SELECT usada para criar a visualização não deve incluir a cláusula GROUP BY ou ENCOMENDAR POR cláusula.
- A instrução SELECT não deve ter o DISTINTO palavra-chave.
- A View deve ter todos os valores NOT NULL.
- A visualização não deve ser criada usando consultas aninhadas ou consultas complexas.
- A visualização deve ser criada a partir de uma única tabela. Se a visualização for criada usando várias tabelas, não teremos permissão para atualizá-la.
Técnicas Avançadas com Visualizações
1. Atualizando dados por meio de visualizações
Podemos usar a instrução CREATE OR REPLACE VIEW para adicionar ou substituir campos de uma visualização. Se quisermos atualizar a visualização MarksView e adicionar o campo AGE a esta visualização da tabela StudentMarks, podemos fazer isso:
Exemplo:
CREATE OR REPLACE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Se buscarmos todos os dados do MarksView agora como:
SELECT * FROM MarksView;Saída:
Nome | Endereço | Marcas | Idade |
|---|---|---|---|
Severo | Calcutá | 90 | 19 |
Prática | Délhi | 80 | 19 |
Dhanraj | Bihar | 95 | 21 |
Bater | Rajastão | 85 | 18 |
Podemos inserir uma linha em uma View da mesma forma que fazemos em uma tabela. Podemos usar o INSERIR EM instrução SQL para inserir uma linha em uma View. No exemplo abaixo, inseriremos uma nova linha na View DetailsView que criamos acima no exemplo de 'criação de visualizações a partir de uma única tabela'.
Exemplo:
INSERT INTO DetailsView(NAME ADDRESS)
VALUES('Suresh''Gurgaon');
Se buscarmos todos os dados do DetailsView agora como
SELECT * FROM DetailsView;Saída:
Nome | Endereço |
|---|---|
Severo | Calcutá |
Ashish | Durgapur |
Prática | Délhi |
Dhanraj | Bihar |
Suresh | Gurgaon |
3. Excluindo uma linha de uma Visualização
Excluir linhas de uma visualização também é tão simples quanto excluir linhas de uma tabela. Podemos usar a instrução DELETE do SQL para excluir linhas de uma visualização. Além disso, excluir uma linha de uma visualização exclui primeiro a linha da tabela real e a alteração é então refletida na visualização. Neste exemplo, excluiremos a última linha da visualização DetailsView que acabamos de adicionar no exemplo acima de inserção de linhas.
Exemplo:
DELETE FROM DetailsView
WHERE NAME='Suresh';
Se buscarmos todos os dados do DetailsView agora como
SELECT * FROM DetailsView;Saída:
Nome | Endereço |
|---|---|
Severo | Calcutá |
Ashish | Durgapur |
Prática | Délhi |
Dhanraj | Bihar |
4. Cláusula COM OPÇÃO DE VERIFICAÇÃO
A cláusula WITH CHECK OPTION em SQL é uma cláusula muito útil para visualizações. Aplica-se a uma visualização atualizável. É usado para evitar a modificação de dados (usando INSERT ou UPDATE) se a condição na cláusula WHERE na instrução CREATE VIEW não for satisfeita.
Se tivermos usado a cláusula WITH CHECK OPTION na instrução CREATE VIEW e se a cláusula UPDATE ou INSERT não satisfizer as condições, elas retornarão um erro. No exemplo abaixo, estamos criando um View SampleView da tabela StudentDetails com uma cláusula WITH CHECK OPTION.
Exemplo:
CREATE VIEW SampleView AS
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;
Nesta visualização, se tentarmos inserir uma nova linha com um valor nulo na coluna NAME, ocorrerá um erro porque a visualização é criada com a condição para a coluna NAME como NOT NULL. Por exemplo, embora a Visualização seja atualizável, a consulta abaixo para esta Visualização também não é válida:
INSERT INTO SampleView(S_ID)Criar questionário
VALUES(6);