Bom Dia Caros,
Dando continuidade ao nosso roteiro de estudo, iremos falar um pouco mais sobre a instrução SELECT, basicamente como restringir e classificar os dados, como de costume segue a baixo o nosso roteiro dessa etapa de estudo.
Restricting and Sorting Data
(Restringir e Classificar Dados)
Limit the Rows Retrieved by a Query
(Limitar as Linhas Recuperadas por uma Consulta)
Sort the Rows Retrieved by a Query
(Classificar as Linhas Recuperadas por uma Consulta)
Ampersand Substitution
(Substituição Ampersand)
Limitar as Linhas Recuperadas por uma Consulta
- A cláusula WHERE
A cláusula WHERE estende uma instrução SELECT por providenciar uma linguagem para restringir linhas retornadas baseadas em uma ou mais condições. A cláusula WHERE é usada para especificar exatamente quais linhas serão retornadas. O formato de um instrução SQL SELECT com a cláusula WHERE incluída é:
SELECT * | {[DISTINCT] column | expression [alias],…} FROM table [WHERE condition(s)];
A cláusula WHERE sempre segue a cláusula FROM. Uma condição é especificado para comparar dois termos usando um operador condicional. O operador de igualdade é mais comumente usado para restringir conjuntos de resultados.
1. Condições com Base Numérica
Condições devem ser formuladas de forma adequada para os tipos de dados de colunas diferentes. As condições restritivas para linhas com base em colunas numéricas podem ser especificadas de várias maneiras diferentes. Considere a coluna SALARY na tabela EMPLOYEES. A coluna tem um tipo de dados de NUMBER(8,2).
SELECT last_name, salary FROM employees WHERE salary = 10000;
ou
SELECT last_name, salary FROM empoyees WHERE salary = '10000';
A primeira consulta especifica um número 10000, enquanto o segundo abrange o número dentro de aspas simples, como um caractere literal.
2. Condições com Base Caracterio
Condições que determinam as linhas que são selecionados com base em dados de caracteres, são especificados colocando caracteres literais na cláusula condicional, dentro de aspas simples. Exemplo:
SELECT last_name FROM employees WHERE job_id='SA_REP';
Caso você experimente especificar um caracterio literal sem as aspas simples, será retornado um erro (ora-00904: “xxxxx”: INVALID IDENTIFIER). As expressões podem ser formadas por concatenação de valores literais com uma ou mais colunas de caracterios . Exemplo:
SELECT last_name, first_name FROM employees WHERE 'A ' || last_name || first_name = 'A King';
3. Condições com Base Data
Colunas DATE são úteis para armazenar informações de data e hora. Literais de data deve ser colocada entre aspas simples assim como dados de caracteres. caso contrário será gerado um erro. Quando usado na condicional cláusula WHERE, colunas DATE são comparados com outras colunas DATE ou para datas literais. Os literais são automaticamente convertidos para valores DATE baseado no formato de data padrão, que é DD-MON-RR. Considere as seguintes instruções SQL:
SELECT employee_id FROM job_history WHERE start_date = end_date;
SELECT employee_id FROM job_history WHERE start_date = '01-JAN-2001';
SELECT employee_id FROM job_history WHERE start_date = '01-JAN-01';
Aritmética com operadores de adição e subtração são suportados em expressões envolvendo valores DATE.
- Operadores de Comparação
O operador de igualdade é usado extensivamente pra ilustrar o conceito de restrição de linhas usando uma cláusula WHERE. Os operadores de desigualdade como “menor que” ou “maior igual que” pode ser usado para retornar linhas em conformidade com as condições de desigualdade. Ainda temos os operadores BETWEEN, IN, LIKE e IS NULL.
1. Igualdade e Desigualdade
Limitando o retorno de linhas para uma consulta envolve especificamente uma cláusula WHERE adequada. Assim uma condicional é formada usando o operador ” é igual a” (=). Uma linha é retornada se a condição de igualdade for verdadeira para linha. Condições baseadas em desigualdade aumentam as especificações da cláusula WHERE. Os operadores de desigualdade são os seguinte: “Menor que” (<), “Maior que” (>), “Menor ou Igual que” (<=), “Maior ou Igual que” (>=) e “Diferente” (<> ou !=).
2. Comparando Faixas com o Operador BETWEEN
O operador BETWEEN testa se o valor de uma coluna ou expressão falha com uma faixa de fronteira de dois valores. Exemplo:
SELECT last_name FROM employees WHERE salary BETWEEN 3400 AND 4000;
3. Comparando Conjuntos com o Operador IN
O operador IN testa se um item é um membro de um conjunto de valores literais. O conjunto é especificado por uma vírgula separando os literais e englobados por parênteses. Se os literais são valores caracterios ou data, estes devem ser delimitados usando aspas simples. Exemplo:
SELECT last_name FROM employees WHERE salary IN (1000, 4000, 6000);
4. Comparando Padrões com o Operador LIKE
Agora com a introdução do operador LIKE, que é designado exclusivamente para dados de caracterios é providenciado um mecanismo poderoso para busca de letras e palavras. LIKE é acompanhado de dois caracterios coringa: o símbolo de porcentagem (%) e o caracterio de underline (_). O símbolo de porcentagem é usado para especificar zero ou mais caracteres coringas, em quanto o caracterio underline especifica um caracterio coringa.
SELECT first_name FROM employees WHERE first_name LIKE 'A%';
SELECT first_name FROM employees WHERE first_name LIKE 'K_ng';
5. Comparando NULL com o operador IS NULL
Valores NULL inevitavelmente serão necessário busca-los em uma tabela do banco de dados. O operador IS NULL seleciona somente a coluna especifica com valor NULL. Exemplo
SELECT last_name FROM employees WHERE commision_pct IS NULL;
- Operadores Booleanos
Operadores Booleanos (Boolean) ou Lógico (Logical) habilitam múltiplas condições para ser especificada em uma cláusula WHERE de uma instrução SELECT.
1. O Operador AND
O operador AND agrupa condições em uma condição maior à qual uma linha deve obedecer a ser incluído no conjunto de resultados. Operadores booleanos são definidos usando a tabela verdade (truth tables). Se duas condições especificadas em uma cláusula WHERE estão juntas com o operador AND, em seguida, uma linha é testada consecutivamente para a conformidade com ambas as condições antes de ser recuperada. Lembre-se, que quanto mais especifica condições AND, mas restritiva a sua consulta torna-se.
2. O Operador OR
O operador OR separa multiplas condições, pelo menos, um dos quais deve ser satisfeita pela linha selecionada para justificar a inclusão no conjunto de resultados.
3. O Operador NOT
O operador NOT nega os operadores condicionais. A linha selecionada deve estar de acordo com o inverso lógico do estado, a fim de ser incluído no conjunto de resultados. É importante para entender que o operador NOT nega o operador de comparação em uma condição, se é uma igualdade , desigualdade, intervalo com base (BETWEEN), Combinação de padrões (LIKE), membro de conjunto (IN) ou operador de teste NULL . Existe para os operadores regras de precedência, não esqueça de ver a tabela com elas.
Classificar as Linhas Recuperadas por uma Consulta
- A cláusula ORDER BY
A cláusula é responsável por transformar a saída de uma consulta em algo mais amigável classificando os dados. A cláusula ORDER BY é sempre a última cláusula em uma instrução SELECT. O formato de uma cláusula ORDER BY no contexto de uma instrução SQL SELECT é a seguinte:
SELECT * | {[DISTINCT] column | expression [alias], …} FROM table [WHERE condition(s)] [ORDER BY {col(s) | expr | numeric_pos} [ASC|DESC][NULLS FIRST | LAST]];
1. Classificação Ascendente e Descendente
Classificação Ascendente (ASC) é a ordem natural para a maioria dos tipos de dados e, portanto, a ordem de classificação padrão usado sempre que a cláusula ORDER BY é especificada. A palavra chave DESC na cláusula ORDER BY, as linhas retornadas são classificadas em ordem descendente. A palavra chave NULLS LAST, quando especificada, classifica as colunas contendo valores NULL, listando as por último após a classidicação das linhas com valores NOT NULL. A palavra chave NULLS FIRST já faz o inverso colocando as linhas com valores NULL com as primeiras linhas antes das de valores NOT NULL.
2. Classificação Posicional
Classificação posicional aplica-se somente em uma lista do SELECT que tenha um número de posição associado com ele. Exemplo:
SELECT last_name, hire_date, salary FROM employees WHERE job_id IN ('SA_REP', 'MK_MAN') ORDER BY 2;
3. Classificação Composta
O resultado de uma consulta pode ser classificada por mais de uma coluna usando classificação composta. Duas ou mais colunas podem ser especificadas para compor a classificação eles são separados por vírgula em uma cláusula ORDER BY. Exemplo:
SELECT job_id, last_name, salary, hire_date FROM employees WHERE job_id IN ('SA_REP', 'MK_MAN') ORDER BY job_id DESC, last_name, 3 DESC;
Cada coluna envolvida em uma classificação é listada da esquerda para direita em grau de importância separados por vírgula em uma cláusula ORDER BY, incluindo o modificados DESC.
Substituição Ampersand
- Variáveis de Substituição
A chave para entender variáveis de substituição é considerar eles como espaços reservados.
1. Substituição Ampersand Único
O caracterio ampersand (&) é o símbolo escolhido para designar uma variável de substituição em uma instrução e precede o nome da variável sem espaço entre eles. Quando a instrução é executada, o servidor Oracle processa instrução, notifica e substitui a variável e tentativas para resolver este valor variável, em uma de duas maneiras. Primeiro, ele checa se a variável foi definida (defined) em uma sessão de usuário. Se a variável não foi definida, o processo de usuário solicita um valorr para realizar a substituição. Exemplo:
SELECT employee_id, last_name, phone_number FROM employees WHERE last_name = &LASTNAME OR employee_id = &EMPNO;
2. Substituição Ampersand Duplo
Estas são ocasiões que uma variável de substituição é referenciada várias vezes em uma mesma consulta. Isto coloca dois problemas. Primeiro, é ineficiente para entrar o mesmo valor duas vezes, mas o segundo e mais importante, erros tipográficos podem confundir a consulta. Exemplo:
SELECT first_name, last_name FROM employees WHERE last_name LIKE '%&SEARCH%' AND first_name LIKE '%&SEARCH%';
3. Substituindo Nomes de Colunas
SELECT first_name, job_id, &&col FROM employees WHERE job_id iIN ('MK_MAN', 'SA_MAN') ORDER BY &col;
Ao contrário dos literais caracterio e data, referencias para nome de coluna não requerem aspas simples mas tanto quando explicitamente especificado, e quando substituídos por substituição com ampersand.
4. Substituindo Expressões e Texto
Exemplos:
SELECT &rest_of_statement;
ou
SELECT &SELECT_CLAUSE FROM &FROM_CLAUSE WHERE &WHERE_CLAUSE ORDER BY $ORDER_BY_CLAUSE;
- Define e Verify
Substituição ampersand duplo é usado para evitar entradas repetidas quando uma mesma variável ocorre múltiplas vezes em uma mesma instrução. O comando VERIFY é especifico para SQL*Plus .
1. Os comandos DEFINE e UNDEFINE
Felizmente, estas variáveis de sessão podem ser removidas com o comando UNDEFINE. A sua sintaxe é a seguinte:
UNDEFINE variable;
O comando DEFINE serve a dois propósitos. Ele pode ser usado para recuperar um alista de todas as variáveis correntes definidas em sua sessão SQL. Pode também ser usada para explicitamente definir um valor para uma referida variável como uma variável de substituição por um ou mais instruções durante o tempo de vida dessa sessão. Sua sintaxe é a seguinte:
DEFINE;
ou
DEFINE variable=value;
2. O comando VERIFY
O comando VERIFY exibe na tela a variável de substituição, para verificar se a substituição ocorreu corretamente. O comando VERIFY é comutada em ON e OFF com o comando SET VERIFY ON|OFF.
Bom pessoal essa terceira etapa termina aqui, espero que esteja tendo utilidade para vocês, como uma orientação para seus estudos e ate a próxima e bom estudos para todos.