DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E … · Restrição por meio de strings e datas:...

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

Transcript of DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E … · Restrição por meio de strings e datas:...

DO BÁSICO AO AVANÇADO PARA

MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS

Fábio Roberto Octaviano

Restringindo e Ordenando Dados

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.

“recupere todos os empregados do departamento 90”

EMPLOYEES

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 ;

... salario = ? …

… departmento = ? …

... sobrenome = ? ...

Quero

consultar

diferentes

valores.

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.