Beruflich Dokumente
Kultur Dokumente
br
learningdatabase.com.br
23/04/2018
RODRIGOSAITO
VIEWS
EXEMPLOS:
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 1/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
–MOSTRANDO A ESTRUTURA
DESC VW_SALARIO_PROG;
–EXECUTANDO A VIEW
SELECT *
FROM VW_SALARIO_PROG;
EXEMPLO 2
VIEWS COMPLEXAS
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 2/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
O parâmetro WITH READ ONLY cria uma VIEW que não será possível executar nenhuma
instrução DML, sendo somente executada para leitura de dados;
DROP VIEW faz a eliminação da view do banco de dados;
EXEMPLO:
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 3/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
SELECT *
FROM SALARIOS_FUNC;
SELECT *
FROM VW_DEPTO_60;
--IRA ATUALIZAR
UPDATE VW_DEPTO_60
SET SALARY = SALARY + 1
WHERE DEPARTMENT_ID = 60;
SELECT *
FROM EMPLOYEES
WHERE DEPARTMENT_ID = 20;
ÍNDICES
Índice serve para que dados sejam organizados para melhorar o processo de procura em
tabelas;
É um dos objetos do banco de dados, que pode ser criado pelo usuário ou pelo Oracle;
Para campos do tipo Primary Key ou Unique, as chaves são criadas automaticamente pelo
Oracle;
Os índices ocupam mais espaço no banco de dados, sendo marcadores que permitem que
os dados sejam acessados rapidamente;
Pode-se criar ou eliminar índices em uma tabela a qualquer momento;
Quando uma tabela é excluída, todos os índices dessa tabela também é excluída;
Os índices exclusivos são criados exclusivamente pelo Oracle, quando definimos as colunas
PRIMARY KEY ou UNIQUE. Podem ser criados manualmente, mas é recomendado que o
Oracle faça esse gerenciamento;
Índices NÃO EXCLUSIVOS são criados pelos usuários, a qual tem a finalidade de aumentar a
performance das consultas;
Os índices exclusivos são criados exclusivamente pelo Oracle, quando definimos as colunas
PRIMARY KEY ou UNIQUE. Podem ser criados manualmente, mas é recomendado que o
Oracle faça esse gerenciamento;
Índices NÃO EXCLUSIVOS são criados pelos usuários, a qual tem a finalidade de aumentar a
performance das consultas;
Um índice pode ter mais de uma coluna;
A ordem das colunas influenciam na performance do retorno das linhas;
A utilização correta dos índices influencia também na performance de retorno das linhas
(duas ou mais colunas);
SINTAXE:
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 5/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
Quando o retorno de registros representa em torno de 2% a 4% (para tabelas com
grande quantidade de registros);
Colunas que possuem faixas de valores, como datas (que são utilizadas no WHERE);
Sempre que criar índices, é necessário avaliar se haverá mais consultas ou mais
inserções/atualizações na tabela;
Exemplo:
SELECT *
FROM EMPLOYEES
WHERE FIRST_NAME = 'Bruce';
SELECT *
FROM EMPLOYEES
WHERE FIRST_NAME = 'Bruce'
AND LAST_NAME = 'Ernst';
SEQUENCES
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 6/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
[MAXVALUE VALOR_MAXIMO]
[MINVALUE VALOR_MINIMO]
[CYCLE]
[CACHE QUANTIDADE];
O incremento padrão é de 1 em 1;
O parâmetro CYCLE é utilizado quando a numeração chega ao valor máximo (maxvalue) e o
número é reiniciado novamente;
O padrão na criação da SEQUENCE é NOCYCLE;
O parâmetro CACHE já define uma determinada quantidade de números reservados, para
que seja mais rápido a utilização das sequencias (mais performance). O padrão é quantidade
de 20;
Quando utilizamos SEQUENCES, podemos utilizar as pseudocolunas NEXVAL, que retorna o
próximo número disponível da sequencia; Mesmo que tenha várias sessões diferentes
utilizando a mesma sequence (ainda em transação), o valor nunca se repete;
Quando utilizamos SEQUENCES, podemos utilizar as pseudocolunas CURRVAL, que retorna o
valor atual da sequence daquela seção; Só irá funcionar depois de ter utilizado o NEXTVAL
na mesma sessão;
O Oracle não sabe qual é o valor corrente da sessão antes de ter executado o NEXTVAL;
Para se utilizar o NEXTVAL e CURRVAL:
Pode ser utilizada em uma SELECT, a menos que ela seja uma subquery;
Pode ser utilizada no comando VALUES do INSERT;
Pode ser utilizada no comando SET do UPDATE;
No SELECT de uma subquery para realizar um INSERT;
NÃO se pode utilizar o NEXTVAL e CURRVAL:
Em um SELECT em uma VIEW;
Em um SELECT, com DISTINCT, ORDER BY, GROUP BY ou HAVING;
Em uma coluna definida com o valor DEFAULT;
Em uma subquery em um DELETE, UPDATE ou em um SELECT;
Quando utilizamos o parâmetro CACHE QUANTIDADE, o Oracle coloca em cache essa
quantidade para que se tenha mais performance na utilização da sequence. O padrão é com
a quantidade de 20;
É indicado quando se tem tabelas que sofram grande quantidade de inserções de dados;
Depois que a sequence é gerada, o numero não é reaproveitado.
As sequences são geradas independentes que a transação termine com COMMIT ou
ROLLBACK;
Falhas no sistema do Oracle também podem perder os valores que estão no cache;
Quando utilizamos uma sequence para várias tabelas, os números não irão ser sequencias
para as tabelas utilizadas;
Podemos utilizar o comando ALTER e DROP para se fazer alteração e exclusão da sequence
respectivamente;
Quando alteramos uma sequence, apenas os próximos números são alterados;
Não é possível alterar o START WITH de uma sequence, porém pode-se dar drop e create
novamente;
Apenas quem tem permissão de DROP ANY SEQUENCE e o dono podem alterar as
sequences;
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 7/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
EXEMPLOS:
DESC TESTE_SEQUENCIA;
–UTILIZANDO O NEXVAL
SINONIMOS
SINONIMO é um dos objetos utilizados para se fazer referencia a outro objeto. Geralmente,
grande nomes de tabelas podem ser referenciadas com um nome menor ou referencia a
objetos de outros usuários podem ser feitos acessos mais facilmente;
Sinônimo público pode ser acesso por qualquer usuário e o sinônimo privado pode ser
acesso somente pelo seu criador;
Os sinônimos não podem acessar objetos que estão dentro de uma PACKAGE;
Para sinônimos privados, o nome deve ser único, diferente de outros objetos deste mesmo
usuário;
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 8/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
SINTAXE:
EXEMPLOS:
--excluindo do sinonimo
DROP SYNONYM TESTE_SIN;
Exercícios
2. Prove se é possível fazer inserção de dados através da view criada no exercício 1; Explique o
porque de conseguir ou não conseguir;
4. Insira 3 linhas de dados pela view criada no exercício 3, e explique se você conseguiu inserir
ou não esses dados;
5. Crie uma view chamada EMPREGADOS_DEP, que utilize uma tabela com a seguinte
estrutura: DEPENDENTES(EMPLOYEE_ID NUMBER(6), COD_DEP NUMBER(2), NOME_DEP
VARCHAR(30), DATA_NASC DATE), onde EMPLOYEE_ID E COD_DEP são chaves primárias. A
visão deve conter o código de dependente, o nome e a data de nascimento do dependente.
Atenção: A tabela ainda não existe. NÃO CRIE A TABELA. Utilize o parâmetro correto para se
fazer a view;
6. Crie uma sequence chamada SQ_NUMERO_DEP, iniciando pelo numero 10, incremento de 5
em 5, tamanho mínimo 10, tamanho máximo de 500, com 30 números em cache;
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 9/10
02/02/2019 Banco de Dados II – Aula 10 – learningdatabase.com.br
7. Crie a tabela dependentes do exercício 5, e faca a inserção de 5 dependentes, utilizando a
sequence do exercício 6;
Anúncios
REPORT THIS AD
REPORT THIS AD
CREATE DDL DML DQL DROP INSERT
ORACLE SELECT
WordPress.com.
https://learningdatabase.com.br/2018/04/23/banco-de-dados-ii-aula-10/ 10/10