SQL_2017 1_restringindo_e_classificando_dados
39 pág.

SQL_2017 1_restringindo_e_classificando_dados


DisciplinaBanco de Dados I5.943 materiais57.380 seguidores
Pré-visualização2 páginas
PÓS-GRADUAÇÃOPÓS-GRADUAÇÃO
Restringindo e 
Classificando Dados
Criado em Maio de 2017 Docente: Gil Jader \u2013 gil.jader@gmail.com
2017.1
PÓS-GRADUAÇÃO
\u2022 Ao concluir esta lição, você será capaz de:
\u2013 Limitar as linhas recuperadas por uma consulta
\u2013 Classificar as linhas recuperadas por uma consulta
\u2013 Usar a substituição com E comercial no iSQL*Plus 
para restringir e classificar a saída em runtime
Objetivos
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
Limitando Linhas por Seleção
"recuperar todos
os funcionários do 
departamento 90"
EMPLOYEES
\u2026
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
\u25e6 Restrinja as linhas retornadas com a cláusula WHERE:
\u25e6 A cláusula WHERE é especificada após a cláusula FROM.
Limitando as Linhas Selecionadas
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table
[WHERE condition(s)];
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;
Usando a Cláusula WHERE
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'WHALEN' ;
\u2013 As strings de caracteres e os valores de data são
delimitados por aspas simples.
\u2013 Os valores de caractere fazem distinção entre 
maiúsculas e minúsculas, e os valores de data fazem
distinção de formato.
\u2013 O formato default de data é DD-MON-RR.
\u2013 Por que a consulta abaixo não traz resultados?
Strings de Caracteres e Datas
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen' ;
\u2013 As strings de caracteres e os valores de data são
delimitados por aspas simples.
\u2013 Os valores de caractere fazem distinção entre 
maiúsculas e minúsculas, e os valores de data 
fazem distinção de formato.
\u2013 Corrigindo:
Strings de Caracteres e Datas
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
Condições de Comparação
Diferente de<>
Entre dois valores (inclusivo)BETWEEN
...AND...
Corresponde a qualquer 
valor de uma lista
IN(set)
Corresponde a um padrão 
de caractere 
LIKE
É um valor nulo IS NULL
Menor que <
Menor que ou igual a<=
Maior que ou igual a >=
Maior que >
Igual a=
SignificadoOperador
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
Usando Condições de Comparação
Linguagem SQL \u2013 2017.1
Crie uma consulta para apresentar o sobrenome e o 
salário de todos os funcionários cujo o salário é 
menor ou igual a US$ 3.000. 
Exemplo:
PÓS-GRADUAÇÃO
Usando Condições de Comparação
SELECT last_name, salary
FROM employees
WHERE salary <= 3000 ;
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
\uf07d Use a condição BETWEEN para exibir linhas com base em uma 
faixa de valores:
Usando a Condição BETWEEN
Limite inferior Limite superior
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
Questão:
Linguagem SQL \u2013 2017.1
Como você faria uma consulta para:
Exibir o código dos funcionários, sobrenomes, salários e 
códigos dos gerentes relativos a todos os funcionários cujo 
o código dos gerentes seja 100, 101 ou 201?
PÓS-GRADUAÇÃO
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201) ;
\uf07d Use a condição de associação IN para testar os valores de 
uma lista:
Usando a Condição IN
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
Usando a Condição IN
Linguagem SQL \u2013 2017.1
Observação: Se forem usados caracteres ou datas na lista, 
eles deverão ser delimitados por aspas simples ('').
SELECT employee_id, manager_id, department_id
FROM employees
WHERE last_name IN ('Hartstein', 'Vargas');
Exemplo:
PÓS-GRADUAÇÃO
Linguagem SQL \u2013 2017.1
Nem sempre sabemos o valor exato a ser 
pesquisado. Como selecionar linhas de 
acordo com um determinado padrão?
PÓS-GRADUAÇÃO
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%' ;
\u25e6 Use a condição LIKE para executar pesquisas com 
curinga de valores válidos de strings de pesquisa.
\u25e6 As condições de pesquisa podem conter números 
ou caracteres literais:
\uf096 % indica zero ou vários caracteres.
\uf096 _ indica um caractere.
Usando a Condição LIKE
Linguagem SQL \u2013 2017.1
Observe o S maiúsculo. Os nomes que começam com s não são retornados.
PÓS-GRADUAÇÃO
Usando a Condição LIKE
Linguagem SQL \u2013 2017.1
Crie uma consulta para:
Exibir os sobrenomes e as datas de admissão de todos os funcionários 
admitidos entre janeiro de 1995 e dezembro de 1995. Utilize a condição LIKE.
Exercício:
SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '%95';
PÓS-GRADUAÇÃO
\u2013 Você pode combinar caracteres com padrões
correspondentes:
\u2013 Você pode usar o identificador ESCAPE para 
pesquisar os símbolos % e _ verdadeiros.
Usando a Condição LIKE
SELECT last_name
FROM employees
WHERE last_name LIKE '_o%' ;
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL ;
\uf07d Teste valores nulos com o operador IS NULL.
Usando as Condições NULL
Linguagem SQL \u2013 2017.1
Um valor nulo é aquele que não está disponível nem designado e não é conhecido 
ou aplicável. Portanto, não é possível testá-lo com o operador =, pois não
pode ser igual a um valor ou diferente dele.
PÓS-GRADUAÇÃO
Condições Lógicas
Retornará TRUE se a condição seguinte 
for falsa
NOT
Retornará TRUE se uma das condições 
componentes for verdadeira
OR
Retornará TRUE se as duas condições 
componentes forem verdadeiras
AND
SignificadoOperador
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >=10000
AND job_id LIKE '%MAN%' ;
\uf07d AND exige que as duas condições sejam 
verdadeiras:
Usando o Operador AND
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%' ;
OR exige que uma das condições seja verdadeira:
Usando o Operador OR
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT last_name, job_id
FROM employees
WHERE job_id 
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
Usando o Operador NOT
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
Usando o Operador NOT
Linguagem SQL \u2013 2017.1
Observação: Também é possível usar o operador NOT com outros 
operadores SQL, como BETWEEN, LIKE e NULL.
... WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP')
... WHERE salary NOT BETWEEN 10000 AND 15000
... WHERE last_name NOT LIKE '%A%'
... WHERE commission_pct IS NOT NULL
PÓS-GRADUAÇÃO
Regras de Precedência
Você pode usar parênteses para sobrepor as regras de precedência.
Diferente de6
Condição lógica NOT7
Condição lógica AND8
Condição lógica OR9
IS [NOT] NULL, LIKE, [NOT] IN4
[NOT] BETWEEN5
Condições de comparação3
Operador de concatenação2
Operadores aritméticos1
SignificadoOperador
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
Regras de Precedência
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP'
OR job_id = 'AD_PRES')
AND salary > 15000;
1
2
Linguagem SQL \u2013 2017.1
PÓS-GRADUAÇÃO
\u25e6 Classifique as linhas recuperadas com a cláusula 
ORDER BY:
\uf096 ASC: ordem crescente, default
\uf096 DESC: ordem decrescente
\u25e6 A cláusula ORDER BY é inserida por último na 
instrução SELECT:
Usando a Cláusula ORDER BY
SELECT last_name, job_id, department_id, hire_date
FROM employees