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
… …
1
2 3 4
6
5
Coluna (PK) Coluna Coluna (FK)
Tupla
Campo
Null
Table name: EMPLOYEES
Table name: DEPARTMENTS
Primary key Primary key Foreign key
…
Cada tupla é identificada unicamente pela Primary Key (PK).
Relacionamos dados de múltiplas tabelas por meio de Foreign Keys (FK).
Instrução SQL é elaborada Instrução é enviada ao
servidor Oracle
Servidor
Oracle
SELECT department_name
FROM departments;
Tabelas Dicionário
de Dados
Servidor Oracle
SELECT
INSERT UPDATE DELETE
MERGE
CREATE
ALTER DROP
RENAME TRUNCATE COMMENT
GRANT REVOKE
COMMIT
ROLLBACK SAVEPOINT
Data Manipulation Language (DML)
Data Definition Language (DDL)
Transaction Control
Data Control Language (DCL)
SQL statements
Query results iSQL*Plus
commands
Client
Formatted report
Internet
browser
Oracle server
SQL iSQL*Plus
É uma linguagem para
comunicação com o servidor
Oracle para acessar dados
Reconhece instruções SQL e as
envia para o servidor Oracle
É baseada no American National
Standards Institute (ANSI)–
standard SQL
É uma interface de propriedade
da Oracle para a execução de
instruções SQL
Recuperação e manipulação de
dados e definições de tabelas no
banco
Não permite a manipulação de
valores no banco de dados
Não tem um caracter de
continuidade
Tem um caracter de continuidade
(_) para o caso de instrução maior
que uma linha
Não pode ser abreviado Pode ser abreviado
Utiliza funções para realizar
alguma formatação
Utiliza comandos para formatar
dados
A partir de um Web Browser, utilizar: ◦ http:<servidor>:<porta>/isqlplus/
Por padrão, a porta utilizada é a 5560
3 4 5
1
2
8 9
7
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
Seleção Projeção
Tabela 1 Tabela 2
Tabela 1 Tabela 1
Join
SELECT *|{[DISTINCT] coluna|expressão [alias],...}
FROM tabela;
SELECT é uma lista de 1 ou mais colunas
* seleciona todas as colunas
DISTINCT não exibe valores duplicados
coluna|expressão seleciona as colunas ou expressão
alias atribui apelido às colunas selecionadas
FROM tabela 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 "Name" , salary*12 "Annual Salary"
FROM employees;
SELECT last_name AS name, commission_pct comm
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;
…
SELECT DISTINCT department_id
FROM employees;
…
1
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”
Top Related