Dicas de preparao para certificao Selection: para escolher linhas em uma tabela Projection: para escolher colunas em uma tabela Join: pode trazer simultaneamente dados que est armazenado em diferentes tabelas, criando um link entre elas. SELECT: uma lista de uma ou mais colunas. Usa-se para mostrar colunas especficas de uma tabela, especificando os nomes das colunas, separadas por vrgulas FROM: especifica a tabela que contm as colunas. No pode usar operadores numricos na clusula FROM DISTINCT: suprime linhas duplicadas *: seleciona todas as colunas column: seleciona as colunas especficas alias: seleciona colunas com cabealhos diferentes Uma palavra-chave refere-se a um elemento individual SQL. no podem ser separadas em quebra de linhas ou abreviadas, tipicamente so escritas em maisculas; todas as outras palavras, tal como nome de tabelas e colunas so escritas em minsculo. Uma clusula uma parte de um comando SQL. so usualmente colocadas em linhas separadas para facilitar a leitura e edio Um comando a combinao de duas ou mais clusulas. Os comandos SQL no so case sensitive; podem ser escritos em uma ou muitas linhas; Dentro do SQL Plus, um comando SQL escrito no prompt SQL, e as linhas subsequentes so numeradas. Isto chamado de SQL buffer. Somente um comando pode ser corrente por vez no buffer. coloque um ponto-e-vrgula (;) no final da ltima clusula coloque uma barra (/) na ltima linha do buffer usualmente um comando RUN do SQL Plus roda no prompt SQL. Default de cabealho de coluna: Maisculo Default de justificao de coluna: numricos a direita; Data e caracteres a esquerda Cabealho numrico no pode ser truncado O SQL Plus ignora espaos brancos antes e depois dos operadores aritmticos Precedncia de expresses aritmticas: * / + - Precedncia de operadores lgicos: todos os operadores de comparao, NOT, AND e OR Zero nmero, branco caracter. Ambos so diferentes de nulo Para nomear colunas com nomes minsculos, espaos ou caracteres especiais tem que usar aspas duplas Para concatenar colunas usa-se || barras verticais entre os campos Datas e caracteres literais vem entre mas nmero no. Comandos SQL so armazenados no SQL Buffer e comandos do SQL Plus no GET: lista e executa START ou @: executa SPOOL: armazena resultados em um arquivo DESCRIBE mostra a estrutura de uma tabela Operadores de comparao: BETWEEN, IN, LIKE e IS NULL BETWEEN para selecionar uma faixa de valores inclusive IN parte qualquer de uma lista de valores SQL e PL/SQL Oracle by 2 Ten Helena - 2 - LIKE % qualquer seqncia de caracteres LIKE _ um caracter nico Precedncia de operadores: todos os operadores de comparao, NOT, AND, OR AND: requer que ambas as condies so TRUE OR: requer que uma das opes seja TRUE NOT: negao ORDER BY: especifica a ordem na qual as linhas sero retornadas CONCAT: une strings SUBSTR: mostra uma seqncia de caracteres especficas a partir de uma posio especfica LENGTH: informa o numero de caracteres uma string possui INSTR: informa em qual posio especfica est um caracter especfico LPAD: preenche uma quantidade de posies especficas com caracteres especficos justificado a direita RPAD: preenche uma quantidade de posies especficas com caracteres especficos justificado a esquerda TRIM: deleta caracteres especficos de uma string MOD: retorna resto da diviso ROUND: arredonda valores dual TRUNC: trunca valores diferente de round DUAL: tabela do usurio SYS e que todos os usurios tm acesso SYSDATE: funo que retorna a data e hora do sistema e deve ser obtida da tabela DUAL NVL: converte nulo para zero DECODE: funciona como If-Then-Else (ou case) FM: remove espao em branco ou suprime zero. P. 3-29 JOIN: definida na clusula WHERE Equijoin: (ou simple join ou inner join) uma coluna corresponde a uma coluna de outra tabela. Para fazer join com mais de duas tabelas, usa-se o AND No_equijoin: a coluna da tabela da esquerda no corresponde a da tabela direita Outer_join: retorna linhas ausentes na outra tabela. O sinal de adio (+) colocado ao lado do join que no possui as informaes. Esse tipo de relacionamento no pode usar operadores In ou OR Self Join: auto relacionamento GROUP BY: retorna uma linha para cada grupo encontrado. No se pode usar com alias de coluna. Grupos podem ser excludos usando clusula HAVING HAVING: restrio de linha AVG: mdia COUNT: conta linhas COUNT(*): retorna o nmero de linhas em uma tabela, incluindo linhas duplicadas e valores nulos COUNT(expr): retorna o nmero de linhas no nulas em uma tabela, com as colunas identificadas pela (expr) STDDEV: desvio padro SUM: soma VARIANCE: variao de determinado valor DISTINCT: elimina linhas duplicadas Funes AVG, SUM, VARIANCE e STDDEV s podem ser usados com dados numricos. Para essas funes necessrio usar GROUP BY. Em caso de linhas restritas em resultados de um grupo de funo, deve-se usar a clusula HAVING ao invs da clusula WHERE. NVL: fora a incluso de valores nulos A sequncia da clusulas a seguinte: WHERE, GROUP BY E HAVING SQL e PL/SQL Oracle by 2 Ten Helena - 3 - Subquery no pode ter ORDER BY. Quando uma consulta retorna mais que uma linha no se pode usar somente os operadores de comparao comuns (= > < <>) e sim os operadores IN, ANY e ALL ou conjuntamente com os comuns. O operador NOT no pode ser usado juntamente com IN, ANY e ALL. Em caso de subquery, no use NOT IN e sim !=ALL que equivalente. O operador IN equivalente a =ANY ACCEPT: L uma linha inserida pelo usurio e armazenada em uma varivel. DEFINE: cria e especifica um valor para uma varivel. Tipo CHAR. As variveis so vlida apenas para sesso corrente , para que sejam vlidas em todas as sesses necessrio modificar o arquivo login.sql &: opo para o usurio inserir o valor SET VERIFY ON: fora o SQL PLUS a mostrar um valor antes da substituio &&: para usar mais de uma vez o valor de varivel dada pelo usurio HIDE: suprime o valor que o usurio insere. Ex.: o valor de uma senha inserida aparece com caracteres UNDEFINE: para limpar o valor definido com o DEFINE BREAK: suprime valores duplicados TTITLE e BTITLE: cabealho e rodap. Quando o texto tem mais de uma palavra tem que colocar em aspas simples TRANSACTION: coleo de comandos DML DML: para adicionar linhas, modificar linhas e remover linhas em uma tabela DDL: CREATE, TRUNCATE (executam automtico COMMIT) DCL: GRANT, REVOKE (executam automtico COMMIT) INSERT: coloque em aspas simples para tipo de dados caracter e data. Dados numricos no. Para inserir um formato de data que no o default, necessrio usar a funo TO_DATE. UPDATE: modifica linhas DELETE: se omitir a clusula WHERE, todas as linhas. Este comando elimina linhas mas no libera espao. COMMIT: marca a transao como definitiva SAVEPOINT: permite um ROLLBACK at uma marca ROLLBACK: elimina dados pendentes VALUES: Quando junto com INSERT, adiciona apenas uma linha por vez ma tabela. Quando um comando no cabe na mesma linha, deve-se usar um trao para continuar na prxima linha Schema: coleo de objetos DROP: se uma coluna dropada, ela no pode ser recuperada. Este comando elimina linhas e a estrutura da tabela. Quando se dropa uma tabela, os ndices correspondentes so dropados. TRUNCATE: remove linhas e libera espao em disco USER_TABLES: tabelas pertencentes ao usurio USER_OBJECTS: objetos do usurio USER_CATALOG: tabelas, views, sinnimos e sequncias pertencentes ao usurio Se uma tabela j contm linhas quando uma coluna adicionada, a nova coluna inicialmente nula para todas as linhas UNUSED: marcar a coluna como indisponvel Pode ser adicionado uma coluna com o nome de uma coluna UNUSED Tipos de Constraints: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY E CHECK. Uma constraint pode ser adicionada, eliminada ou desabilitada, mas no se pode modificar sua estrutura. Pode ser usado o MODIFY apenas para adicionar uma constraint NOT NULL atravs do comando ALTER TABLE. SQL e PL/SQL Oracle by 2 Ten Helena - 4 - NOT NULL: no pode conter valores nulos. S pode ser especificada a nvel de coluna, de tabela no possvel. UNIQUE: valores devem ser nicos. Quando envolve mais de uma coluna chamada de composite unique key. PRIMARY KEY: identifica unicamente cada linha da tabela. Um index unique automaticamente criado para uma coluna Primary Key FOREIGN KEY (ou referenctial integry constraint): estabelece relacionamentos entre tabelas. REFERENCES: usado com FK identifica a coluna da tabela pai ON DELETE CASCADE: usado com FK permite deleo na tabela pai e das linhas dependentes na tabela filha CHECK: especifica que a condio tem que ser TRUE. No so permitidas referncias a CURRVAL, NEXTVAL, LEVEL e pseudocolunas ROWNUM DISABLE: pode ser usado tanto no comando CREATE TABLE quanto no ALTER TABLE. Usando tambm a clusula CASCADE, desabilitada a integridade das constraints dependentes. Base Tables: so tabelas na qual uma view baseada VIEW: representao lgica de dados de uma ou mais tabelas. Linhas podem ser removidas de uma View, desde que no contenha grupos de funes, a clusula GROUP BY e a pseudocoluna ROWNUM ROWNUM: retorna o nmero de cada linha no Select WITH CHECK POINT OPTION: no permite a criao de linhas que a VIEW no seleciona WITH READ ONLY: view somente para leitura DROP ANY VIEW: para dropar view, mas s permitido aos donos da view ou usurios com acesso DROP ANY VIEW Analysys Top-N: Para consultar os maiores valores. necessrio incluir ROWNUM, ORDER BY, DESC e a clusula WHERE com os operadores ou < ou <=. SEQUENCE: para gerar valores sequenciais nicos. Qdo for usado para PK no deve usar a opo CYCLE. NEXTVAL: retorna o prximo valor da seqncia. CURRVAL: obtm o valor corrente da seqncia Com as pseudocolunas NEXTVAL e CURRVAL, no se pode usar uma lista Select de uma view, um comando Select com DISTINCT, com GROUP BY, com HAVING ou ORDER BY. Tambm no se pode usar em uma subquery com os comandos SELECT, DELETE ou UPDATE, nem a expresso DEFAULT em um CREATE TABLE ou ALTER TABLE. Privilgios tpicos de DBA: CREATE USER, DROP USER, DROP ANY TABLE, BACKUP ANY TABLE Para o desenvolvimento de uma aplicao so necessrios os seguintes privilgios de sistema: Create session, create table, create sequence, create view, create procedure ROLE: um grupo de privilgios que podem ser dados ao usurio GRANT juntamente com WITH GRANT OPTION: permite que o usurio que recebeu estes privilgios repasse para outros. REVOKE: remove privilgios Estrutura de um bloco PL/SQL: Seo Declarativa, seo executvel (mandatria), seo de tratamento de excees. Para encerrar o bloco use um (;). Para rodar o bloco use (/), para fechar o buffer use um ponto(.) Tipos de blocos: anonymous, procedure e function. PROCEDURES e FUNCTIONS: so tambm conhecidos como subprogramas. A diferena entre eles que as Functions retornam valores. SQL e PL/SQL Oracle by 2 Ten Helena - 5 - Programs constructs: anonymous ( acessvel de todos os ambientes PL/SQL), stores procedure (Oracle Server), application procedure ou function (Oracle Developer), packages (Oracle Server e Oracle Developer), database trigger (Oracle Server) e application trigger Oracle Developer) Variveis PL/SQL: Scalar, composite (collections), Reference (ou pointers), LOB (ou Locator) Parmetros de subprogramas: IN, OUT e IN OUT Para inicializar variveis: usar (:=). Por default so inicializadas como NULL. Variveis no podem Ter mais que 30 caracteres, o 1 caracter tem que ser uma letra, o restante podem ser caracteres, letras, nmeros ou smbolos especiais. Tipos scalares: so classificados nas seguintes categorias: number, character, date e boolean. Tipos composite: TABLE, RECORD, NESTED TABLE e VARRAY Tipos LOB: CLOB, BLOB, BFILE e NCLOB Tipos booleanos: TRUE, FALSE e NULL PRINT: no pode ser usado dentro de um bloco PL/SQL Variveis (host)que no so PL/SQL, devem conter no seu prefixo dois-pontos (:) Comentrios: quando estiver em apenas uma linha, usar dois traos (--), quando ocupar mais de uma linha colocar entre os smbolos /* Fmt: o formato usado para converter valores %TYPE: do mesmo tipo Cursor: rea de memria aberta pelo Oracle Server na qual o comando analisado e executado. Podem ser implcitos ou explcitos. Os implcitos o Oracle Server usa para analisar e executar os comandos SQL. Os explcitos so declarados pelo programador. Atributos do cursor: SQL%ROWCONT (n. de linhas afetadas pelo mais recente comando SQL), SQL%FOUND (avalia se afetou uma ou mais linhas), SQL%NOTFOUND (avalia se afetou nenhuma linha), SQL%ISOPEN. Tipos de IF: IF-THEN-END IF; IF-THEN-ELSE-END IF; IF-THEN-ELSIF-END IF; Condies booleanas com Operadores lgicos : AND - retorna TRUE somente se ambos os operadores forem TRUE e o OR retorna FALSE se ambos os operadores forem FALSE. Tipos de LOOP: Basic (aes repetitivas sem condies globais), FOR (controle interativo das aes baseadas em uma conta), WHILE (controle interativo das aes baseadas em uma condio). REVERSE: usado para o loop FOR contar do maior para o menor Tabela PL/SQL: precisa conter uma pk BINARY_INTEGER para indexar a tabela, uma coluna scalar ou do tipo record na qual armazena elementos PL/SQL. A diferena entre o atributo %ROWTYPE e um tipo de dado composite RECORD que este ltimo permite especificar tipos de dados no registro ou declarar campos da qual for dono. Active Set: linhas retornadas de uma consulta de linhas mltiplas Default de OPEN-CURSORS: 50 %ISOPEN: retorna o status do cursor NOWAIT: se a sesso estiver alocada para outro o Oracle retorna erro WHERE CURRENT OF: para referenciar uma linha corrente de um cursor explcito Tipos de excees: Pr-definida pelo Oracle Server, no-pr-definida pelo Oracle Server e definida pelo usurio Erros mais comuns: NO_DATA_FOUND e TOO_MANY_ROWS PRAGMA: tambm chamado pseudoinstructions Funes de excees: SQLCODE: retorna nmero do cdigo do erro e SQLERRM: retorna a mensagem associada ao erro. Procedure de tratamento de erros: usada na seo executvel e na seo de excees. Helenacs@tba.com.br