Você está na página 1de 63

DO BSICO AO AVANADO PARA MANIPULAO E OTIMIZAO DE DADOS

Fbio Roberto Octaviano

Conceitos da arquitetura Oracle e da Linguagem SQL Recuperar dados por meio de SELECT

Criar relatrios de dados classificados e restritos


Utilizao de funes SQL e Manipulao de data/horrio Executar instrues DML Operadores ROLLUP, CUBE e GROUPING SETS Consultas hierrquicas / sub-consultas

Tabelas externas
Otimizao de consultas Exemplos / Exerccios Prticos

Apresentar os conceitos bsicos de um Modelo Relacional. Comunicao entre um SGBD e SQL.

Tipos de Instrues SQL.


Apresentar o Oracle iSQLPlus

Dr. Edgar F. Codd props o Modelo Relacional em 1970. a base para o Sistema de Gerenciamento de Banco de Dados Relacional (SGBDR).
O modelo composto por:
Coleo de objetos ou relaes. Conjunto de operadores para agir sobre as relaes. Integridade de Dados (acuracidade e consistncia).

Coluna (PK)

Coluna

Coluna (FK)

5 6
Campo

1
Tupla Null

Instruo SQL elaborada


SELECT department_name FROM departments;

Instruo enviada ao servidor Oracle


Servidor Oracle

Servidor Oracle

Tabelas

Dicionrio de Dados

SELECT INSERT UPDATE DELETE MERGE

Data Manipulation Language (DML)

CREATE ALTER DROP Data Definition Language (DDL) RENAME TRUNCATE COMMENT GRANT REVOKE Data Control Language (DCL)

COMMIT ROLLBACK Transaction Control SAVEPOINT

SQL statements
Internet browser

Oracle server

iSQL*Plus
commands

Query results

Formatted report
Client

SQL uma linguagem para comunicao com o servidor Oracle para acessar dados baseada no American National Standards Institute (ANSI) standard SQL Recuperao e manipulao de dados e definies de tabelas no banco No tem um caracter de continuidade No pode ser abreviado Utiliza funes para realizar alguma formatao

iSQL*Plus Reconhece instrues SQL e as envia para o servidor Oracle uma interface de propriedade da Oracle para a execuo de instrues SQL No permite a manipulao de valores no banco de dados Tem um caracter de continuidade (_) para o caso de instruo maior que uma linha Pode ser abreviado Utiliza comandos para formatar dados

A partir de um Web Browser, utilizar:


http:<servidor>:<porta>/isqlplus/

Por padro, a porta utilizada a 5560

8 7

1 2 3

Recuperao de Dados por meio de SELECT

Aps o trmino do Captulo:


Listar as capacidades da instruo SELECT Executar comandos SELECT bsicos Saber diferenciar instrues SQL e comandos do iSQLPlus

Projeo

Seleo

Tabela 1

Tabela 1

Join

Tabela 1

Tabela 2

SELECT *|{[DISTINCT] coluna|expresso [alias],...} FROM tabela;


uma lista de 1 ou mais colunas seleciona todas as colunas no exibe valores duplicados seleciona as colunas ou expresso atribui apelido s colunas selecionadas especifica a(s) tabela(s) que possui(em) as colunas referenciadas

SELECT * DISTINCT coluna|expresso alias FROM tabela

Selecionando todas as linhas de uma tabela


SELECT * FROM departments;

Selecionando colunas especficas


SELECT department_id, location_id FROM departments;

Instrues SQL no so case sensitive Instrues SQL podem ser escritas em 1 ou mais linhas Palavras-chave no podem ser abreviadas Clusulas so normalmente colocadas em linhas distintas (para maior clareza) Identao importante para uma boa leitura O ; identifica o fim de uma instruo SQL e so utilizados nos editores como o SQLPlus

Exemplo da uma instruo SQL no iSQLPlus:


SELECT last_name, hire_date, salary FROM employees;

Crie expresses com dados numricos e data por meio de operadores aritmticos
Operador + * / Descrio 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 indisponvel, no atribudo ou inaplicvel NULL NO o mesmo que 0 ou branco
SELECT last_name, job_id, salary, commission_pct FROM employees;

Expresses aritmticas com valores NULL resultam em valores NULL


SELECT last_name, 12*salary*commission_pct FROM employees;

O Alias:
Renomeia o cabealho de uma coluna. bastante til com clculos.

utilizado imediatamente aps o nome da coluna


Pode ou no ser precedido da palavra-chave AS

Exige o uso de se possuir espaos 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 nmero ou uma data que includa em uma instruo SELECT.
Caracteres e datas exigem o uso de A string sada para cada linha retornada.
SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees;

Permite especificar seu prprio 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 exibio padro das consultas mostra todas as linhas, inclusive repeties.


DISTINCT elimina as linhas duplicadas.
SELECT department_id FROM employees;

SELECT DISTINCT department_id FROM employees;

Objetivos:
Selecionar todos os dados de diferentes tabelas Descrever a estrutura de tabelas

Executar clculos matemticos e utilizar alias


Familiarizar-se com o iSQLPlus

1. 2. 3. 4. 5.

Conectar ao iSQLPlus. Descrever as colunas da tabela Employees. Recuperar o sobrenome, o job_id e o salrio dos empregados. Recuperar todos os dados da tabela job_grades. Verificar os 4 erros da instruo SQL abaixo e corrigi-los:
SELECT

FROM

employee_id, last_name sal x 12 ANNUAL SALARY employees;

6.

O RH solicita o seguinte relatrio: Gerar um arquivo com informaes de sobrenome, cdigo da funo, data de contratao e nmero de empregado, com o nmero de empregado aparecendo em primeiro lugar. Chame a coluna hire_date de Data da Contratao. Salve a consulta gerada como lab_01_07.sql na sua mquina local. Gere uma consulta que mostre todas as funes dos empregados existentes uma nica vez. Mostre o nome e sobrenome (separados por um espao) e concatene com o job_id, separando por uma vrgula. Chame a coluna de Empregado e Ttulo

7.

8.

9.

Restringindo e Ordenando Dados

Aps o trmino do Captulo:

Restringir as linhas que so recuperadas por uma consulta SQL. Ordenar as linhas que so recuperadas por uma consulta SQL. O uso do & no iSQLPlus para restringir e ordenar dados em tempo de execuo.

EMPLOYEES

recupere todos os empregados do departamento 90

A restrio de linhas feita por meio da clusula WHERE na instruo SQL.


SELECT *|{[DISTINCT] column|expression [alias],...} FROM table [WHERE condition(s)];

A clusula WHERE consiste de:


Nome da coluna. Condio de comparao. Nome de uma coluna, constante ou lista de valores.

Restrio por meio de strings e datas:


Strings e datas devem ser cercados por . Valores de caracteres so sensitivos a maisculo/minsculo; Valores de datas so sensitivos ao formato. O formato de data padro DD-MON-RR.
SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'Whalen' ; SELECT last_name, job_id, department_id FROM employees WHERE hire_date = 10-JUN-99' ;

Operador

Significado

=
>

Igual a
Maior que

>=
< <= <> BETWEEN ...AND... IN(set)

Maior que ou igual a


Menor que Menor que ou igual a Diferente de Entre dois valores (inclusive) Lista de valores

LIKE
IS NULL

Busca por um padro de caracteres


um valor nulo

SELECT last_name, salary FROM employees WHERE salary <= 3000 ;

SELECT employee_id, last_name, salary, manager_id FROM employees WHERE manager_id IN (100, 101, 201) ;

BETWEEN:
SELECT last_name, salary FROM employees WHERE salary BETWEEN 2500 AND 3500 ; Limite Inferior Limite Superior

IS NULL:
SELECT last_name, manager_id FROM employees WHERE manager_id IS NULL ;

LIKE:
A busca pode conter tanto caracteres literais ou nmeros. % denota zero ou mais caracteres. _ denota um caractere.
SELECT FROM WHERE first_name employees first_name LIKE 'S%' ;

SELECT last_name FROM employees WHERE last_name LIKE '_o%' ;

Operator
AND OR NOT

Meaning
Retorna TRUE se ambas as condies forem verdadeiras Retorna TRUE se uma das condies for verdadeira Retorna TRUE se a condio base for falsa

AND:
SELECT FROM WHERE AND employee_id, last_name, job_id, salary employees salary >=10000 job_id LIKE '%MAN%' ;

OR:
SELECT FROM WHERE OR employee_id, last_name, job_id, salary employees salary >= 10000 job_id LIKE '%MAN%' ;

NOT:
SELECT last_name, job_id FROM employees WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;

Operador Significado

1
2

Operadores aritmticos
Operadores de concatenao

3
4 5 6 7 8 9

Condies de Comparao
IS [NOT] NULL, LIKE, [NOT] IN [NOT] BETWEEN Diferente de Condio lgica NOT Condio lgica AND Condio lgica OR

possvel utilizar parnteses para modificar regras de precedncia

SELECT FROM WHERE OR AND

last_name, job_id, salary employees job_id = 'SA_REP' job_id = 'AD_PRES' salary > 15000;

SELECT FROM WHERE OR AND

last_name, job_id, salary employees (job_id = 'SA_REP' job_id = 'AD_PRES') salary > 15000;

Server para ordenar as linhas retornadas numa consulta SQL. Pode ser de 2 tipos:
ASC: ordem ascendente (padro) DESC: ordem descendente
SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY hire_date ;

Ordenao em ordem descendente:


SELECT last_name, job_id, department_id, hire_date FROM employees 1 ORDER BY hire_date DESC ;

Ordenao por alias de coluna:


SELECT employee_id, last_name, salary*12 annsal FROM employees ORDER BY annsal ;

Ordenao por mltiplas colunas:


SELECT last_name, department_id, salary FROM employees ORDER BY department_id, salary DESC;

Observaes sobre a ordenao:

Valores nulos so exibidos no final em ordenaes ascendentes e no incio em ordenaes descendentes. possvel ordenar por qualquer coluna da tabela, ainda que a mesma no esteja na clusula SELECT.
SELECT last_name, job_id, department_id, hire_date FROM employees ORDER BY employee_id ;

... salario = ? departmento = ? ... sobrenome = ? ... Quero consultar diferentes valores.

No iSQLPlus so utilizadas para:


Armazenamento temporrio de valores com o uso de & e &&.

Podem ser utilizadas em:


Condies WHERE. Clusulas ORDER BY. Expresses. Nomes de tabelas. Instrues SELECT inteiras.

Utilizar uma varivel pr-fixada com & para solicitar um valor ao usurio:
SELECT employee_id, last_name, salary, department_id FROM employees WHERE employee_id = &employee_num ;

Utilizar aspas simples () para valores de datas e caracteres:


SELECT last_name, department_id, salary*12 FROM employees WHERE job_id = '&job_title' ;

Especificando nomes de colunas, expresses e condies:


SELECT employee_id, last_name, job_id,&column_name FROM employees WHERE &condition ORDER BY &order_column ;

Utilizar o && para reusar o valor da varivel solicitando o valor ao usurio apenas 1 vez.
SELECT employee_id, last_name, job_id, &&column_name FROM employees ORDER BY &column_name ;

Utilizar o comando DEFINE para criar e atribuir um valor a uma varivel. Utilizar o comando UNDEFINE para remover uma varivel.
DEFINE employee_num = 200 SELECT employee_id, last_name, salary, department_id FROM employees WHERE employee_id = &employee_num ; UNDEFINE employee_num

Utilizar o comando VERIFY para exibir os valores da varivel antes e depois da substituio feita no iSQLPlus.
SET VERIFY ON SELECT employee_id, last_name, salary, department_id FROM employees WHERE employee_id = &employee_num;

old new

3: WHERE 3: WHERE

employee_id = &employee_num employee_id = 200

Objetivos:
Selecionar dados e alterar a ordem de exibio. Restringir linhas com o uso da clusula WHERE.

Ordenar linhas com o uso da clusula ORDER BY.


Utilizar variveis de substituio no iSQLPlus.

1.

Devido a problemas de oramento, o RH precisa de um relatrio que exiba o sobrenome e salrio dos empregados que ganham mais que $12.000. Classifique por ordem decrescente do salrio. Modifique o exerccio anterior para conseguir os salrios mais altos e tambm os mais baixos, selecionando os empregados cujos salrios no esto entre a faixa de $5.000 a $12.000 e que so do departamento 20 ou 50. Nomeie as colunas como Empregado e Salrio Mensal, respectivamente.

2.

3.

Faa um relatrio que liste os sobrenome e a data de contratao dos empregados contratados em 2004, em ordem crescente de admisso.

4.

Faa um relatrio que exiba o sobrenome e o cargo dos empregados que no possuem gerente. Faa um relatrio dinmico que mostre o sobrenome e o salrio dos empregados que ganhem mais que um valor especificado pelo prprio usurio quando executar o relatrio.

5.

6.

Crie uma consulta que solicite ao usurio o id de um gerente e selecione o ID, sobrenome, salrio e departamento dos empregados subordinados ao gerente informado. Permita ao usurio escolher por qual coluna o relatrio ser ordenado. Mostre o sobrenome de todos os empregados que possuam um a na terceira letra do sobrenome.

7.

Você também pode gostar