Oracle SQL (Oracle OCA)
Autor: Adriano Angelo | Publicado: 2012-01-12T13:05:00-08:00

A primeira prova OCA envolve SQL, vimos a alguns post's atrás uma introdução, agora vamos ver alguns detalhes do comando SQL. A melhor forma de aprender é exercitando, então aconselho que instalem o Oracle Free e treinem. Caso tenham dúvida sobre comando SQL, recomendo que procurem na internet, vou passar somente algumas particularidades

SELECT:&nbsp; O&nbsp; comando mais simples do SQL é selecionar dados de uma ou mais tabelas do banco
SELECT * |{[DISTINCT]} column expression [alias], … FROM table

Expressão aritmética (+,-,*,/): Regras de precedência:- Multiplicação e divisão ocorrer antes de adição e subtração- Operadores de mesma prioridade são avaliados da direita à esquerda- Os parênteses são usados ​​para substituir a precedência padrão ou para esclarecer a declaração.

Nulo (NULL):- Não é o mesmo que zero ou espaço em branco, é inavaliável, desconhecido ou inaplicável 
- Colunas ou qualquer tipo pode conter nulos, no entanto, alguns contém (não nula e PK). - Por padrão, o SQL Developer utiliza literal, (null), para identificar os valores, no entanto,&nbsp;pode-se configurá-lo para algo mais relevante para você.- Se qualquer coluna em uma expressão aritmética é nula, então o resultado é nulo- Se você tentar executar uma divisão por zero você receber um erro- Se você dividir um número por nulo, o resultado é nulo ou desconhecido 

Concatenação:&nbsp; liga colunas , expressão aritmética ou valores constantes para criar uma expressão de caractere. No exemplo abaixo concatena-se campo nome e sobrenome.select 'Nome: '||nome ||' Sobrenome: '||sobrenome from funcionarioDescribe: Utilizado para descrever um objeto do Oracle (tabela, view, sinônimo, função package)String e data: - São case-sensitive e valores de data são sensíveis ao formato- Devem sero colocados entre aspas simples ('')- O formato padrão de exibição de data é DD-MON-RR, datas loja em formato numérico interno, representando o século, ano, mês, dia, horas, minutos e segundos. Válidas entre 01 de janeiro de 4712 aC e 31 de dezembro de 9999 dC
- Permite que você armazene datas do século 21 no século 20 especificando apenas os dois últimos dígitos do ano- Permite que você armazene datas do século 20 no século 21, da mesma forma

Funções de data- data + numero (data) = adiciona numero de dias a data
- data - número (data) = subtrai numero de dias a data
- data - data (número de dias)= subtrai uma data de outra&nbsp; 
- data - numero/24 (data) = adiciona horas a data- MONTS_BETWEEN&nbsp; (MONTS_BETWEEN(’01-SEP-95’,’11-JAN-94’)=19.6774194) Número demeses entre duas datas. O resultado pode ser negativo ou positivo- ADD_MONTHS (ADD_MONTHS(’31-JAN-96’,1)=’29-FEB-96’) Adiciona meses a data- NEXT_DAY (NEXT_DAY(’01-SEP-95’,’FRIDAY’)=’08-SEP-95’) Próximo dia de uma data- LAST_DAY (LAST_DAY(’01-FEB-95’)=’28-FEB-95’) Último dia do mês- ROUND (ROUND (’25-JUL-03’, ‘MONTH’)=’01-AUG-03’ ROUND (’25-JUL-03’, ‘YEAR’)=’01-JAN-04’) Arredonda data. Se o formato for omitido, a data é truncar para o próximo dia
- TRUNC (TRUNC (’25-JUL-03’, ‘MONTH’)=’01-JUL-03’ TRUNC (’25-JUL-03’, ‘YEAR’)=’01-JAN-03’) Trunc e Round:- Se o modelo de formato é mensal, as datas 15/01 resultar no primeiro dia do mês em curso.- Se o modelo de formato é mensal, as datas 16-31 resultado no primeiro dia do mês seguinte- Se o modelo de formato é ano, mês 1-6 resultar em 01 de janeiro do corrente ano.- Se o modelo de formato é ano, mês 7-12 resultado em janeiro do ano que vem
&nbsp; 
Ordenação: a ordenação padrão é crescente- Valores numéricos são exibidos com os valores mais baixos primeiro (1-999)- Valores de data são exibidos com os primeiros valores primeira (01-jan-92 antes de 01-jan-95)- Valores de caracteres são exibidos com a ordem alfabética (A ... Z)- Valores nulos são exibidos durar seqüência e ascendente para descendente primeira seqüência- Pode-se classificar por uma coluna que não está na lista de seleção


Precedência: 
- aritimético - concatenação
- comparação
- [not] null, like, in
- [not]between
- [not]equal
- not
- and
- or

Funções
LOWER: Converte um determinado valor para caixa&nbsp;baixa (ex select lower('Ab') from dual = ab)
UPPER:Converte um determinado valor para caixa alta&nbsp; (ex select lower('Ab') from dual = AB)
INITICAP: Converte o primeiro caracter de um campo para caixa alta (ex select lower('jose da silva') from dual = Jose Da Silva)
SUBSTR: Retorna um caracter em posição especifica (ex: select substr('123456789',2,3) from dual = 234
LENGTH: Retorna o tamanho de um campo (select legth (nome) from usuario where codigo=1=37 (supondo que o nome do usuário 1 tenha 27 caracteres))
INSTR: Retorna posição para um caracter específico (ex: SHOW INSTR('Corporate Floor','or', 3, 2)

from dual = 14
REPLACE: substituí uma série de caracteres

Numéricas 
ROUND: Arredonda&nbsp;(ROUND (45.926,2) = 45.93)
TRUNC:&nbsp;Corta para o número de casas estipulados&nbsp;(TRUNC (45.926,2) = 45.92), pode também ser utilizado para datas, cortando horas por exemplo (data= 21/12/2011 10:15:22 -&gt;&nbsp;trunc(data_x) = 21/12/2011)
MODE: Retorna o resto da divisão (MOD (1600, 300 ) = 100)