Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
IMPLEMENTAÇÃO DE BANCO DE DADOS Aula 8- Sql Parte 6 Conteúdo Programático desta aula Aprender a criar Visões, Indices e Sequences LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Modelo de Dados LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES Materializam o Esquema Externo de um banco de dados. é uma consulta previamente definida e que fica armazenada no dicionário de dados, podendo ser acessada de forma similar a uma tabela. Quando a visão é referenciada em um comando de SELECT suas linhas e colunas são determinadas dinamicamente, ou seja a consulta é executada e o resultado apresentado para o usuário, atuando como um verdadeira tabela virtual. Uma visão pode permitir, com restrições que os dados da tabela sejam manipulados em comando de INSERT, UPDATE e DELETE, porém, não armazena estes dados. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CRIAÇÃO CRIAR UMA VISÃO COM O ID, PRIMEIRO NOME, ULTIMO NOME E CARGO DO EMPREGADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CRIAÇÃO CREATE VIEW EMP_RESUMO AS SELECT ID, PRIM_NOME, ULT_NOME, CARGO FROM EMPREGADO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CONSULTA SELECT * FROM EMP_RESUMO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS Existem basicamente dois tipos de Views: Simples : composto por apenas um SELECT, utiliza apenas uma tabela, suas colunas são formadas por colunas da tabela original, sem cálculos ou funções Complexas: aquelas onde há um join entre tabelas LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES – MANIPULANDO DADOS INSERT INTO EMP_RESUMO VALUES ( 10, ‘ALBERTO’,’RODRIGUES’, ‘ALMOXARIFE’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES – MANIPULANDO DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS Vamos agora criar uma visão complexas, desejamos criar um visão com o id, nome completo e cargo do empregado e nome do departamento onde ele trabalha LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS CREATE VIEW EMP_DEP AS SELECT E.ID , E.PRIM_NOME|| ' ' ||E.ULT_NOME AS "NOME EMPREGADO" , E.CARGO , D.NOME AS "NOME DEPARTAMENTO" FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.ID_DEPTO = D.ID LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS SELECT * FROM EMP_DEP USUARIO PENSA QUE É UMA TABELA LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - TIPOS INSERT INTO EMP_DEP VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - WITH READ ONLY LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - CONSULTA INSERT INTO EMP_RESUMO VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - ELIMINANDO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS VISÕES - ELIMINANDO DROP VIEW EMP_DEP LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES CREATE SEQUENCE ID_CLI_SEQ INCREMENT BY 3 START WITH 10 MAXVALUE 1000 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - NEXTVAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - CURRVAL LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES INSERT INTO CLIENTE VALUES (ID_CLI_SEQ.NEXTVAL , 'Casa Tombo', 6) VAI INSERIR 16 NO ID LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - PARTICULARIDADES A sequence é incrementada independente da transação ter sido efetivada (Commit) ou não (Rollback) o que pode gerar perda de valores. Não utilizar em aplicações que manipulam dados fiscais como emissão de Notas Fiscais. Da mesma forma que usuários acessam a mesma sequence, estes podem receber valores intercalados, visto que num dado momento a sequence poderá estar atendendo um número para cada um. Dois usuários jamais conseguirão gerar o mesmo número sobre uma mesma sequence. Os valores que estão no CACHE (memória) são perdidos caso o banco de dados sofra uma interrupção anormal. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - PARTICULARIDADES Regras para Utilização de NEXTVAL e CURRVAL NEXTVAL e CURRVAL podem ser usados: Numa cláusula SELECT em tabelas (exceto em Views) Na cláusula VALUES de um comando INSERT Na cláusula SET de um comando UPDATE No SELECT da query principal de uma construção com subqueries . LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - PARTICULARIDADES Restrições para Utilização de NEXTVAL e CURRVAL NEXTVAL e CURRVAL não podem ser usados: Dentro de uma lista de colunas de um comando SELECT de uma View Com as cláusulas ORDER BY, GROUP BY ou HAVING de um comando SELECT Com operadores de conjuntos UNION, INTERSECT e MINUS Dentro de uma subconsulta . LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO ALTER SEQUENCE <sequence_name> [INCREMENT BY n ] [MAXVALUE n I NOMAXVALUE] [MINVALUE n I NOMINVALUE] ........... Controles sobre Sequences Alteradas Serão afetados apenas os números a serem gerados. Algumas validações serão feitas como um novo valor MAXVALUE, não poderá ser definido se menor que o último número gerado. A cláusula START WITH, não poderá ser alterada, neste caso, a sequence deverá ser eliminada e recriada. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO Alter Sequence ID_CLI_SEQ INCREMENT BY 5 LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ALTERANDO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS SEQUENCES - ELIMANDO DROP SEQUENCE ID_CLI_SEQ LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - FUNDAMENTAÇÃO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - PRIMARIO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES – CLUSTERING LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - SECUNDÁRIO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS INDICES - SECUNDÁRIO LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Cluster X Não Cluster LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Cluster X Não Cluster LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Denso e Não Denso LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Multinível LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Multinível LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap Um índice bitmap atribui um “mapa de bits” (bitmap) para cada possível valor de um campo chave Uma matriz é criada com: uma linha para cada linha da tabela e uma coluna para cada valor distinto do atributo escolhido Cada bit no bitmap corresponde ao cruzamento entre um rowid e um valor do campo chave. Se o bit está setado (=1), significa que o registro com o rowid correspondente contém o valor do campo chave LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap Durante o processamento de consultas, o mapa de bits é transferido para a memória Consultas são transformadas para serem processadas por operações booleanas Maior eficiência Eficiência é ainda maior se a tabela consultada possuir múltiplos índices bitmap 1 para cada coluna acessada Cada lista de RowIDs é construída indepedentemente, utilizando os índices bitmap de cada coluna Rotina de merge compara as listas de RowIDs buscando interseções LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices Bitmap LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle Tipos de Índices Único - Garante a unicidade do valor. O Índice criado na Primary Key ou Unique Key, é único, porém podemos criar restrições de unicidade em outras colunas da tabela. Criado automaticamente em PK e UK Não_único - Índices criados apenas com o propósito de acelerar a pesquisa, como em Chaves Estrangeiras (Foreing Key), onde a unicidade não é requerida. Uma Coluna - Apenas uma coluna será indexada. Colunas Compostas ou Concatenadas - Até 255 colunas podem ser concatenadas para formar apenas um índice e não necessitam ser adjacentes. Função – É criado em função de um cálculo feito em uma ou mais colunas. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle CREATE INDEX IND_VEND ON CLIENTE(VENDEDOR) LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Índices - Oracle LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS Próxima Aula Aprender a controlar transações Acessar o dicionário de dados do Oracle. LINGUAGEM SQL IMPLEMENTAÇÃO DE BANCO DE DADOS
Compartilhar