Após o término do Capítulo:
Restringir as linhas que são recuperadas por
uma consulta SQL.
Ordenar as linhas que são recuperadas por
uma consulta SQL.
O uso do & no iSQLPlus para restringir e ordenar dados em tempo de execução.
A restrição de linhas é feita por meio da cláusula WHERE na instrução SQL.
A cláusula WHERE consiste de: ◦ Nome da coluna.
◦ Condição de comparação.
◦ Nome de uma coluna, constante ou lista de valores.
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
Restrição por meio de strings e datas: ◦ Strings e datas devem ser cercados por “’”.
◦ Valores de caracteres são sensitivos a maiúsculo/minúsculo;
◦ Valores de datas são sensitivos ao formato.
◦ O formato de data padrão é 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
>= Maior que ou igual a
< Menor que
<= Menor que ou igual a
<> Diferente de
BETWEEN
...AND...
Entre dois valores (inclusive)
IN(set) Lista de valores
LIKE Busca por um padrão de
caracteres
IS NULL É 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) ;
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
Limite Inferior Limite Superior
BETWEEN:
IS NULL:
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL ;
LIKE: ◦ A busca pode conter tanto caracteres literais ou
números.
◦ % denota zero ou mais caracteres.
◦ _ denota um caractere.
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%' ;
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%' ;
Operator Meaning
AND Retorna TRUE se ambas as
condições forem verdadeiras
OR Retorna TRUE se uma das
condições for verdadeira
NOT Retorna TRUE se a condição base
for falsa
AND:
OR:
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%' ;
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%' ;
NOT:
SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
É possível utilizar parênteses para modificar regras de precedência
Operador Significado
1 Operadores aritméticos
2 Operadores de concatenação
3 Condições de Comparação
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 Diferente de
7 Condição lógica NOT
8 Condição lógica AND
9 Condição lógica OR
SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP'
OR job_id = 'AD_PRES')
AND salary > 15000;
1
2
Serve para ordenar as linhas retornadas numa consulta SQL.
Pode ser de 2 tipos: ◦ ASC: ordem ascendente (padrão)
◦ DESC: ordem descendente
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
Ordenação em ordem descendente:
Ordenação por alias de coluna:
Ordenação por múltiplas colunas:
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ; 1
SELECT employee_id, last_name, salary*12 annsal
FROM employees
ORDER BY annsal ; 2
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
3
Observações sobre a ordenação: ◦ Valores nulos são exibidos no final em ordenações
ascendentes e no início em ordenações descendentes.
◦ É possível ordenar por qualquer coluna da tabela, ainda que a mesma não esteja na cláusula SELECT.
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY employee_id ;
No iSQLPlus são utilizadas para: ◦ Armazenamento temporário de valores com o uso
de & e &&.
Podem ser utilizadas em: ◦ Condições WHERE.
◦ Cláusulas ORDER BY.
◦ Expressões.
◦ Nomes de tabelas.
◦ Instruções SELECT inteiras.
Utilizar uma variável pré-fixada com & para solicitar um valor ao usuário:
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, expressões e condições:
SELECT employee_id, last_name, job_id,&column_name
FROM employees
WHERE &condition
ORDER BY &order_column ;
Utilizar o && para reusar o valor da variável solicitando o valor ao usuário 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 variável.
Utilizar o comando UNDEFINE para remover uma variável.
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 variável antes e depois da substituição feita no iSQLPlus.
old 3: WHERE employee_id = &employee_num
new 3: WHERE employee_id = 200
SET VERIFY ON
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num;
Objetivos:
◦ Selecionar dados e alterar a ordem de exibição.
◦ Restringir linhas com o uso da cláusula WHERE.
◦ Ordenar linhas com o uso da cláusula ORDER BY.
◦ Utilizar variáveis de substituição no iSQLPlus.
1. Devido a problemas de orçamento, o RH precisa de um relatório que exiba os sobrenomes e salários dos empregados que ganham mais que $12.000. Classifique por ordem decrescente do salário.
2. Modifique o exercício anterior para conseguir os salários mais altos e também os mais baixos, selecionando os empregados cujos salários não estão entre a faixa de $5.000 a $12.000 e que são do departamento 20 ou 50. Nomeie as colunas como Empregado e Salário Mensal, respectivamente.
3. Faça um relatório que liste os sobrenomes e as datas de contratação dos empregados contratados em 1999, em ordem crescente de admissão.
4. Faça um relatório que exiba o sobrenome e o cargo dos empregados que não possuem gerente.
5. Faça um relatório dinâmico que mostre o sobrenome e o salário dos empregados que ganhem mais que um valor especificado pelo próprio usuário quando executar o relatório.
6. Crie uma consulta que solicite ao usuário o id de um gerente e selecione o ID, sobrenome, salário e departamento dos empregados subordinados ao gerente informado. Permita ao usuário escolher por qual coluna o relatório será ordenado.
7. Mostre o sobrenome de todos os empregados que possuam um ‘a’ na terceira letra do sobrenome.