DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS Fábio Roberto Octaviano
Conceitos da arquitetura Oracle e da Linguagem SQL Recuperar dados por meio de SELECT Criar relatórios de dados classificados e restritos Utilização de funções SQL e Manipulação de data/horário Executar instruções DML Operadores ROLLUP, CUBE e GROUPING SETS Consultas hierárquicas / sub-consultas Dicas de otimização de consultas Exemplos / Exercícios Práticos
Apresentar os conceitos básicos de um Modelo Relacional. Comunicação entre um SGBD e SQL. Tipos de Instruções SQL. Apresentar o Oracle isqlplus
Dr. Edgar F. Codd propôs o Modelo Relacional em 1970. É a base para o Sistema de Gerenciamento de Banco de Dados Relacional (SGBD). O modelo é composto por: Coleção de objetos ou relações. Conjunto de operadores para agir sobre as relações. Integridade de Dados (acuracidade e consistência).
Banco de Dados Relacional: coleção de relações ou tabelas em duas dimensões. Servidor Oracle Tabela: EMPLOYEES Tabela: DEPARTMENTS
2 Coluna (PK) Coluna 3 4 Coluna (FK) 5 6 Campo 1 Tupla Null
Cada tupla é identificada unicamente pela Primary Key (PK). Relacionamos dados de múltiplas tabelas por meio de Foreign Keys (FK). Table name: EMPLOYEES Table name: DEPARTMENTS Primary key Foreign key Primary key
Instrução SQL é elaborada SELECT department_name FROM departments; Instrução é enviada ao servidor Oracle Servidor Oracle
Servidor Oracle Tabelas Dicionário de Dados
SELECT INSERT UPDATE DELETE MERGE CREATE ALTER DROP RENAME TRUNCATE COMMENT GRANT REVOKE Data Manipulation Language (DML) Data Definition Language (DDL) Data Control Language (DCL) COMMIT ROLLBACK Transaction Control SAVEPOINT
SQL statements Oracle server Internet browser Client isql*plus commands Formatted report Query results
SQL É uma linguagem para comunicação com o servidor Oracle para acessar dados É baseada no American National Standards Institute (ANSI) standard SQL Recuperação e manipulação de dados e definições de tabelas no banco Não tem um caracter de continuidade Não pode ser abreviado Utiliza funções para realizar alguma formatação isql*plus Reconhece instruções SQL e as envia para o servidor Oracle É uma interface de propriedade da Oracle para a execução de instruções SQL Não permite a manipulação de valores no banco de dados Tem um caracter de continuidade (_) para o caso de instrução maior que uma linha Pode ser abreviado Utiliza comandos para formatar dados
A partir de um Web Browser, utilizar: http:<servidor>:<porta>/isqlplus/ Por padrão, a porta utilizada é a 5560
8 9 7 1 2 3 4 5
Recuperação de Dados por meio de SELECT
Após o término do Capítulo: Listar as capacidades da instrução SELECT Executar comandos SELECT básicos Saber diferenciar instruções SQL e comandos do isqlplus
Projeção Seleção Tabela 1 Tabela 1 Join Tabela 1 Tabela 2
SELECT * {[DISTINCT] coluna expressão [alias],...} FROM tabela; SELECT é uma lista de 1 ou mais colunas * seleciona todas as colunas DISTINCT coluna expressão alias FROM tabela não exibe valores duplicados seleciona as colunas ou expressão atribui apelido às colunas selecionadas especifica a(s) tabela(s) que possui(em) as colunas referenciadas
Selecionando todas as linhas de uma tabela SELECT * FROM departments;
Selecionando colunas específicas SELECT department_id, location_id FROM departments;
Instruções SQL não são case sensitive Instruções SQL podem ser escritas em 1 ou mais linhas Palavras-chave não podem ser abreviadas Cláusulas são normalmente colocadas em linhas distintas (para maior clareza) Identação é importante para uma boa leitura O ; identifica o fim de uma instrução SQL e são utilizados nos editores como o SQLPlus
Exemplo da uma instrução SQL no isqlplus: SELECT last_name, hire_date, salary FROM employees;
Crie expressões com dados numéricos e data por meio de operadores aritméticos Operador Descrição + Add - Subtract * Multiply / Divide
SELECT last_name, salary, salary + 300 FROM employees;
SELECT last_name, salary, 12*salary+100 FROM employees; SELECT last_name, salary, 12*(salary+100) FROM employees;
NULL é um valor que é indisponível, não atribuído ou inaplicável NULL NÃO é o mesmo que 0 ou branco SELECT last_name, job_id, salary, commission_pct FROM employees;
Expressões aritméticas com valores NULL resultam em valores NULL SELECT last_name, 12*salary*commission_pct FROM employees;
O Alias: Renomeia o cabeçalho de uma coluna. É bastante útil com cálculos. É utilizado imediatamente após o nome da coluna Pode ou não ser precedido da palavra-chave AS Exige o uso de se possuir espaços ou caracteres especiais
SELECT last_name AS name, commission_pct comm FROM employees; SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;
Um literal é um caractere, um número ou uma data que é incluída em uma instrução SELECT. Caracteres e datas exigem o uso de A string é saída para cada linha retornada. SELECT last_name ' is a ' job_id AS "Employee Details" FROM employees;
Permite especificar seu próprio delimitador de string. Pode aumentar legibilidade e usabilidade. SELECT department_name q'[, it's assigned Manager Id: ]' manager_id AS "Department and Manager" FROM departments;
A exibição padrão das consultas mostra todas as linhas, inclusive repetições. DISTINCT elimina as linhas duplicadas. SELECT department_id FROM employees; 1 SELECT DISTINCT department_id FROM employees; 2
Objetivos: Selecionar todos os dados de diferentes tabelas Descrever a estrutura de tabelas Executar cálculos matemáticos e utilizar alias Familiarizar-se com o isqlplus
1. Conectar ao isqlplus. 2. Descrever as colunas da tabela Employees. 3. Recuperar o sobrenome, o job_id e o salário dos empregados. 4. Recuperar todos os dados da tabela job_grades. 5. Verificar os 4 erros da instrução SQL abaixo e corrigi-los: SELECT employee_id, last_name sal x 12 ANNUAL SALARY FROM employees;
6. O RH solicita o seguinte relatório: Gerar um arquivo com informações de sobrenome, código da função, data de contratação e número de empregado, com o número de empregado aparecendo em primeiro lugar. Chame a coluna hire_date de Data da Contratação. 7. Salve a consulta gerada como lab_01_07.sql na sua máquina local. 8. Gere uma consulta que mostre todas as funções dos empregados existentes uma única vez. 9. Mostre o nome e sobrenome (separados por um espaço) e concatene com o job_id, separando por uma vírgula. Chame a coluna de Empregado e Título