You are on page 1of 45

APOSTILA DE ORACLE - SQL

3. Consultas SQL
3.1. SELECT A clusula SELECT recupera informaes de um Banco de Dados, a sua sintaxe apresentada abaixo, bem como suas palavras chaves e parmetros; no entanto abordaremos os mais importantes: As consultas so feitas atravs do comando SELECT, que um dos comandos mais ricos da linguagem, possuindo uma sintaxe ampla que permite diversas opes de pesquisa. SELECT DISTINCT ALL schema . *

, table view snapshot expr c_alias AS


,

.*

FROM schema .

table view snapshot { subquery } dblink t_alias WHERE condition

CONNECT BY condition START WITH condition , GROUP BY expr HAVING condition

UNION SELECT command UNION ALL INTERSECT MINUS

, ORDER BY expr position c_alias ASC DESC

FOR UPDATE OF schema.

, column table. view.

NOWAIT

Verificamos que num comando SELECT, devemos especificar que dados devem ser trazidos, em que tabelas se encontram e, opcionalmente, podemos especificar que condies devem ser satisfeitas para a obteno destes dados. As informaes trazidas do bando de dados podem ser compostas de nomes de colunas, funes ou expresses. 3.2. Palavras Chaves e Parmetros DISTINCT Suprime ocorrncias duplicadas. ALL Mostra todas as linhas mesmo as duplicadas. * Mostra todas as colunas da tabela, view e snapshot na clusula FROM. Table.* View.* Snapshot.* Expr Uma expresso que siga as regras SQL. c_alias Designa um ttulo (alias) para a coluna. opcional usa a clusula AS. O alias pode ser usado na clusula ORDER BY. Schema Indica o schema no qual a table, view ou snapshot pertence. Se omitido o Oracle assume, como sendo seu prprio schema. Table Nome das tabela, views e snapshot das quais sero recuperadas View informaes. Snapshot Dblink o nome completo ou parcial de um banco de dados para conexes remotas. Subquery definido da mesma forma que uma view e seu resultado usado na clusula FROM como se estivssemos usando uma view. t_allias Designa um alias para uma tabela, view ou snapshot, assim pode-se referenciar o alias ao invs do prprio nome da table, view ou snapshot. WHERE Restringe a seleo de linha somente para aquelas onde a condio TRUE. Se omitidas todas as linhas so recuperadas. START WITH Retornam linhas em ordem hierrquica. CONNECT BY GROUP BY Agrupa o resultado da consulta em funo da expr especificada. Como retorno cada linha apresenta um grupo de linhas sumarizadas. HAVING Restringe a seleo de grupos para aquela onde a condio TRUE. UNION Combina linhas de dois SELECT usando um conjunto de operaes. UNION ALL UNION INTERSECT MINUS ORDER BY Ordenam as linhas selecionadas Expr Position A expresso baseada nas colunas em uma table, view ou snapshot. baseada na ordem das colinas na select list.

ASC DESC FOR UPDATE OF NOWAIT

Indica se ordem ascendente ou descendente respectivamente. Trava linhas selecionadas Trava somente as linhas de uma tabela especificada em um join. Retorna o controle para o usurio quando um SELECT tenta travar uma linha que foi travada por outro usurio. Se omitida aguarda at que a linha esteja disponvel e retorna o resultado do SELECT.

3.3. Implementando Clusulas SQL Selecionando todas as colunas de uma tabela: SQL> SELECT * FROM DEPT; DEPTNO ----------------10 20 30 40 DNAME -------------------------ACCOUNTING RESEARCH SALES OPERATIONS LOC -----------------NEW YORK DALLAS CHICAGO BOSTON

Nota: - Justificativa do default de Nome de Coluna: - esquerda: a do tipo data e caracter - direita: dado numrico - por default o nome aparece em caixa alta

Selecionando colunas: SQL> SELECT deptno,dname FROM dept; DEPTNO ----------------10 20 30 40 DNAME -------------------------ACCOUNTING RESEARCH SALES OPERATIONS

Nota: - A ordem das colunas relevante na apresentao do resultado; - As colunas so separadas por vrgulas

3.4. Expresses Aritmticas e Alias Operadores:

Os smbolos indicativos de operaes aritmticas so + (soma), (subtrao), / (diviso) e * (multiplicao) Estes operadores podem ser usados em expresses na clusula Select para definir uma expresso ou na clusula Where para estabelecer uma condio complexa. Precedncia entre os operadores: . * e / tm prioridade sobre + e -; . Operadores de mesma prioridade so efetuados da esquerda para direita.

Alias: Funciona como substituto do nome da coluna, deve estar imediatamente aps o nome da coluna. A clusula AS opcional, e em caso do alias ter espao, usar aspas duplas (). SQL> SELECT empno,sal,12*(sal+100) AS SALARIO_ANUAL FROM emp; EMPNO SAL SALARIO_ANUAL -------------- -------------- --------------------------7369 800 10800 7499 1600 20400 7521 1250 16200 7566 2975 36900 ... 7934 1300 16800 14 rows selected. SQL> SELECT empno,sal,12*(sal+100) AS SALARIO ANUAL (mesmo resultado) Outro exemplo: SQL>SELECT CD_MAT, TO_CHAR(DT_NASC, 'DD/MM/YYYY'), VL_SAL * 1.2 FROM FUNC; Usamos a funo (to_char), uma expresso matemtica (vl_sal*12) e um nome de coluna (cd_mat) na clusula Select.

3.5. Uso deStrings possvel concatenao de strings com o operador ( || ) SQL> SELECT depto|| ||dname , ||loc Departamentos FROM dept; DEPARTAMENTOS

---------------------------------------------------------------10 ACCOUNTING , NEW YORK 20 RESEARCH , DALLAS 30 SALES , CHICAGO 40 OPERATIONS , BOSTON

Nota: .Neste exemplo foi includo na select list um caracter literal, ou seja, a vrgula bem como os espaos foram usados para melhor formatao do resultado, porm no estavam contigo na tabela; .data e caracter literal devem estar entre aspas simples; .cada string de caracter mostrada uma vez para cada ocorrncia (linha).

3.6. Valores Nulos possvel concatenao de strings com o operador ( || ) SQL>SELECT empno,ename,sal*comm/100 Comisso FROM emp; EMPNO ---------------7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 14 rows selected. ENAME ----------------------SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER COMISSO ------------------4800 6250 17500

Nota: .NULL no o mesmo que zero ou espao; .Expresses aritmticas usando NULL retornam NULL;

. comumente usado em ocorrncias de valores NULL, como o SELECT anterior funo: NVL(expr1, expr2), sendo: expr1: a fonte de valores null expr2: o valor a substituir o null Converso para vrios tipos de dados Tipo de Dado NUMBER DATE CHAR VARCHAR2 Exemplo de Converso NVL(number_column,9) NVL(date_column,01-JAN-98) NVL(character_column,Nulo)

OU

SQL>SELECT empno,ename,sal*NVL(comm,0)/100 FROM emp; EMPNO ---------------7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 14 rows selected. ENAME ----------------------SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER SAL* NVL(comm,0)/100 -------------------------------0 4800 6250 0 17500 0 0 0 0 0 0 0 0 0

3.7.Ocorrncias Duplicadas DISTINCT usado para eliminar a duplicao de ocorrncias. Pode ser usada com uma ou mais colunas, sendo que no caso de mais de uma coluna o resultado apresenta a combinao destas. SQL> SELECT depto, job FROM emp;

DEPTNO ---------------20 30 30 20 30 30 10 20 10 30 20 30 20 10 14 rows selected.

JOB ----------------------CLERK SALESMAN SALESMAN MANAGER SALASMAN MANAGER MANAGER ANALYST PRESIDENT SALESMAN CLERK CLERK ANALYST CLERK

SQL>SELECT DISTINCT deptno,job FROM emp; DEPTNO ---------------10 10 10 20 20 20 30 30 30 9 rows selected. JOB ----------------------CLERK MANAGER PRESIDENT ANALYST CLERK MANAGER CLERK MANAGER SALESMAN

SQL> SELECT distinct CD_DEPTO FROM FUNC WHERE IN_SEXO = 'M'; Nota: Com DISTINCT na clusula SELECT as ocorrncias duplicadas foram eliminadas do resultado. 3.8. Usando Clusula ORDER BY ORDER BY usado para apresentar o resultado segundo uma ordenao desejada. Nota: .os valores so ordenados por default de forma ascendente, mas tambm com ordenao descendente e em relao a que colunas (ou expresses) desejamos efetuar.

.os valores null so apresentados por ltimo quando acrescentado ASC na Clusula ORDER BY SQL>SELECT deptno, job Funo, empno, ename FROM Funo; DEPTNO FUNO EMPNO --------------------- -------------------------- ------------------------10 CLERK 7934 10 MANAGER 7782 10 PRESIDENT 7839 20 ANALYST 7788 20 ANALYST 7902 20 CLERK 7369 20 CLERK 7876 20 MANAGER 7566 30 CLERK 7900 30 SALESMAN 7499 30 SALESMAN 7654 30 SALESMAN 7844 30 SALESMAN 7521 14 rows selected. SQL>SELECT deptno, job Funo, empno, ename FROM emp ORDER BY deptno DESC, 4; DEPTNO --------------------30 30 30 30 30 30 20 20 20 20 20 10 10 10 FUNO -------------------------SALESMAN MANAGER CLERK SALESMAN SALESMAN SALESMAN CLERK ANALYST MANAGER ANALYST CLERK MANAGER PRESIDENT CLERK EMPNO ------------------------7499 7698 7900 7654 7844 7521 7876 7902 7566 7788 7369 7782 7839 7934 ENAME -----------------------ALLEN BLAKE JAMES MARTIN TURNER WARD ADAMS FORD JONES SCOTT SMITH CLARK KING MILLER emp ORDER BY 1, ENAME -----------------------MILLER CLARK KING SCOTT FORD SMITH ADAMS JONES JAMES ALLEN MARTIN TURNER WARD

14 rows selected. Nota:

Nos exemplos acima foi utilizado ORDER BY usando o alias e a posio da coluna dentro da select list. Outros exemplos: SQL> SELECT CD_DEPTO, NM_SOBRENOME, VL_SAL FROM FUNC WHERE VL_SAL > 4000 ORDER BY CD_DEPTO ASC, 3 DESC; Neste exemplo, est ordenado por cdigo do departamento ascendentemente e por salrio (terceira coluna da lista de edio) em ordem descendente. SQL> SELECT VL_SAL * 1.1 PROJEO, CD_DEPTO FROM FUNC WHERE VL_SAL > 3000 ORDER BY 2, PROJEO DESC; A ordenao primria feita pela coluna cd_depto (segunda coluna na lista de seleo) sem ter fornecido a indicao Asc ou Desc. SQL> SELECT VL_SAL * 1.1 AS "Novo Salrio", CD_MAT FROM FUNC WHERE VL_SAL > 4000 ORDER BY CD_DEPTO, 1 DESC; A ordenao foi feita pela coluna cd_depto, apesar de esta no estar presente na lista de seleo. SQL> SELECT CD_DEPTO, CD_GERENTE FROM DEPTO ORDER BY 2; Exemplo que ocorre ordenao por uma coluna cujo contedo de alguma (ou algumas linhas ) est ausente. Observa-se que a linha em que o gerente no est definido aparece em ltimo lugar , ou seja, para ordenao ascendente NULL considerado maior valor.

Order by com Nulls First SQL> SELECT CD_DEPTO, CD_GERENTE FROM DEPTO ORDER BY 2 NULLS FIRST;

O uso da clusula Nulls First para que o posionamento das linhas com valores ausentes seja apresentado antes dos demais valores em ordenao. Podemos usar Nulls Last se desejarmos que estas linhas sejam apresentadas aps os demais valores.

3.9. Usando Clusula WHERE WHERE usada para restringir a seleo de linhas. Nota: .a clusula WHERE deve estar aps a FROM; .as condies podem ser: nomes de colunas, expresses, constantes, operaes de comparao, literal; .string de caracteres e datas devem estar entre aspas simples; .valores numricos no podem estar entre aspas simples; .valores caracter so case-sensitive; .o formato padro da data DD-MON-YY. SQL>SELECT deptno, job Funo, empno, ename FROM emp WHERE job = SALESMAN ORDER BY deptno DESC, 4

DEPTNO --------------------30 30 30 30

FUNO -------------------------SALESMAN SALESMAN SALESMAN SALESMAN

EMPNO ------------------------7499 7654 7844 7521

ENAME -----------------------ALLEN MARTIN TURNER WARD

Outros exemplos: SQL> SELECT cd_MAT, to_char(dt_NASC, 'DD/MM/YYYY'), VL_sal * 1.2 FROM fUNc WhErE cD_dEpTO = 'A00'; Neste exemplo s os funcionrios que trabalham no departamento A00 so apresentados no resultado. SQL> select * from func WHERE CD_MAT = 100; Ao utilizarmos * (asterisco), estamos informando que desejamos obter todas as colunas da tabela referenciada na clusula From. Estas colunas so apresentadas na mesma ordem em que foram criadas na tabela correspondente.

3.10. Comparaes e Operadores Lgicos

Operadores de comparao lgica = (igual) > (maior) >= (maior ou igual) < (menor) <= (menor ou igual) <> ( diferente) e!= (diferente) e negativas, != (VAX,UNIX,PC) <> ^= (IBM) Operadores de comparao SQL BETWEEN: este operador compara uma expresso em um intervalo de valores. Pode ser usado na clusula Where juntamente com outras condies. Pode ou no ser precedido por Not BETWEEN ... AND ... IN(val1, val2,...,valn) LIKE IS NULL e negativas, NOT BETWEEN ... AND ... NOT IN(list1,list2,...,listn) NOT LIKE IS NOT NULL Operadores Lgicos Com a palavra And, indicamos restries que devem acontecer simultaneamente, ambas obrigatrias. Com a palavra Or, indicamos restries que podem ou no acontecer simultaneamente. AND OR NOT e negativas, NOT colname =,... Nota: .para comparar um valor conhecido com um valor null, use IS ou NOT NULL. Se voc comparar com qualquer outro operador o valor sempre ser FALSE. Por exemplo, COMM != NULL sempre FALSE, pois um valor null nunca igual a outro valor inclusive a outro null.

Regras de Precedncia

Ordem prioridade 1 2 3

Operadores Todos os operadores de comparao AND OR

Seleciona todos os funcionrios dos departamentos 10 a 30. SQL>SELECT empno,ename,sal,deptno FROM emp WHERE deptno IN (10,30);
EMPNO -----------------7499 7521 7654 7698 7782 7839 7844 7900 7934 ENAME --------------------ALLEN WARD MARTIN BLAKE CLARK KING TURNER JAMES MILLER SAL -----------------------1600 1250 1250 2850 2450 5000 1500 950 1300 DEPTNO --------------------30 30 30 30 10 10 30 30 10

9 rows selected. Seleciona todos os funcionrios dos departamentos entre 10 e 30. SQL>SELECT empno,ename,sal,deptno FROM emp WHERE deptno BETWEEN 10 AND 30;
EMPNO -----------------7369 7499 7521 7566 7654 7698 7782 7788 7839 7844 7876 7900 7902 7934 ENAME --------------------SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KING TURNER ADAMS JAMES FORD MILLER SAL -----------------------800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 950 3000 1300 DEPTNO --------------------20 30 30 20 30 30 10 20 10 30 20 30 20 10

14 rows selected. Outros exemplos:

SQL> SELECT CD_MAT, NM_FUNC, NM_SOBRENOME FROM FUNC WHERE NR_CARGO > 56; SQL> SELECT CD_MAT, NM_FUNC, NR_CARGO FROM FUNC WHERE NOT NR_CARGO > 48; SQL> SELECT CD_MAT, NM_FUNC, CD_DEPTO, NR_CARGO FROM FUNC WHERE CD_DEPTO = 'D11' AND NR_CARGO = 55; ou SQL> SELECT CD_MAT, NM_FUNC, CD_DEPTO, NR_CARGO FROM FUNC WHERE CD_DEPTO = 'A00' OR NR_CARGO = 56; SQL> SELECT CD_MAT, NM_FUNC, CD_DEPTO FROM FUNC WHERE CD_MAT BETWEEN 100 AND 140; Neste exemplo obtido informaes sobre todos os funcionrios que possuam matrcula entre 100 e 140. Obs.: os funcionrios com as matrculas 100 e 140 tambm so includos no resultado. SQL> SELECT CD_MAT, NM_FUNC, CD_DEPTO FROM FUNC WHERE DT_NASC BETWEEN TO_DATE('01011970', 'DDMMYYYY') AND TO_DATE('01011972', 'DDMMYYYY') - 1/86400; Neste exemplo selecionado todos os funcionrios com data de nascimento entre 01/01/70 e 31/12/71. 3.11. Operador SQL LIKE O operador LIKE permite a pesquisa do texto de uma determinada coluna (ou expresso). No operador LIKE, e exclusivamente com ele, os caracteres % (porcentagem) e _ (sublinhado) adquirem significado especial. A porcentagem indica a substituio de um nmero qualquer de caracteres (de 0 a n). J o sublinhado determina a substituio de exatamente um caracter. A sintaxe Not Like tambm permitida. Seleciona todos os nomes que iniciam com a letra A. SQL>SELECT empno,ename,job FROM emp WHERE ename LIKE _A%; Selecione todos os nomes que coincidam com a seqncia A_C e que tenha a letra E. SQL>SELECT empno,ename,job FROM emp WHERE ename LIKE A_C/%E% ESCAPE /; Outros exemplos: SQL> SELECT CD_MAT, NM_FUNC, CD_DEPTO FROM FUNC WHERE NM_FUNC LIKE 'E%' AND CD_DEPTO LIKE 'D_1';

Neste exemplo foram selecionados todos os funcionrios cujo nome comeasse com a letra E e que trabalhassem em um departamento cujo cdigo tivesse trs caracteres, o primeiro fosse D e o terceiro fosse 1. Like com escape SQL> SELECT CD_MAT, CD_DEPTO, TX_MOTIVO FROM HST_PROMO WHERE TX_MOTIVO LIKE '%/%%' ESCAPE '/'; Na clusula LIKE, aparece o caracter porcentagem trs vezes. A primeira e a ltima indicam que pode haver qualquer nmero de caracteres (de 0 a n) antes e depois do texto a ser pesquisado. A segunda, uma vez que precedida pelo caracter de escape (/), indica que este o texto que desejamos pesquisar.

3.12. Usando Funes SQL Existem dois tipos de funes SQL, chamadas: .Single Row Functions: operam somente uma linha e retornam um resultado por linha, sendo: Caracter, Numrico, Data, Converses. Nota: .manipula itens de dados; .aceitam argumentos e retornam um resultado por linha; .operam uma linha por vez e retornam um resultado por linha; .modificam o tipo dos dados; .podem estar aninhados. .Multiple Row Functions: operam grupos de linhas e do um resultado por grupo de linhas. 3.12.1. Single Row Functions 3.12.1.1. Funes Caracter CHR Syntax: CHR(n) Retorna o caracter correspondente a <valor>. Esta transformao pode ser feita de acordo com o charset do banco de dados ou de acordo com o national charset. Se a opo Using Hchar_Cs no for utilizada, a transformao de <valor> no caracter equivalente ser feita de acordo com o charset do banco de dados. Se a opo Using Hchar_Cs for utilizada, a transformao de <valor> no caracter equivalente ser feita de acordo com o national charset. O charset e o national charset so especificados no momento da criao do banco de dados e no podem ser modificados posteriomente. O charset determina o conjunto de

valores vlidos para armazenamento. O national charset determina o conjunto de valores vlidos para colunas do tipo Nchar, Nvarchar,etc. SQL> SELECT CHR(67)||CHR(65)ZZCHR(84) Dog FROM DUAL Dog --CAT CONCAT Syntax: CONCAT(char1, char2) Retorna char1 concatenada com char2. Esta funo equivalente ao uso do operador ( || ). SELECT CONCAT( CONCAT(ename, is a ), job) Job FROM emp WHERE empno = 7900 Job ---------------------------------------JAMES is a CLERK

INITCAP Syntax: INITCAP(char) Retorna char, com a primeira letra de cada palavra em maisculo e as demais em minsculas. O espao em branco determina o trmino de uma palavra e o incio de outra. Podemos utilizar tambm outros caracteres no alfanumricos com este fim. SELECT INITCAP(the soap) Capitals FROM DUAL Capital ----------The Soap Outro exemplo - Chr, Concat e Initcap SQL> SELECT CHR(84) ||CHR(69)||CHR(83)||CHR(84)||CHR(69) "CHR", CONCAT(CONCAT('PRIMEIRO', ' '), 'SEGUNDO' "CONCAT", INITCAP ('PALAVRA SEGUNDA*&^^TERCEIRA') "INITCAP" FROM DUAL; LOWER Syntax: LOWER(char)

Retorna char, com toas as letras em minsculas. O valor de retorno sempre tem o mesmo tipo do argumento char(CHAR ou VARCHAR2). SELECT LOWER(MR. SAMUEL HILLHOUSE) Lowercase FROM DUAL Lowercase ------------------------mr. Samuel hillhouse LPAD Syntax: LPAD(char1,n[,char2]) Retorna char1, completados esquerda com os caracteres definidos em char2 para o comprimento definido por <tamanho> . Caso char2 no seja informado, ser completado com brancos. Se o char1 tiver comprimento maior que o valor de tamanho, a string resultante ser truncada para o comprimento definido por tamanho. SELECT LPAD(Page 1,15,*.) LPAD example FROM DUAL LPAD example ------------------*.*.*.*.*Page 1

LTRIM Syntax: LTRIM(char[,set]) Retorna <char> sem os caracteres presentes em <conjunto>, encontrados esquerda. A busca, que processa da esquerda para a direita, interrompida quando for encontrado o primeiro caracter no pertencente a <conjunto>. Caso <conjunto> no seja fornecido, o caracter pesquisado ser o branco. SELECT LTRIM( xyxXxyLAST WORD,xy) LTRIM example FROM DUAL LTRIM example ----------------------Xxy LAST WORD Outro exemplo Lower, Lpad e Ltrim SQL> SELECT LOWER('TEXTO EXEMPLO') "LOWER", LPAD('EXEMPLO', 10, '@M') "LPAD", LPAD('EXEMPLO', 5) "LPAD", LTRIM('EXEEXEMPLO', 'XE') "LTRIM" FROM DUAL;

REPLACE Syntax: REPLACE(char, search_string[,replacement_string]) Retorna <char> substituindo cada aparecimento de <string1> no <texto> por <string2>. Se <string2> no for informada, cada aparecimento de <string1> em <texto> ser removido. SELECT REPLACE(JACK and JUE,J,BL) Changes FROM DUAL Changes -----------------------BLACK and BLUE RPAD Syntax: RPAD(char1,n[,char2]) Retorna char1, completado direita com os caracteres definidos em <char2> para o comprimento definido por <tamanho>. Caso <char2> no seja informado, ser completado com brancos. Se <texto1> tiver comprimento maior que o valor de <tamanho>, a string resultante ser truncada para o comprimento definido por <tamanho>. SELECT RPAD(ename,12,ab) ename=TURNER RPAD example --------------------TURNERababab RTRIM Syntax: RTRIM[char[,set]) Retorna <chat> sem os caracteres presentes em <conjunto>, encontrados direita. A busca, que se processa da direita para a esquerda, interrompida quando for encontrado o RPAD example FROM emp WHERE

primeiro caracter no pertencente a <conjunto>. Caso <conjunto> no seja fornecido, o caracter pesquisado ser o branco. SELECT RTRIM(TURNERyxXxy,xy) RTRIM e.g. FROM DUAL RTRIM e.g. -----------------TURNERyxX Outro exemplo- Replace, Rpad e Rtrim

SOUNDEX Syntax: SOUNDEX(char) Retorna um conjunto de caracteres que representa o som a palavra. Esta funo retorna a representao fontica para cada palavra permitindo assim comparaes entre palavras de escrita diferentes, mas com o mesmo som. SELECT ename SOUNDEX(SMYTHE) ENAME ----------SMITH FROM emp WHRE SOUNDEX(ename) =

SUBSTR Syntax: SUBSTR(char,m[,n]) Retorna conjunto de caracteres de char, comeando pelo caracter na posio m com tamanho de n caracteres. SELECT SUBSTR(ABCDEFG,3.1,4) Subs FROM DUAL

Subs -------CDEF SELECT SUBSTR(ABCDEFG,-5,4) Subs FROM DUAL Subs -------CDEF

SUBSTRB Syntax: SUBSTRB(char,m[,n]) Executa a mesma operao da funo SUBSTR, diferenciando em funo do charset e da forma de tratamento. Para Substrb a informao fornecida em bytes. SELECT SUBSTR(ABCDEFG,5,4.2) Sub-string with bytes FROM DUAL Sub -------CD

TRANSLATE Syntax: TRANSLATE(char,from,to) Retorna <texto> substituindo cada uma das ocorrncias de <conjunto1> pela ocorrncia correspondente em <conjunto2>. O relacionamento entre os caracteres de <conjunto1> e <conjunto2> posicional. Se o comprimento de <conjunto2> for inferior ao comprimento de <conjunto1>, os caracteres sem correspondncia sero omitidos do resultado. SELECT TRANSLATE(2KRW229,0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ,999 9999999XXXXXXXXXXXXXXXXXXXXXXXXX) License FROM DUAL Translate example ---------------------9XXX99

UPPER Syntax: UPPER(char) Retorna char com todas as letras em caixa alta.

SELECT UPPER(Large) Uppercase FROM DUAL Uppercase ------------LARGE Outro exemplo Translate e Upper SQL> SELECT TRANSLATE('EXEMPLO', 'XPLE', '123') "TRANSLATE", UPPER('texto em maisculas') "UPPER" FROM DUAL;

ASCII Syntax: ASCII(char) Retorna a representao decimal, do caracter char no banco de dados, para o primeiro byte de <texto>. Se o caracter char do banco de dados for ASCII, esta funo retornar um valor ASCII. Se o branco de dados possuir um caracter char EBCDIC, esta funo retornar o valor EBCDIC correspondente. SELECT ASCII(Q) FROM DUAL ASCII(Q) -------------81 Outro exemplo SQL> SELECT ASCII('') FROM DUAL;

"A COM TIL", ASCII('lcool') "A COM ACENTO"

INSTR Syntax: INSTR(char1,char2[n[,m]]) Retorna a posio da ocorrncia de char2 na string de caracteres char1. A pesquisa inicia-se na posio n e caso n seja omitido, assumido o inicio da string. O nmero m especifica qual a ocorrncia que dever ser pesquisada.

SELECT INSTR(CORPORATE FLOOR,OR,3,2) Instring FROM DUAL Instring --------14 SELECT INSTR(CORPORATE FLOOR,OR,-3,2) Reversed Instring FROM DUAL

Reversed Instring --------------------2 Outro exemplo SQL> SELECT INSTR('TEXTO EXEMPLO', 'E') "PRIMEIRO E", INSTR('TEXTO EXEMPLO', 'E', 3) "POSIO 3", INSTR('TEXTO EXEMPLO', 'E', 3, 2) "2A OCORR.", INSTR('TEXTO EXEMPLO', 'E', -6) "POSIO -6", INSTR('TEXTO EXEMPLO', 'E', -6, 2) "2A OCORR." FROM DUAL; INSTRB Syntax: INSTRB(char1,char2[,n[,m]]) O mesmo que INSTR, exceto que n e o valor de retorno so expressos em bytes. SELECT INSTR(CORPORATE FLOOR,OR,5,2) Instring in bytes FROM DUAL Instring in bytes ------------------27

LENGTH Syntax: LENGTH(char) Retorna o tamanho de char em caracteres. SELECT LENGTH(CANDIDE) Length in characters FROM DUAL Length in characters -------------------------7

LENGTHB

Syntax: LENGTHB(char) Similar a funo Length. A diferena ocorre em funo co charset e da forma de tratamento fo tamanho. SELECT LENGTH(CANDIDE) Length in bytes FROM DUAL Length in bytes -------------------------14

3.12.1.2. Funes Data ADD_MONTHS Syntax: ADD_MONTHS(d,n) Retorna a data <data1> adiciona de <meses>. O parmetro <meses> deve ser inteiro, porm pode ser negativo. Se o ms resultante da soma tiver menos dias que o dia calculado ou se o dia fornecido no parmetro <data> corresponder ao ltimo dia do ms, o dia resultante ser o ltimo dia do ms calculado. Caso contrrio, ser exatamente o dia fornecido no parmetro <data1>. SELECT TO_CHAR(ADD_MONTHS(hiredate,1),DD-MON-YYYY) Next Month FROM emp WHERE ename=SMITH Next Month ----------------17-JAN-1981

LAST_DAY Syntax: LAST_DAY(d) Retorna a data do ltimo dia do ms indicado em d. SELECT SYSDATE,LAST_DAY(SYSDATE) Last,LAST_DAY(SYSDATE) SYSDATE Days Left FROM DUAL SYSDATE Last Days Left ------------- -------------- ----10-APR-95 30-APR-95 20

SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(hiredate),5),DD-MONYYYY) Five months FROM emp WHERE ename=MARTIN Five months ----------------28-FEB-1982 SELECT TO_CHAR(ADD_MONTHS(hiredate,1),DD-MON-YYYY) Next month FROM emp WHERE ename=SMITH Next month ----------------17-JAN-1981

MONTHS_BETWEEN Syntax: MONTHS_BETWEEN(d1,d2) Retorna o nmero de meses entre <data1> e <data2> . Se <data1> e <data2> fizerem referncia ao mesmo dia do ms ou ao ltimo dia do ms, o resultado sempre inteiro. Caso contrrio, o Oracle calcula a frao do resultado baseado em meses de 31 dias e considera a diferena de horas entre as datas. SELECT MONTHS_BETWEEN(TO_DATE(02-02-1995,MM-DDYYYY),TO_DATE(01-01-1995,MM-DD-YYYY)) Months FROM DUAL Months -------------1.03225806

NEXT_DAY Syntax: NEXT_DAY(d,char) Retorna a data do prximo dia da semana especificado em d depois do dia indicado em char. SELECT NEXT_DAY( 15-MAR-92,TUESDAY) NEXT DAY FROM DUAL NEXT DAY --------------17-MAR-92

Outro exemplo SQL> SELECT NEXT_DAY('01/01/99', 'SBADO'), NEXT_DAY('17/02/99', 'QUARTA-FEIRA') FROM DUAL;

ROUND Syntax: ROUND(d[,fmt]) Retorna quando usado com o parmetro MONTH, o primeiro dia do ms da quinzena da data referente, se esta estiver na primeira quinzena, caso contrrio, retornar o primeiro dia do prximo ms. Retorna quando utilizado com o parmetro YEAR, o primeiro dia do ano da data referente, se esta estiver no primeiro semestre, caso contrrio retornar o primeiro dia do prximo ano. Quando usado sem parmetro (argumento), retorna data com hora igual a 12:00AM. SELECT ROUND(TO_DATE(27-OCT-92),YEAR) FIRST OF THE YEAR FROM DUAL FIRST OF THE YEAR ---------------------------01-JAN-93 Outro exemplo: SQL>SELECT ROUND(TO_DATE('01/07/1999', 'DD/MM/YYYY'), 'SYEAR') "ANO", ROUND(TO_DATE('16/02/1999', 'DD/MM/YYYY'), 'Q') "QUARTO DE ANO", ROUND(TO_DATE('16/03/1999', 'DD/MM/YYYY'), 'MM') "MS", ROUND(TO_DATE('17/02/1999', 'DD/MM/YYYY'), 'WW') "1. DIA ANO" FROM DUAL / SYSDATE Syntax: SYSDATE Retorna a data e a hora corrente do banco de dados. O formato de apresentao depende do idioma e do territrio em uso na estao do usurio. No afetado pelas modificaes de zona de tempo da sesso do usurio .No pode ser usado em uma CHECK constraint. SELECT TO_CHAR(SYSDATE,MM-DD-YYYY HH24:MI:SS) NOW FROM DUAL NOW -------------------------10-29-1993 20:27:11.

TRUNC Syntax: TRUNC(d[,fmt]) Retorna quando usado com o argumento MONTH o primeiro dia do ms da data referente. Quando usado o argumento YEAR retorna o primeiro dia do ano da data referente. SELECT TRUNC(TO_DATE(27-OCT-92,DD-MM-YY), YEAR) First Of The Year FROM DUAL FIRST OF THE YEAR ---------------------------01-JAN-92

Funes de Converso CHARTOWORD Syntax: CHARTOWORD(char) Converte um valor do tipo CHAR ou VARCHAR2 em tipo ROWID. Ele composto de quatro informaes: data object number (nmero associado a cada segmento do banco de dados), block (bloco de dados do arquivo que contm linha), row (nmero da linha dentro do bloco) e file (indica o arquivo database file onde se acha a linha) SELECT ename FROM CHARTOWORD(0000000F.0003.0002) ENAME ----------SMITH emp WHERE ROWID =

CONVERT Syntax: CONVERT(char,dest_char_set[,source_char_set]) Converte uma string de caracteres de um character set para outro. O character_db corresponde ao charset em que <texto> est armazenado. O valor default o charset do banco de dados.

HEXTORAW Syntax: HEXTORAW(char) Converte char contendo dgito hexadecimal para um valor raw.

INSERT INTO graphics (raw_column) SELECT HEXTORAW(7D) FROM DUAL

RAWTOHEX Syntax: RAWTOHEX(RAW) Converte raw para valor character (char) contendo seu valor hexadecimal equivalente. SELECT RAWTOHEX(raw_column) Graphics FROM graphics Graphics -----------7D Outro exemplo SQL> CREATE TABLE TESTE (IMAGEM RAW(50)); INSERT INTO TESTE (IMAGEM) VALUES(HEXTORAW('7D9A8B')); ROWIDTOCHAR Syntax ROWIDTOCHAR(rowid) Converte um valor ROWID em VARCHAR2. A converso sempre resulta em uma string de 18 posies. SELECT ROWID FROM graphics WHERE ROWIDTOCHAR(ROWID) LIKE %F38% ROWID -------------------------00000F38.0001.0001 Outro exemplo SQL> SELECT ROWIDTOCHAR(ROWID) "ROWIDTOCHAR" FROM DUAL; TO_CHAR (converso de data) Syntax: TO_CHAR(d[,fmt[,nlsparms]]) Converte d do tipo data em um valor do tipo VARCHAR2 no formato especificado por fmt. Caso o formato fmt seja omitido, o formato default usado. SELECT TO_CHAR(HIREDATE, Month DD, YYYY) New date format FROM emp WHERE ename=SMITH

New date format -----------------------December 17, 1980

TO_DATE Syntax: TO_DATE(char[,fmt[,nlsparams]]) Converte char do tipo CHAR ou VARCHAR2 em valor do tipo DATE. O formato indicado por fmt. INSERT INTO bonus (bonus_date) SELECT TO_DATE(January 15, 1989, 11:00 A.M.,Month dd, YYYY, HH:MI A.M., NLS_DATE LANGUAGE=American) FROM DUAL

TO_LABEL Syntax: TO_LABEL(char[,fmt]) Convert char do tipo CHAR ou VARCHAR2 contendo um label no formato especificado pelo parmetro opcional fmt, para um valor do tipo MLSLABEL. Caso o formato fmt seja omitido, usado o formato default.

TO_NUMBER Syntax: TO_NUMBER(char[,fmt[,nlsparams]]) Converte char do tipo CHAR ou VARCHAR2 contendo um nmero no formato especificado pelo opcional fmt em um valor do tipo NUMBER. UPDATE emp SET sal = sal + TO_NUMBER(100.00, 9G999D99) WHERE ename = BLAKE

3.12.1.3 Outras funes GREATEST Syntax: GREATEST(expr[,expr] ...) Retorna a maior expresso dentre as existentes na lista especificada. Todas as expresses aps a primeira so convertidas para o tipo de dado da primeira antes de a comparao ser feita. O Oracle no completa as expresses para que fiquem do mesmo tamanho. Expresses do tipo caracter levaro em considerao o charset do banco de dados.

SELECT GREATEST(HARRY,HARRIOT,HAROLD) GREATEST FROM DUAL GREATEST ---------------HARRY

LEAST Syntax: LEAST(expr[,expr] ...) Retorna a menor expresso dentre as existentes na lista especificada. Todas as expresses aps a primeira so convertidas para o tipo de dado da primeira antes de a comparao ser feita. O Oracle no completa as expresses para que fiquem do mesmo tamanho. Expresses do tipo caracter levaro em considerao o charset do banco de dados. SELECT LEAST(HARRY,HARRIOT,HAROLD) LEAST FROM DUAL GREATEST ---------------HAROLD

NVL Syntax: NVL(expr1,expr2) Se a expresso1 for null retornar expresso2, e caso contrrio ser retornado o prprio valor de expresso1. Preferencialmente as duas expresses devem ser do mesmo tipo. Caso no sejam, o Oracle converter expresso2 para o tipo de expresso1. O tipo de dado retornado ser o tipo de expresso1 (exceto se expresso1for de um dos tipos de dado caracter, pois neste caso o tipo de dado do retorno ser Varchar2). SELECT ename, NVL(TO_CHAR(COMM),NOT APPLICABLE) COMMISSION FROM emp WHERE deptno = 30 ENAME COMMISION ------------------------------------ALLEN 300 WARD 500 MARTIN 1400 BLAKE NOR APPLICABLE TURNER 0 JAMES NOT APPLICABLE

UID Syntax: UID Retorna um inteiro, o qual identifica de forma nica o usurio corrente.

USER Syntax: USER Retorna o usurio corrente. do tipo VARCHAR2. SELECT USER, UID FROM DUAL USER UID ------------------------ ------OPS$BQUIGLEY 46 Outro exemplo Nvl, Uid e User SQL> SELECT NVL(NULL, 'VALOR') "NULL", NVL(123, 456) "COM VALOR", UID, USER FROM DUAL; VSIZE Syntax: VSIZE(expr) Retorna o nmero de bytes na representao interna de expr. Se expr for null a funo retornar null. SELECT ename, VSIZE(ename) BYTES FROM emp WHERE deptno = 10 ENAME BYTES ----------- ----------CLARK 5 KING 4 MILLER 6

Funes Numricas ABS Syntax ABS(n) Retorna o valor absoluto de n. SELECT ABS(-15) Absolute

FROM DUAL Absolute -----------15

ACOS Syntax: ACOS(n) Retorna o acro coseno (argumento) informado. O arguemento (<expresso>) deve estar no intervalo de 1 a 1. O resultado ser fornecido em radianos e varia de 0 a p (pi). SELECT ACOS(.3) Arc_Cosine FROM DUAL

Arc_Cosine -------------1.26610367

ASIN Syntax ASIN(n) Retorna o arco do seno (argumento) informado. O argumento (<expresso>) deve estar no intervalo de 1 a 1. O resultante ser fornecido em radianos e varia de p/2 a p/2 (pi / 2). SELECT ASIN(.3) Arc_Sine FROM DUAL Arc_Sine -------------.304962654 Outro exemplo Aos, Asin SQL> SELECT TRUNC(ASIN(0.5) * 57.29578) "ASIN(0.5)", TRUNC(ASIN(1) * 57.29578) "ASIN(1)", TRUNC(ACOS(0.5) * 57.29578) "ACOS(0.5)", TRUNC(ACOS(1) * 57.29578) "ACOS(1)" FROM DUAL; ATAN Syntax ATAN(n)

Retorna o arco da tangente (<expresso>) informado. O resultado ser fornecido em radianos e varia de p/2 a p/2 (pi /2 ). SELECT ATAN(.3) Arc_Tangent FROM DUAL Arc_Tangent ---------------.291456794

ATAN2 Syntax: ATAN2(n, m) Retorna o arco da tangente (<expresso1>/<expresso2>) informada. O resultado ser fornecido em radianos e varia de p a p (pi). Observe que ATAN2 (<expresso1>, <expresso2>) produz o mesmo resultado que ATAN (<expresso1> / <expresso2>). SELECT ATAN2(.3, .2) Arc_Tangent2 FROM DUAL Arc_Tangent2 -----------------.982793723 Outro exemplo Atan e Atan2 SELECT TRUNC(ATAN(0) * 57.29578) "ATAN(0)", TRUNC(ATAN(0.5) * 57.29578) "ATAN(0.5)", TRUNC(ATAN(1) * 57.29578) "ATAN(1)", TRUNC(ATAN2(0,1) * 57.29578) "ATAN2(0,1)", TRUNC(ATAN2(1,2) * 57.29578) "ATAN2(1,2)", TRUNC(ATAN2(1,1) * 57.29578) "ATAN2(1,1)" FROM DUAL / CEIL Syntax: CEIL(n) Retorna o menor inteiro maior ou igual a expresso. SELECT CEIL(15.7) Ceiling FROM DUAL Ceiling --------16

COS Syntax COS(n) Retorna o cosseno da ngulo (<expresso>) informado, o qual deve ser expresso em radianos. SELECT COS(180 * 3.14159265359/180) Cosine of 180 degrees FROM DUAL Cosine of 180 degrees ----------------------------1

COSH Syntax: COSH(n) Retorna o cosseno hiperblico do ngulo (<expresso>) informado, o qual deve ser expresso em radianos. SELECT COSH(0) Hyperbolic cosine of 0 FROM DUAL Hyperbolic cosine of 0 ----------------------------1 Outro exemplo Cos e Cosh SQL> SELECT COS(30/57.29578) "COS(30)", COS(60/57.29578) "COS(60)", COS(0/57.29578) "COS(0)", COSH(30/57.29578) "COSH(30)", COSH(60/57.29578) "COSH(60)", COSH(0/57.29578) "COSH(0)" FROM DUAL; EXP Syntax: EXP(n) Retorna e elevado n-sima potncia (de acordo com o valor do argumento), onde e= 2.71828183... SELECT EXP(4) e to the 4th power FROM DUAL e to 4th power

----------------54.59815 FLOOR Syntax FLOOR(n) Retorna o maior inteiro menor ou igual a expresso. SELECT FLOOR(15.7) Floor FROM DUAL Floor ------15

LN Syntax: LN(n) Retorna o logaritmo natural do argumento, que deve ser maior que zero. SELECT LN(95) Natural log of 95 FROM DUAL Natural log of 95 --------------------4.55387689

LOG Syntax: LOG(m,n) Retorna o logaritmo de <expresso2> na base <expresso1> . A base (<expresso 1>) deve ser qualquer nmero positivo diferente de 0 e 1 e <expresso2> deve ser maior que zero. SELECT LOG(10,100) Log base 10 of 100 FROM DUAL Log bse 10 of 100 ---------------------2 Outro exemplo Floor, Ln e Log SQL> SELECT FLOOR(1.2), FLOOR(-2.5), LN(10.5), LOG(0.5, 10.2) FROM DUAL;

MOD Syntax: MOD(m,n) Retorna o resto da diviso de <expresso1> por <expresso2> . Se o valor do divisor (<expresso2>) for zero, retornar o prprio valor de <expresso1>. SELECT MOD(11,4) Modulus FROM DUAL Modulus ----------3 SELECT m, n, MOD(m,n), m n * FLOOR(m/n) Classical Modulus FROM test_mod_table M ---11 -11 11 -11 N MOD (M,N) Classical Modulus --- ------- -------- ---------------------4 3 4 -3 1 -4 3 -1 -4 -3 -3

POWER Syntax: POWER(m,n) Retorna o valor do primeiro nmero elevado ao segundo nmero (potncia). A base m e o expoente n podem ser qualquer nmero. Porm, se m for negativo, n dever ser inteiro. SELECT POWER(3,2) Raised FROM DUAL Raised --------9 Outro exemplo Mod e Power SQL> SELECT MOD(10,3), MOD(-10, -3), MOD(-3,0), POWER(1.2, 3), POWER(-3,2) FROM DUAL;

ROUND Syntax: ROUND9n[,m])

Retorna <expresso1> arredondado para um determinado nmero (<expresso2>) de posies direita do ponto decimal. Se <expresso2> for omitida, o segundo argumento ser considerado zero. Se <expresso2> for negativa, sero arredondados os dgitos esquerda do ponto decimal. Como restrio temos que <expresso2> deve ser um valor inteiro. SELECT ROUND(15.193,1) Round FROM DUAL Round --------15.2 SELECT ROUND(15.193,-1) Round FROM DUAL Round --------20 Outro exemplo Round SQL> SELECT ROUND(17.654, 2), ROUND(17.654), ROUND(17.654, -1), ROUND(17.654, -2) FROM DUAL; SIGN Syntax: SIGN(n) Retorna o sinal da <expresso> . Desta forma, se a <expresso> for menor que zero, o valor retornado ser 1. se a <expresso> for igual a zero, o valor retornado ser zero e se a <expresso> for maior que zero, o valor retornado ser 1. SELECT SIGN(-15) Sign FROM DUAL Sign -----1

SIN Syntax SIN(n) Retorna o seno do ngulo (<expresso>) informado, o qual deve ser expresso em radianos. SELECT SIN(30*3.14159265359/180) Sine of 30 degrees FROM DUAL

Sine of 30 degrees ----------------------.5

SINH Syntax SINH(n) Retorna o seno hiperblico do ngulo (<expresso>) informado, o qual deve ser expresso em radianos. SELECT SINH(1) Hyperbolic sine of 1 FROM DUAL Hyperbolic sine of 1 -------------------------1.17520119 Outro exemplo Sin e Sinh SQL> SELECT SIN(30/57.29578) "SIN(30)", SIN(60/57.29578) "SIN(60)", SIN(0/57.29578) "SIN(0)", SINH(30/57.29578) "SINH(30)", SINH(60/57.29578) "SINH(60)", SINH(0/57.29578) "SINH(0)" FROM DUAL; SQRT Syntax: SQRT(n) Retorna a raiz quadrada do argumento. A funo retorna um resultado real. O argumento (<expresso>) deve ser positivo. SELECT SQRT(26) Square root FROM DUAL Square root --------------5.09901951

TAN Syntax: TAN(n) Retorna a tangente do ngulo (<expresso>) informado, o qual deve ser expresso em radianos. SELECT RAN(135 * 3.14159265359/180) Tangent of 135 degrees FROM DUAL

Tangent of 135 degrees -----------------------------1

TANH Syntax: TANH(n) Retorna a tangente hiperblica do ngulo (<expresso>) informado, o qual deve ser expresso em radianos. SELECT TANH(.5) Hyperbolic tangent of .5 FROM DUAL Hyperbolic tangent of .5 -----------------------------.462117157 Outro exemplo Tan e Tanh SQL> SELECT TAN(30/57.29578) "TAN(30)", TAN(60/57.29578) "TAN(60)", TAN(45/57.29578) "TAN(45)", TANH(30/57.29578) "TANH(30)", TANH(60/57.29578) "TANH(60)", TANH(0/57.29578) "TANH(45)" FROM DUAL;

TRUNC Syntax: TRUNC(n[,m]) Retorna <expresso1> truncado para um determinado nmero (<expresso2>) de posies direita do ponto decimal. No h arredondamento; as posies superiores ao valor de <expresso2> so apenas omitidas do resultado. Se <expresso2> for omitida, o segundo argumento ser considerado zero. Se <expresso2> for negativa, sero considerados os dgitos esquerda do ponto decimal. Como restrio temos que <expresso2> deve ser um valor inteiro. SELECT TRUNC(15.79,1) Truncate FROM DUAL Truncate ----------15.7 SELECT TRUNC(15.79,-1) Truncate FROM DUAL

Truncate ----------20 3.12.2. Funes de Grupo AVG Syntax AVG([DISTINCT|ALL]n) Retorna a mdia do valor de n. Ela pode ser usada como uma funo de agregao ou analtica. Se a funo for aplicada a um grupamento vazio (sem linhas) o retorno null. SELECT AVG(sal) Average FROM emp Average --------------2077.21429

COUNT Syntax: COUNT({* |[DISTINCT|ALL] expr}) Retorna o nmero de linhas recuperadas do query. Ela pode ser usada como uma funo de agregao ou analtica. SELECT COUNT(*) Total FROM emp Total -------18 SELECT COUNT(job) Count FROM emp Count -------14 SELECT COUNT(DISTINCT job) Jobs FROM emp Jobs -----5

MAX Syntax: MAX([DISTINCT|ALL] expr) Retorna o maior valor de expresso. Pode ser usada como uma funo de agregao ou analtica. SELECT MAX(sal) Maximum FROM emp Maximum -----------5004

MIN Syntax: MIN([DISTINCT|ALL] expr) Retorna o menor valor de expresso. Pode ser usada como uma funo de agregao ou analtica. SELECT MIN(hiredate) Minimum Date FROM emp Minimun Date -----------------17-DEC-80

STDDEV Syntax STDDEV([DISTINCT|ALL] x) Retorna o desvio padro simples da <expresso>. Pode ser usada tanto como funo de agregao como funo analtica. Retorna 0 quando houver apenas uma linha de entrada. O resultado corresponde raiz quadrada da varincia. SELECT STDDEV(sal) Deviation FROM emp Deviation --------------1182.50322

SUM Syntax: SUM([DISTINCT|ALL]n)

Retorna somatrio dos valores de <expresso>. Pode ser usada como funo de agregao ou analtica. SELECT SUM(sal) Total FROM emp Total -------29081

VARIANCE Syntax: VARIANCE([DISTINCT|ALL]x) Retorna varincia dos valores de <expresso>. Pode ser usada como uma funo de agregao ou analtica. O clculo da varincia feito da seguinte forma: IF <quantidade de linhas> = 1 THEN 0 ELSE VAR_SAMP (<expr>) SELECT VARIANCE(sal) Variance FROM emp Variance --------------1389313.87 3.13. Formatao de Dados 3.13.1. Armazenamento de Data no Oracle O Oracle armazena as datas em um formato numrico internamente, representando as seguintes informaes: .Sculo .Ano .Ms .Dia .Hora .Minutos .Segundos O default de display e input para qualquer data DD-MM-YY. As datas devem estar no intervalo entre 01 de janeiro de 4712 a.C. e 31 de dezembro de 4712 d.C. 3.13.2. SYSDATE SYSDATE uma funo data que retorna a data e a hora corrente. Pode ser usada como se fosse um nome de coluna, assim, possvel retornar o valor de SYSDATE

colocando a funo na select list de um SELECT, porm retornar esta informao na mesma quantidade de ocorrncias que a tabela possuir. Desta forma usada uma tabela chamada DUAL. 3.13.3. DUAL O owner da tabela Dual o usurio SYS e pode ser acessada por todos os usurios. Ela contm uma coluna chamada DUMMY, e uma linha com valor X. Assim, esta tabela comumente usada quando se deseja retornar um nico valor. SQL>SELECT SYSDATE FROM DUAL; 3.13.4. Operaes Aritmticas com Datas Operao data + nmero data nmero data data data + nmero/24 Resultado data data nmero de dias data Descrio Adiciona o nmero de dias data. Subtrai o nmero de dias data. Subtrai uma data da outra. Adiciona o nmero de horas data.

.Este SELECT mostrar o nome dos empregados e a quantidade de dias empregados. SQL> SELECT ename, (SYSDATE hiredate)/7 WEEKS FROM emp WHERE deptno = 20;

3.13.5. Elementos para a formatao de Datas Elementos SCC ou CC YYYY ou SYYYY YYY ou YY ou Y Y,YYY IYYY, IYY, IY, I SYEAR ou YEAR BC ou AD B.C. ou A.D. Q MM MONTH MON RM WW ou W DDD ou DD ou D Descrio Sculo; S prefixa data A.C. com Ano. S prefixa data A.C. com ltimos 3, 2, 1 dgitos do ano Ano com vrgula na sua posio 4, 3, 2, 1 dgitos do ano passado no padro ISO Ano por extenso; prefixa data A.C. com Indicador BC/AC Indicador BC/AC com pontos Quarto do ano Ms com 2 dgitos Nome do ms preenchido com brancos at 9 caracteres Nome de ms abreviado com 3 caracteres Ms em nmeros romanos Semana do ano ou ms Dia do ano, ms ou semana.

DAY DY J

Nome do dia preenchido com brancos at 9 caracteres Nome do dia abreviado com 3 letras Dia juliano; nmero de dias desde 31 de dezembro de 4713 A.C.

3.13.6 Elementos para a formatao de Horas Elementos AM ou PM A.M. ou P.M. HH ou HH12 ou HH24 MI SSSSS Descrio Indicador Meridiano Indicador Meridiano com pontos Hora do dia ou hora (0-12) ou hora (0-23) Minuto (0-59) Segundos passados da meio-noite

3.13.7. Outros formatos Elementos /., of the Descrio Pontuao reproduzida no resultado String de caracteres entre aspas reproduzido no resultado.

3.13.8. Especificando sufixos para alterar o display Elementos TH SP SPTH ou THSP Descrio Nmero ordinal ex.: DDTH para 4th Nmero por extenso ex.: DDSP para FOUR Ordinal por extenso: ex.: DDSPTH para FOURTH

3.13.9 Elementos de formato de data RR

Ano Corrente 1994 1994 2001

Data Entregue 27-OCT-95 27-OCT-17 27-OCT-17

Interpretado (RR) 1995 2017 2017

Interpreteado (YY) 1995 1917 2017

3.13.10 Elementos de Formato Numrico Elemento 9 0 $ L . , MI PR EEEE V B Descrio Posio numrica (nmero de 9s determinam o tamanho do display) Mostra zeros Sinal dlar Smbolo do formato Currency local Ponto decimal permanece na posio especificada Vrgula permanece na posio especificada Sinal negativo para valores negativos Parnteses para valores negativos Notao cientfica (formato precisa especificar 4 Es) Mltiplo de 10 n vezes (n-nmero de 9s aps V) Mostra calores zero como brancos Exemplo 999999 099999 $999999 L999999 999999.99 999,999 999999MI 999999PR 99.999EEEE 9999V99 B9999.99 Resultado 1234 001234 $1234 FF1234 1234.00 1,234 1234<1234> 1234E+03 123400 1234.00

You might also like