DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Documentos relacionados
DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Usando Subconsultas para Solucionar Consultas

BANCO DE DADOS II LINGUAGEM SQL - STRUCTURED QUERY LANGUAGE. Prof.: Elvis Bloemer Meurer

SQL (Tópicos) Structured Query Language

Uniao Educacional e Tecnologica Impacta- Uni Impacta

Tabelas. Banco de Dados I MySQL

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Prof. Dr. Joaquim Assunção Banco de Dados. SQL (parte 4) DDL Restrições

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Bases de Dados. DDL Data Definition Language

Administração de Banco de Dados

MySql. Introdução a MySQL. Andréa Garcia Trindade

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

Bases de Dados BDDAD. Oracle SQL Comandos. Nelson Freire (ISEP LEI-BDDAD 2017/18) 1/101

Banco de Dados I Introdução SQL

IMPLEMENTAÇÃO DE BANCO DE DADOS

Rápida revisão do Modelo Relacional

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Utilizando o Postgres - comandos SQL para a manipulação de dados

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Banco de Dados. Professora: Luciana Faria

PSI Linguagem de Definição de dados. Módulo 15

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

SQL. Prof. Roger Cristhian Gomes

Oracle Database 11g: Introdução à Linguagem SQL Novo

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Triggers(Gatilhos) Tiago Alves de Oliveira

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Uniao Educacional e Tecnologica Impacta- Uni Impacta

<Course name> <Lesson number>- #

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

Visão & Visão Materializada. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Manipulação de Dados com SQL

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

A linguagem SQL

Introdução ao PostgreSQL

Comandos de Manipulação

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Banco de Dados - Senado

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Structured Query Language (SQL) Aula Prática

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

Controle de transações em SQL

Prova de Tecnologia da Informação

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Sistemas de Banco de Dados I. Escola Alcides Maya DDL - Introdução

Banco de Dados II. Aula do dia 10/03. Revisão. SQL Estudado até o dia 03/03/2011

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Professor Leonardo Larback

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

Prof. Josenildo Silva

Views. uma view é uma tabela virtual. não existe fisicamente na BD. é definida à custa de outras tabelas ou views. CREATE VIEW <nome> AS <query>;

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

PROVA TECNOLOGIA DA INFORMAÇÃO

Ana Cristina de Figueiredo Dornelas SQL E ORACLE 3ª. PARTE

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Introdução à linguagem SQL

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Linguagem SQL. Comandos Básicos

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

Linguagem SQL Restrições, Triggers e Views

EXEMPLOS DE COMANDOS NO SQL SERVER

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

ANEXO B Manual básico de SQL

SQL: Vistas, Indices, Autorização, Restrições

Roteiro. SQL: Visões. Suporte de SQL para OLAP SELECT. Detalhando GROUP BY SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Consultas Avançadas Visões

SQL Linguagem de Definição de Dados

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

Revisão de Bancos de Dados

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

L Q S m e g a u g n Li A

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

Transcrição:

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS Fábio Roberto Octaviano

Criação de Outros Objetos

Após o término do Capítulo: Criar visões simples e complexas. Recuperar dados de visões. Criar, manter e utilizar sequences. Criar e manter índices. Criar sinônimos privados e públicos.

Objeto Tabela Visão Sequence Índice Sinônimo Descrição Unidade básica de armazenamento; composta por linhas. Representa logicamente conjuntos de dados de uma ou mais tabelas. Gera valores numéricos Melhora a performance de consultas. Dá nomes alternativos a objetos.

Tabela EMPLOYEES

Restringir acesso a dados Tornar consultas complexas mais fáceis Prover independência de dados Apresentar visões diferentes dos mesmos dados

Característica Visões Simples Visões Complexas Número de tabelas Uma Uma ou mais Contém funções Não Sim Contém agrupamento de dados Operações DML por meio da visão Não Sim Sim Nem sempre

Sintaxe de criação de Views: CREATE [OR REPLACE] [FORCE NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]]; A subconsulta utilizada para a criação da view pode conter instrução SELECT complexa.

Crie a view EMPVU80, a qual contém detalhes dos empregados do departamento 80: CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; View created. Descreva a estrutura de uma view por meio do comando DESCRIBE do isql*plus: DESCRIBE empvu80

Crie uma view utilizando aliases de colunas na subquery: CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; View created. Selecione as colunas desta view pelos aliases dados.

Uma alternativa de criação para: CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; poderia ser: CREATE VIEW salvu50 (ID_NUMBER, NAME, ANN_SALARY) AS SELECT employee_id, last_name, salary*12 FROM employees WHERE department_id = 50;

SELECT * FROM salvu50;

Modifique a view EMPVU80 utilizando uma cláusula CREATE OR REPLACE VIEW. Adicione um alias para cada nome de coluna: CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name ' ' last_name, salary, department_id FROM employees WHERE department_id = 80; View created.

Crie uma visão complexa que contenha funções de agrupamento para exibir valores de 2 tabelas: CREATE OR REPLACE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary) FROM employees e JOIN departments d ON (e.department_id = d.department_id) GROUP BY d.department_name; View created.

Geralmente é permitido realizar operações DML em visões simples. Não é possível remover uma linha se uma view contém: Funções de Agrupamento. Uma cláusula GROUP BY. A palavra-chave DISTINCT. A palavra chave ROWNUM (pseudo-coluna).

Não é possível modificar dados em uma view se ela contém: Funções de Agrupamento. Uma cláusula GROUP BY. A palavra-chave DISTINCT. A palavra chave ROWNUM (pseudo-coluna). Colunas definidas por expressões.

Não é possível inserir dados em uma view se ela contém: Funções de Agrupamento. Uma cláusula GROUP BY. A palavra-chave DISTINCT. A palavra chave ROWNUM (pseudo-coluna). Colunas definidas por expressões. Colunas NOT NULL nas tabelas bases que não são selecionadas pela view.

Você pode assegurar que operações DML realizadas sobre a view fiquem no domínio da view utilizando a cláusula WITH CHECK OPTION: CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM employees WHERE department_id = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck ; View created. Qualquer tentativa de alterar o número do departamento para qualquer linha falhará porque violará a constraint WITH CHECK OPTION.

Você pode assegurar que operações DML não serão realizadas sobre a view utilizando a cláusula WITH READ ONLY: CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT employee_id, last_name, job_id FROM employees WHERE department_id = 10 WITH READ ONLY ; View created. Qualquer tentativa de executar uma operação DML em qualquer linha da view resultará em um erro no servidor ORACLE.

Você pode remover uma view sem perder dados nas tabelas base que compõem a visão. Sintaxe: DROP VIEW view; Exemplo: DROP VIEW empvu80; View dropped.

Objetivos: Criação de uma visão simples. Criação de uma visão complexa. Criação de uma visão com WITH CHECK OPTION. Tentativa de modificar dados em uma visão. Remoção de visões.

1. O RH deseja esconder alguns dados da tabela EMPLOYEES. Querem uma visão chamada EMPLOYEES_VU que possua os números dos empregados, seus sobrenomes e os números dos departamentos que trabalham. A coluna referente ao sobrenome deve chamar EMPLOYEE. Confirme que a view funcione, mostrando seu conteúdo. CREATE OR REPLACE VIEW employees_vu AS SELECT employee_id, last_name employee, department_id FROM employees; SELECT * FROM employees_vu;

2. Utilizando a visão EMPLOYEES_VU, escreva uma consulta para listar todos os sobrenomes e departamentos. SELECT employee, department_id FROM employees_vu;

3. O departamento 50 precisa de acesso aos dados de seus empregados. Crie uma visão DEPT50 que contenha os números dos empregados, seus sobrenomes e departamentos para todos os empregados do departamento 50. As colunas devem se chamar EMPNO, EMPLOYEE e DEPTNO, respectivamente. Para segurança, não permita que nenhum empregado seja realocado a outro departamento por meio da view criada. Chame a constraint criada de emp_dept_50.

3. Solução: CREATE VIEW dept50 AS SELECT employee_id empno, last_name employee, department_id deptno FROM employees WHERE department_id = 50 WITH CHECK OPTION CONSTRAINT emp_dept_50;

4. Exiba a estrutura da visão DEPT50, e depois todos os seus registros. DESCRIBE dept50 SELECT * FROM dept50; 5. Tente realocar Matos para o departamento 80. Verifique se a operação é ou não bem sucedida. UPDATE dept50 SET deptno = 80 WHERE employee = 'Matos';

Uma sequence: Pode automaticamente gerar números únicos. É um objeto compartilhável. Pode ser utilizado para criar valores em chaves primárias. Substitui código de aplicação. Aumenta a eficiência acesso a valores seqüenciais quando alocados na memória (cache). 1 2 4 3 5 6 8 7 9

Sintaxe: CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n NOMAXVALUE}] [{MINVALUE n NOMINVALUE}] [{CYCLE NOCYCLE}] [{CACHE n NOCACHE}]; Permite especificar valores de incremento, início, máximo e mínimo, se é cíclica e quantos valores são pré-alocados e armazenados em cache pelo Oracle (default=20).

Existem duas pseudo-colunas para utilização em uma sequence: NEXTVAL: retorna o próximo valor seqüencial disponível. Retorna um valor único toda vez que é referenciada, não importa por qual usuário. CURRVAL: obtém o valor atual da sequence. NEXTVAL precisa ser executado para a sequence antes de CURRVAL conter um valor.

Insira uma novo departamento chamado Support no location ID 2500: INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.nextval, 'Support', 2500); 1 row created. Verifique o valor atual da sequence DEPT_DEPTID_SEQ: SELECT FROM dept_deptid_seq.currval dual;

Armazenando valores de uma sequence na memória faz com que obtanhamos acesso mais rápido a esses valores. Vazios (gaps) em valores de sequence ocorrem quando: Um rollback ocorre. O sistema falha (crash). Uma sequence é utilizada em outra tabela.

É possível alterar o valor de incremento, valor máximo, valor mínimo, opções de ciclo ou cache. ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered.

Guias de uso para modificar uma sequence: Você deve ser o dono ou ter privilégio de ALTER para a sequence. Apenas números futuros de uma sequence são afetados. A sequence deve ser eliminada e re-criada para reiniciar a sequence com um valor diferente. Alguma validação é executada (ex: máximo) Para remover uma sequence use o DROP: DROP SEQUENCE dept_deptid_seq; Sequence dropped.

Um índice: É um objeto de esquema (tem dono). Pode ser usado pelo Oracle para acelerar a busca por registros utilizando ponteiros. Pode reduzir I/O utilizando acesso de caminho rápido para localizar dados rapidamente. É independente da tabela que ele indexa (pode ser criado e removido sem afetar a tabela). É utilizado e mantido automaticamente pelo servidor Oracle.

Automaticamente: Um UNIQUE INDEX é criado automaticamente quando você define uma PRIMARY KEY ou UNIQUE constraint em uma tabela. Manualmente:Usuários podem criar índices nonunique em colunas para acelerar a busca.

Crie um índice para uma ou mais colunas: CREATE INDEX index ON table (column[, column]...); Aumente a velocidade de busca para a coluna LAST_NAME da tabela EMPLOYEES: CREATE INDEX emp_last_name_idx ON employees(last_name); Index created.

Crie um índice quando: Uma coluna contiver um range amplo de valores. Uma coluna contiver um grande número de valores NULL. Uma ou mais colunas são frequentemente usadas juntas na cláusula WHERE ou condição de JOIN. Uma tabela é grande e a maioria das consultas esperam receber menos de 10% das linhas da tabela. Não crie índices quando: As colunas não são frequentemente usadas no WHERE. A tabela é pequena ou a maioria das consultas esperam receber mais de 10% das linhas da tabela A tabela sofre updates frequentemente. As colunas indexadas são referenciadas como parte de expressões.

Índices com base em Funções: A expressão utilizada pode ser composta por colunas da tabelas, constantes, funções SQL e UDF. CREATE INDEX upper_dept_name_idx ON dept2(upper(department_name)); Index created. SELECT * FROM dept2 WHERE UPPER(department_name) = 'SALES';

Remova índices do dicionário de dados com DROP: DROP INDEX index; Exemplo: DROP INDEX emp_last_name_idx; Index dropped. Para remover um índice, você deve ser o dono do índice ou ter o privilégio DROP ANY INDEX.

Simplifica o acesso a objetos, dando outro nome a um objeto. Com sinônimos, é possível: Criar uma referência fácil a uma tabela cujo dono seja outro usuário. Conseguir nomes mais curtos a objetos. Sintaxe: CREATE [PUBLIC] SYNONYM synonym FOR object;

Crie um nome mais curto para a visão DEPT_SUM_VU: CREATE SYNONYM d_sum FOR dept_sum_vu; Synonym Created. Elimine um sinônimo com DROP: DROP SYNONYM d_sum; Synonym dropped.

Objetivos: Criação de sequences. Uso de sequences. Criação de índices. Criação de sinônimos.

6. Crie uma sequence que será usada como PK da tabela DEPT. A sequence deve começar com o valor 200 e ter um valor máximo 1000. O incremento a cada valor deve ser 10. Chame a sequence DEPT_ID_SEQ. CREATE SEQUENCE dept_id_seq START WITH 200 INCREMENT BY 10 MAXVALUE 1000;

7. Escreva um script que insira linhas na tabela DEPT. Cretifique-se de usar a sequence criada no exercício anterior para o ID. Adicione 2 departamentos: Education e Administration. Confirme as inserções. INSERT INTO dept VALUES (dept_id_seq.nextval, 'Education'); INSERT INTO dept VALUES (dept_id_seq.nextval, 'Administration');

8. Crie um índice nonunique na coluna NAME da tabela DEPT. CREATE INDEX dept_name_idx ON dept (name);

9. Crie um sinônimo para sua tabela EMPLOYEES. Chame o sinônimo de EMP. CREATE SYNONYM emp FOR EMPLOYEES;