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.