A criação, uso e precauções da visão de aprendizagem Oracle

202-01-25 A criação da visão de aprendizagem Oracle


One, versão Oracle

Oracle 11.2.0.1.0 - 64 bits

Ferramenta SQLPlus

Segundo, qual é a vista

1. Visualização, para facilidade de uso, é um encapsulamento ou alias de consultas complexas.A definição da visualização existe no dicionário de dados. .

2. O objetivo, vantagens e desvantagens de usar visualizações.

Objetivo: restringir o acesso ao banco de dados, encapsular consultas complexas e fornecer requisitos independentes para as necessidades do usuário (não necessariamente mostrando todos os dados aos usuários)

Benefícios: Aumente a segurança dos dados básicos da tabela, porque as palavras-chave ou funções de grupo usadas na instrução de criação podem restringir as operações DML do usuário na exibição.

Desvantagem: O uso de visualizações aumentará a carga de dados, o que é uma redução no desempenho do banco de dados . Mesmo que a instrução de consulta da visualização seja simples, pode ser uma consulta complexa com centenas ou milhares de linhas sob a aparência.

3. Pontos a serem observados: A visualização é apenas uma definição e não armazena seus próprios dados, os dados ainda são armazenados na tabela básica .

                   A visualização que armazena os dados é chamada de instantâneo.

Três, crie e use visualizações

1. Autorizar o usuário scott (a conta scott que usei no exercício) .Depois de consultar o DBA, descobri que na versão após 10g, a permissão de criação de visualização padrão do usuário scott foi reciclada.

2. Crie uma visualização e use-a:

Login: execute cmd ---> sqlplus / nolog como administrador

Faça login na instância ORCL do banco de dados como DBA

SQL> conn sys / sys @ orcl como sysdba; 

Conceda permissão ao scott para criar visualizações

SQL> conceder criação de visualização a scott;

Em seguida, mude para fazer login com o usuário scott

SQL> conn scott / tiger

Crie uma vista:

SQL> criar visão v1 como selecionar deptno, min (sal) sals do grupo emp por deptno;

Veja a estrutura da visualização:

SQL> desc v1;

Consulte todos os dados da vista v1:

SAL> selecione * da v1 ;

 

Suplemento: para forçar a criação de uma visão, você precisa usar a sintaxe de forçar uma visão, a palavra-chave Force.

1. Como mencionado anteriormente, a visão é uma definição que existe no dicionário de dados, então a visão pode existir antes da tabela básica .

语法 : criar force view v2 selecionando * de tt;

Irá reportar um erro (não importa): Aviso: A visão criada tem um erro de compilação.

2. O status da visualização de consulta v2 é INVALID , que é inválido ou inválido

selecione object_name, object_type, status de user_objects onde object_name = 'V2';

3. Crie a tabela tt

crie a tabela tt como select * from emp;

Verifique o status da visualização v2 novamente, ainda é INVÁLIDO .

4. Visualização "Ativar", precisa ser chamada uma vez

selecione * da v2;

5. Verifique o status do view v2 pela terceira vez e descubra que ele já é VÁLIDO , válido e legal.

Quarto, o processo de execução da visão

1. O banco de dados primeiro encontra a definição de visão v2

selecione * da v2;

2. A definição encontrada pela execução do banco de dados, aqui é exatamente como a visualização reduz o desempenho do banco de dados.

Cinco, modificar e excluir visualizações

1. Modifique a visualização. Só precisa modificar a definição da visão, não precisa mudar a tabela básica
Sintaxe: crie ou substitua a visão v3 como select * from dept ;

Visualização de consulta v3: selecione * da v3;

修改 视图 v3 : criar ou substituir view v3 como select * from dept onde deptno = 10 ;

Consulta v3, o resultado da consulta mudou, o que prova que a modificação da visualização foi bem-sucedida.

2. Exclua a visualização. Só precisa limpar a definição da visão do dicionário de dados.

Sintaxe: drop view v3;

Seis, execute operações DML na visualização

Quando a instrução que cria uma visão contém as seguintes condições, a DML da visão pode ser restrita (√ significa operável, x significa inoperável)

 

Número de série Acontecendo excluir atualizar inserir
1 A instrução contém funções de grupo ao criar uma visualização:
min (), max (), count (*), avg (), sum ()
x x x
2 Ao criar uma visão, a instrução contém:
grupo por cláusula
x x x
3 A palavra-chave de desduplicação é usada na instrução ao criar a visualização: a
palavra-chave distinta
x x x
4 A pseudocoluna rownum é incluída na declaração ao criar a visão x x x
5 Ao criar uma visão, a instrução contém a coluna de expressão:
como caso ... quando expressão
x x
6 Não há uma coluna nula na tabela base,
mas a coluna não aparece na definição da visão
x

 

 

 

 

 

 

 

 

 

 

 

Criar uma vista é adicionar uma restrição Check check.

A opção de restrição a ser marcada é usada para restringir a condição where para garantir que os dados da linha selecionada não serão alterados quando as operações de atualização e inserção forem realizadas.

Sintaxe 1: com opção de verificação [nome da restrição de restrição]

Restrição somente leitura.

Sintaxe 2: com somente leitura

Escopo de aplicação: ambas as restrições se aplicam a visualizações ou visualizações criadas com base em outras visualizações

Comparado:

    1. Ambos são usados ​​para limitar as operações de atualização e inserção realizadas por meio da visualização

    2. Quando a restrição de sintaxe 1 existe, as operações DML são permitidas apenas quando as condições são atendidas; quando a restrição de sintaxe 2 existe, as operações DML não são permitidas em nenhuma circunstância, restringindo somente leitura.

Exemplo de operação de sintaxe 1:

SQL> criar ou substituir visão tt1 como select * from emp onde deptno = 10 com restrição de opção de verificação tt1_ck;

A visão foi criada.

SQL> update tt1 set deptno = 11;
update tt1 set deptno = 11
       *
Ocorreu um erro na linha 1:
ORA-01402: visualizar WITH CHECK OPTION onde a violação da cláusula

Exemplo de operação de sintaxe 2:

SQL> criar ou substituir view v4 como select * from emp com somente leitura;

SQL> update v4 set ename = 'H' onde ename = 'HELLO';
update v4 set ename = 'H' onde ename = 'HELLO';
Ocorreu um erro na linha 1:
ORA-42399: Não é possível realizar a operação DML na leitura apenas ver

Sete, outros pontos de conhecimento

1. Visualização incorporada. Eu vi isso em um livro escrito pelo DBA da empresa e percebi que também uso frequentemente a visualização.

selecione ename, sal de emp, (selecione deptno, avg (sal) salário de grupo de emp por deptno) a

 onde emp.deptno = a.deptno e emp.sal> a.salary;
Nesta linha de instrução, a é a visão incorporada e se aplica apenas à instrução atual.

2. pseudocoluna rownum

rownum começa em 1, quando a primeira linha correspondente não atender à condição, ela será filtrada e, em seguida, a primeira se tornará 1, portanto, o uso da pseudocoluna deve começar em 1.

Rownum não existe na tabela de dados. É calculado pelo banco de dados. É classificado de acordo com a ordem em que os dados são recuperados do banco de dados. É uma sequência.

Nota ao usar rownum:

1). Use apenas <ou! = Sem usar visualizações;

2) .Se você deseja usar entre ... e, =,> =,>, você deve usar a visualização para conseguir.

Exemplo 1 - Sem visualização:

SQL> selecione contagem (*) de emp;

  CONTAGEM (*)
----------
         15

SQL> selecione * de emp onde rownum> 2;

Nenhuma linha selecionada

SQL> selecione contagem (*) de emp onde rownum <= 3;

  CONTAR (*)
----------
         3

Existem claramente 15 linhas de dados na tabela emp. Ao usar> 2, ele não é selecionado. Ao usar <= 3, três linhas são selecionadas.

Exemplo 2-Visualização

SQL> select * from (select rownum, ename from emp order by 1) onde rownum entre 2 e 5;

Nenhuma linha selecionada

SQL> selecione rm, ename from (selecione rownum rm, ename da ordem emp por 1) onde rm entre 2 e 5;

        RM ENAME
---------- ----------
         2 SMITH
         3 ALLEN
         4 WARD
         5 JONES

SQL> selecione rm, ename from (selecione rownum rm, ename from emp) onde rm = 4;

        RM ENAME
---------- ----------
         4 WARD

Ao definir um apelido para a pseudo coluna rownum, torna-se ilegal e legal, e uma visão temporária no contexto SQL atual é criada. Operadores como =, entre ... e podem ser usados.

 

A vista é muito divertida.

Acho que você gosta

Origin blog.csdn.net/Ezreal_XLove/article/details/113104443
Recomendado
Clasificación