Escolar Documentos
Profissional Documentos
Cultura Documentos
_________________________________________________________________________________
ÍNDICE
USER_CONS_COLUMNS......................................................................................................................... 63
OUTRAS VISÕES...................................................................................................................................... 64
PSEUDO-COLUNAS................................................................................................................................. 65
ROWNUM E ROWID............................................................................................................................. 66
INSERINDO, ALTERANDO E EXCLUINDO LINHAS.........................................................................67
CONTROLE DE TRANSAÇÕES............................................................................................................ 70
LOCK DE REGISTROS........................................................................................................................... 70
D.D.L. (DATA DEFINITION LANGUAGE).............................................................................................. 72
SCRIPT PARA CRIAÇÃO DE TABELAS E INCLUSÃO DE LINHAS...............................................72
TIPOS DE DADOS.................................................................................................................................... 74
DADOS DO TIPO CARACTER.......................................................................................................... 74
DADOS DO TIPO BINÁRIO............................................................................................................... 74
DADOS DO TIPO NUMÉRICO.......................................................................................................... 74
DADOS DO TIPO DATA..................................................................................................................... 74
CONSTRAINT NOT NULL................................................................................................................... 75
CONSTRAINT PRIMARY KEY............................................................................................................. 76
CONSTRAINT REFERENCES............................................................................................................. 77
CONSTRAINT UNIQUE........................................................................................................................ 78
CONSTRAINT CHECK.......................................................................................................................... 79
EXEMPLOS DE CRIAÇÃO E ALTERAÇÃO EM ESTRUTURA DE TABELAS..................................80
TROCAR NOME DE TABELAS............................................................................................................... 85
EXCLUIR TABELAS................................................................................................................................ 85
SEQUENCES........................................................................................................................................... 86
INDICES.................................................................................................................................................... 88
TRIGGERS............................................................................................................................................... 89
TESTE DE EFICIENCIA DA TRIGGER.................................................................................................. 94
HABILITANDO E DESABILITANDO CONSTRAINTS...........................................................................94
PROCEDURE E FUNCTIONS.............................................................................................................. 95
PACKAGES............................................................................................................................................... 95
CURSOR.................................................................................................................................................... 95
SQL LOADER........................................................................................................................................... 96
DATA BASE LINK......................................................................................................................................... 99
SNAPSHOTS........................................................................................................................................... 99
MASTER TABLE...................................................................................................................................... 99
SNAPSHOTS READ-ONLY.................................................................................................................... 99
SNAPSHOTS UPDATABLE.................................................................................................................... 99
D.C.L. (DATA CONTROL LANGUAGE)................................................................................................ 101
ROLES.................................................................................................................................................... 101
ADMINISTRAÇÃO DE DIREITO DE ACESSO À TABELAS................................................................101
ALTERAR SENHA................................................................................................................................ 102
CRIAR USUÁRIO................................................................................................................................... 102
VIEWS..................................................................................................................................................... 103
SINÔNIMOS (SYNONYM).......................................................................................................................... 104
EXEMPLO DE USO DE VIEW E SYNONYM......................................................................................106
PESQUISANDO AS VIEW S EXISTENTES........................................................................................110
REFERÊNCIAS BIBLIOGRAFICAS........................................................................................................... 111
2
ORACLE – SQLPLUS
_________________________________________________________________________________
INTRODUCAO AO ORACLE
SQL*PLUS
3
ORACLE – SQLPLUS
_________________________________________________________________________________
Permite que tenhamos informações divididas entre diversas tabelas de dados. Certas
informações de uma tabela são obtidas a partir de outras.
4
ORACLE – SQLPLUS
_________________________________________________________________________________
CLIENTE-SERVIDOR
ENTIDADE-RELACIONAMENTO (E-R)
5
ORACLE – SQLPLUS
_________________________________________________________________________________
O MODELO RELACIONAL
A figura abaixo é uma amostra de banco de dados relacional exibindo clientes e as contas
que eles possuem . Ele mostra, pôr exemplo, que o cliente Maria vive em Wolthers em
Maua, e tem duas contas, uma numero 647 com um saldo de $105.366 e a outra número
801 com saldo de 10.533. Observe que os clientes Pedro e Maria dividem a conta 647
(talvez eles possam ser sócios num negócio).
CPF CONTA SALDO
055098762390 900 55.00
065674306845 556 100000.80
006786785857 647 105366.78
006786785857 801 10533.53
ALGEBRA RELACIONAL
Através da Álgebra relacional pode-se obter diferentes visões dos dados distribuídos nas
tabelas, particionando ou combinando-as.
6
ORACLE – SQLPLUS
_________________________________________________________________________________
PRIVILÉGIO
Um privilégio pode ser concedido a um usuário ou a uma role, e a role atribuída a vários
usuários. Alterando a role todos os usuários sentem o reflexo.
SEGURANÇA
AUDITORIA
7
ORACLE – SQLPLUS
_________________________________________________________________________________
8
ORACLE – SQLPLUS
_________________________________________________________________________________
SELECT (SELECIONAR)
INSERT (INCLUIR)
UPDATE (ATUALIZAR)
DELETE (EXCLUIR)
CREATE (CRIAR)
ALTER (ALTERAR)
DROP (EXCLUIR)
GRANT (ASSEGURAR)
REVOKE (REVOGAR)
9
ORACLE – SQLPLUS
_________________________________________________________________________________
ACESSO AO SQL*PLUS
10
ORACLE – SQLPLUS
_________________________________________________________________________________
D.M.L.
11
ORACLE – SQLPLUS
_________________________________________________________________________________
EMP : Funcionários
EMP
CAMPO TIPO / DESCRICAO
TAMANHO
EMPNO (PK) NUMBER(4) Numero de Matricula do Funcionário
ENAME VARCHAR2(10) Nome do Funcionário
JOB VARCHAR2(9) Cargo do Funcionário
MGR NUMBER(4) Numero de Matricula do Chefe
HIREDATE DATE Data de Admissão
SAL NUMBER(7,2) Salário
COMM NUMBER(7,2) Comissão
DEPTNO (FK) NUMBER(2) Numero do Departamento
DEPT
CAMPO TIPO / DESCRICAO
TAMANHO
DEPTNO (PK) NUMBER(2) Numero do Departamento
DNAME VARCHAR2(14) Nome do Departamento
LOC VARCHAR2(13) Localização (Cidade)
SALGRADE
CAMPO TIPO / DESCRICAO
TAMANHO
GRADE NUMBER Grade Salarial (1,2,3....)
LOSAL NUMBER Menor Salário da Faixa
HISAL NUMBER Maior Salário da Faixa
Para Criar esta estrutura de tabelas, com dados, verifique no capitulo sobre D.D.L. (DATA
DEFINITION LANGUAGE) o topico:
12
ORACLE – SQLPLUS
_________________________________________________________________________________
CONSULTAS
SELECT => Lista de colunas separadas por Virgulas ou * para selecionar todas as
colunas
Exemplos:
EXPRESSÕES ARITMÉTICAS
+ Adição
- Subtração
* Multiplicação
/ Divisão
Exemplos:
13
ORACLE – SQLPLUS
_________________________________________________________________________________
- O comando SQL é armazenado em uma parte da memória conhecida como “SQL Buffer”
(Memória auxiliar), lá permanecendo até que um novo comando seja acionado.
14
ORACLE – SQLPLUS
_________________________________________________________________________________
CONFIGURAÇÃO DO SQLPLUS
Show user
user is "ADMSIM"
Show time
time OFF
Show time
time ON
Show time;
Time OFF
15
ORACLE – SQLPLUS
_________________________________________________________________________________
SHOW ALL;
Exibe todos os parametros SET
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "SQL"
tab ON
termout ON
time ON
timing OFF
trimout ON
trimspool OFF
ttitle OFF and is the 1st few characters of the next SELECT statement
underline "-" (hex 2d)
user is "ADMSIM"
verify ON
shiftinout INVISIBLE
wrap : lines will be wrapped
17
ORACLE – SQLPLUS
_________________________________________________________________________________
FORMATANDO COLUNAS
SET UNDERLINE =
DEPARTAMENTO DNAME
============== =======
COLUMN SAL;
Exibe os atributos atuais da coluna
COLUMN SAL ON
FORMAT 99.999
COLUMN
Exibe atributos de todas as colunas
CLEAR COLUMN
Exclui a definição de todas as colunas
18
ORACLE – SQLPLUS
_________________________________________________________________________________
O Apelido da coluna deve ser colocado após o nome da coluna, conforme exemplo a
seguir:
CONCATENAÇÃO
Recurso normalmente empregado para exibir literais junto com o conteúdo de campos ou
ainda para formar um novo conteúdo a partir de partes dos dados dos campos. Exemplo:
Qualquer coluna de uma linha que não contenha dado tem portanto conteúdo nulo.
(Ausência de dado).
Para resolver esse problema utiliza-se a função NVL que converte um valor nulo para um
valor valido. Exemplos: NVL( NULL,0) resulta 0.
NVL(1000,0) resulta 1000.
19
ORACLE – SQLPLUS
_________________________________________________________________________________
Se alterarmos para:
Order by Ename DESC => Exibida em ordem descendente por Ename
Order by Deptno, Cargo => Exibida em ordem de departamento e Cargo (dentro do
Departamento)
Exemplo:
20
ORACLE – SQLPLUS
_________________________________________________________________________________
Operadores Lógicos
= IQUAL A
IN LISTA DE VALORES
<> DIFERENTE
AND E
OR OU
21
ORACLE – SQLPLUS
_________________________________________________________________________________
22
ORACLE – SQLPLUS
_________________________________________________________________________________
23
ORACLE – SQLPLUS
_________________________________________________________________________________
24
ORACLE – SQLPLUS
_________________________________________________________________________________
no rows selected
PROD_CD
--------------------
PL-T18W/2P/82
SQL> l
1 SELECT PROD_CD FROM GER_PRODUTO
2* WHERE PROD_CD = '&CODIGO'
SQL> l1
1* SELECT PROD_CD FROM GER_PRODUTO
SQL> c/cd/cd &formula
1* SELECT PROD_cd &formula FROM GER_PRODUTO
SQL> l
1 SELECT PROD_cd &formula FROM GER_PRODUTO
2* WHERE PROD_CD = '&CODIGO'
25
ORACLE – SQLPLUS
_________________________________________________________________________________
l1
SELECT PROD_cd &formula FROM GER_PRODUTO
c/&/,&
SELECT PROD_cd ,&formula FROM GER_PRODUTO
l
SELECT PROD_cd ,&formula FROM GER_PRODUTO
WHERE PROD_CD = '&CODIGO'
PROD_CD 5*10/2-4+1
-------------------- ----------
PL-T18W/2P/82 22
&& => A variável é solicitada apenas uma vez ficando válida durante toda a
sessão
90
---------
90
26
ORACLE – SQLPLUS
_________________________________________________________________________________
27
ORACLE – SQLPLUS
_________________________________________________________________________________
28
ORACLE – SQLPLUS
_________________________________________________________________________________
ACCEPT
29
ORACLE – SQLPLUS
_________________________________________________________________________________
O Banco Oracle possui uma variável SYSDATE que contem a data e hora corrente, bem
como a variável USER que contem o usuário que esta conectado e uma tabela DUAL que
contem apenas uma linha.
30
ORACLE – SQLPLUS
_________________________________________________________________________________
(Quarto do ano)
Select to_char(sysdate, 'day q dd/mm/yyyy ') from dual
TO_CHAR(SYSDATE,'DAYQDD
-----------------------
friday 1 11/02/2000
select to_char(sysdate, 'ddth ddTh day month MONTH q dd/mm/yyyy ') from dual
TO_CHAR(SYSDATE,'DDTHDDTHDAYMONTHMONTHQDD/MM/YYYY')
----------------------------------------------------
11th 11th friday february FEBRUARY 1 11/02/2000
31
ORACLE – SQLPLUS
_________________________________________________________________________________
32
ORACLE – SQLPLUS
_________________________________________________________________________________
INVE_NR_SERIE INVE_DT_C
-------------------- ---------
SIMULADOR 01-JAN-93
SH_PRECOS 01-JAN-97
PREVISAO_VENDA 01-JAN-98
CREPI 01-JAN-92
CALCULO_CUSTO 01-JAN-93
REL_ORACLE 01-JAN-94
SIST_EXPORTACAO 01-JAN-98
IFIS(MULTI) 01-JAN-98
CARPI 01-MAR-00
EASY 01-JAN-96
TRITON 01-JAN-95
GAT-LINK 01-JAN-96
PONTO_RH 01-JAN-95
IED-SERVIDOR 01-JAN-96
IC400 01-JAN-96
REG_COM 01-JAN-98
BNC 01-JAN-95
B.O. 01-JAN-98
PLANO_EXP 01-JAN-97
SAM_USUARIO 01-JAN-97
SAM_24HS 01-JAN-97
SELECT INVE_NR_SERIE,INVE_DT_COMPRA
FROM INV_INVENTARIO WHERE INVE_DT_COMPRA LIKE '%99%'
INVE_NR_SERIE INVE_DT_C
-------------------- ---------
AVALIACAO_DESEMPENHO 01-JAN-99
CODIGO_BARRAS 01-JAN-99
DOCUM_ISO9000 01-JAN-99
TOOL MANAGER 01-JAN-99
TECNICA 01-JAN-99
DIRETRIZES ADMINISTR 01-JAN-99
CALL MANAGER 01-JAN-99
12NC ORDER BOOK 01-JAN-99
RECEX 01-JAN-99
33
ORACLE – SQLPLUS
_________________________________________________________________________________
SELECT INVE_NR_SERIE,INVE_DT_COMPRA
FROM INV_INVENTARIO
WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MON-YYYY') LIKE '%1999%'
INVE_NR_SERIE INVE_DT_C
-------------------- ---------
AVALIACAO_DESEMPENHO 01-JAN-99
CODIGO_BARRAS 01-JAN-99
DOCUM_ISO9000 01-JAN-99
TOOL MANAGER 01-JAN-99
TECNICA 01-JAN-99
DIRETRIZES ADMINISTR 01-JAN-99
CALL MANAGER 01-JAN-99
12NC ORDER BOOK 01-JAN-99
RECEX 01-JAN-99
9 rows selected.
SELECT INVE_NR_SERIE,INVE_DT_COMPRA
FROM INV_INVENTARIO
WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MON-YYYY') LIKE '%'||&ANO||'%'
SQL> /
INVE_NR_SERIE INVE_DT_C
-------------------- ---------
AVALIACAO_DESEMPENHO 01-JAN-99
CODIGO_BARRAS 01-JAN-99
DOCUM_ISO9000 01-JAN-99
TOOL MANAGER 01-JAN-99
TECNICA 01-JAN-99
DIRETRIZES ADMINISTR 01-JAN-99
CALL MANAGER 01-JAN-99
12NC ORDER BOOK 01-JAN-99
RECEX 01-JAN-99
9 rows selected.
34
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL> /
Enter value for ano: 1997
old 3: WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MON-YYYY') LIKE '%'||&ANO||'%'
new 3: WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MON-YYYY') LIKE '%'||1997||'%'
16 rows selected.
35
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL> RUN
SELECT INVE_NR_SERIE "APLICACAO" ,
INVE_DT_COMPRA "DATA IMPLANTAÇÃO"
FROM INV_INVENTARIO
WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') =
'&INFORME_DATA_DD_MM_AAAA'
Enter value for informe_data_dd_mm_aaaa: 01-01-1998
old 3: WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') =
'&INFORME_DATA_DD_MM_AAAA'
new 3: WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') = '01-01-1998'
16 rows selected.
36
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL> /
Enter value for informe_data_dd_mm_aaaa: 01-01-1999
old 3: WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') =
'&INFORME_DATA_DD_MM_AAAA'
new 3: WHERE TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') = '01-01-1999'
9 rows selected.
SQL> RUN
SELECT INVE_NR_SERIE "APLICACAO",
TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') "DATA IMPLANTACAO"
FROM INV_INVENTARIO
WHERE TO_CHAR(INVE_DT_COMPRA,'YYYY') = '&INFORME_ANO_AAAA'
Enter value for informe_ano_aaaa: 1999
old 4: WHERE TO_CHAR(INVE_DT_COMPRA,'YYYY') = '&INFORME_ANO_AAAA'
new 4: WHERE TO_CHAR(INVE_DT_COMPRA,'YYYY') = '1999'
9 rows selected.
37
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL> /
Enter value for informe_month_dd_yyyy: 01 01,1999
old 4: WHERE INVE_DT_COMPRA = TO_DATE('&INFORME_MONTH_DD_YYYY','MM
DD,YYYY')
new 4: WHERE INVE_DT_COMPRA = TO_DATE('01 01,1999','MM DD,YYYY')
9 rows selected.
SQL> /
9 rows selected.
38
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL> RUN
SELECT INVE_NR_SERIE "APLICACAO",
TO_CHAR(INVE_DT_COMPRA,'DD-MM-YYYY') "DATA IMPLANTACAO"
FROM INV_INVENTARIO
WHERE TO_CHAR(INVE_DT_COMPRA,'MM') = '&INFORME_MES_MM'
SQL> /
39
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL> /
Enter value for informe_mmyy: 0300
old 4: WHERE TO_CHAR(INVE_DT_COMPRA,'MMYY') = '&INFORME_MMYY'
new 4: WHERE TO_CHAR(INVE_DT_COMPRA,'MMYY') = '0300'
40
ORACLE – SQLPLUS
_________________________________________________________________________________
FUNÇÕES
RPAD( Dado, n, ‘String’) => Completa espaços, a partir da direita, de forma a completar
n posições. Para isso utiliza a String (se não informada
utiliza espaço em branco)
41
ORACLE – SQLPLUS
_________________________________________________________________________________
RTRIM (Dado , ‘string’) => Elimina da direita as ocorrências da string. Se nenhuma string
for informada elimina os espaços em branco.
TRANSLATE (Dado , atual , novo) => Traduz de string Atual para Novo. Se faltar
caracter em Novo o atual correspondente é
eliminado.
Substitui todo o Conjunto Atual por todo o Conjunto Novo. Se Conjunto Novo for omitido
o Conjunto Atual é eliminado.
42
ORACLE – SQLPLUS
_________________________________________________________________________________
43
ORACLE – SQLPLUS
_________________________________________________________________________________
44
ORACLE – SQLPLUS
_________________________________________________________________________________
TO_CHAR( Dado , ‘formato’) => Converte um numero ou Data para Caracter no formato
TO_DATE( ‘string’ , ‘formato’) => Converte a string que representa uma data para um
valor
tipo data, de acordo com o formato.
SELECT DECODE(DEPTNO,10,’VERDADEIRO’,’FALSO’)
FROM EMP
45
ORACLE – SQLPLUS
_________________________________________________________________________________
TRUNC(SYS
---------
24-JUN-02
TRUNC(SYS
---------
28-JUN-02 (Sexta-feira)
TRUNC(TO_
---------
28-JUN-02
TRUNC(TO_
---------
24-JUN-02 (Segunda-feira)
46
ORACLE – SQLPLUS
_________________________________________________________________________________
FUNÇÕES DE GRUPO
COUNT (*) => Conta o Numero de Ocorrências (linhas selecionadas para o grupo)
47
ORACLE – SQLPLUS
_________________________________________________________________________________
HAVING
Utilize Having para especificar quais grupos devem ser exibidos.
Por exemplo, para exibir a média salarial dos departamentos com mais do que 3
funcionários:
SELECT DEPTNO, AVG(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) > 3
Outros Exemplos:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
48
ORACLE – SQLPLUS
_________________________________________________________________________________
JUNÇÕES (JOIN)
Exemplo:
Ocorre quando o relacionamento entre as tabelas ocorre apesar de não existir campos em
comum entre elas.
Para se resolver essa situação (Exibir linhas sem junção) coloca-se o sinal (+) a direita da
coluna da tabela que não contenha valor correspondente na coluna da outra tabela.
Uma linha null é inserida para compor o resultado do select
49
ORACLE – SQLPLUS
_________________________________________________________________________________
AUTO-RELACIONAMENTO (SELF-JOIN)
Quando juntamos uma tabela a ela mesma com a utilização de apelidos, permitindo juntar
linhas da tabela a outras linhas da mesma tabela.
UNIÃO (UNION)
INTERSECÇÃO (INTERSECT)
DIFERENÇA (MINUS)
50
ORACLE – SQLPLUS
_________________________________________________________________________________
BREAK ON D.DNAME
SELECT D.DNAME, E.EMPNO
FROM DEPT D, EMP E
WHERE D.DEPTNO = E.DEPTNO(+)
ORDER BY 1,2
UNION
Union
Importante: Se houver linhas iguais o Union retornará somente uma linha. Se desejar que
retorne todas acrescentar o comando all (Union All).
Intersection
51
ORACLE – SQLPLUS
_________________________________________________________________________________
52
ORACLE – SQLPLUS
_________________________________________________________________________________
SUB-SELECT
É muito útil quando se necessita selecionar linhas de uma tabela com uma condição que
depende de dados da própria tabela.
53
ORACLE – SQLPLUS
_________________________________________________________________________________
DICIONÁRIO DE DADOS
CONCEITO
- DICTIONARY
(Descreve o conteúdo de cada tabela do dicionário de dados)
- DICT_COLUMNS
(Descreve o conteúdo de cada campo de cada tabela do dicionário de dados)
- USER_OBJECTS
(Contem nome, tipo, status (Ativo ou não ativo) e outras informações dos objetos criados
pelo usuário)
- USER_CONSTRAINTS
(Contem informações sobre as constraints criadas pelo usuário)
- USER_TABLES
(Contem nome e outras informações sobre Tabelas Criadas pelo usuário)
- USER_CONS_COLUMNS
(Informação sobre quais campos de quais tabelas possuem quais
constraints)
- USER_TAB_COMMENTS
(Contem comentários / descrição referente ao conteúdo das tabelas)
- USER_COL_COMMENTS
(Contem comentários / descrição referente ao conteúdo dos campos das tabelas )
- USER_TRIGGERS
(Contem nome, codigo e outras informações sobre as Triggers criadas pelo usuário)
- USER_VIEWS
(Contem nome, codigo e outras informações sobre as visões criadas pelo usuário)
54
ORACLE – SQLPLUS
_________________________________________________________________________________
ALL_OBJECTS
55
ORACLE – SQLPLUS
_________________________________________________________________________________
OBJECT_TYPE
------------------
FUNCTION
INDEX
PACKAGE
PACKAGE BODY
PROCEDURE
SEQUENCE
SYNONYM
TABLE
TRIGGER
VIEW
USER_OBJECTS
OBJECT_TYPE
------------------
INDEX
PACKAGE
PACKAGE BODY
SEQUENCE
SYNONYM
TABLE
TRIGGER
56
ORACLE – SQLPLUS
_________________________________________________________________________________
7 rows selected.
57
ORACLE – SQLPLUS
_________________________________________________________________________________
USER_TABLES
58
ORACLE – SQLPLUS
_________________________________________________________________________________
59
ORACLE – SQLPLUS
_________________________________________________________________________________
ALL_TABLES
60
ORACLE – SQLPLUS
_________________________________________________________________________________
USER_TAB_COMMENTS
TABLE_TYPE
-----------
TABLE
VIEW
TABLE_NAME SUBSTR(COMMENTS,1,200)
--------------------------- --------------------------------------------------------------------------------------
MLOG$_GER_CLIE snapshot log for master table ADMGER.GER_CLIENTE_ENTREGA
MLOG$_GER_CLIE snapshot log for master table ADMGER.GER_CLIENTE_GRUPO
MLOG$_GER_MUNI snapshot log for master table ADMGER.GER_MUNICIPIO
61
ORACLE – SQLPLUS
_________________________________________________________________________________
USER_COL_COMMENTS
62
ORACLE – SQLPLUS
_________________________________________________________________________________
USER_CONSTRAINTS
15 rows selected.
64
ORACLE – SQLPLUS
_________________________________________________________________________________
USER_CONS_COLUMNS
65
ORACLE – SQLPLUS
_________________________________________________________________________________
OUTRAS VISÕES
USERNAME PASSWORD
------------------------------ ---------------------------
ABC 6A3BA23E07892D81
DEF A033D214D2321CED
66
ORACLE – SQLPLUS
_________________________________________________________________________________
PSEUDO-COLUNAS
329 ADMSIM
1 row selected.
67
ORACLE – SQLPLUS
_________________________________________________________________________________
ROWNUM e ROWID
ROWNUM VEND_NR_PEDIDO
--------- --------------
1 3
2 4
3 5
4 6
5 7
6 8
7 9
8 10
9 11
10 12
11 13
11 rows selected.
SQL> l
1* select rownum,veND_NR_PEDIDO from ord_venda
SQL> i where rownum <3;
SQL> /
ROWNUM VEND_NR_PEDIDO
--------- --------------
1 3
2 4
11 rows selected.
68
ORACLE – SQLPLUS
_________________________________________________________________________________
69
ORACLE – SQLPLUS
_________________________________________________________________________________
70
ORACLE – SQLPLUS
_________________________________________________________________________________
UPDATE TESTE
SET CP1 = NULL,
CP2 = 1,
CP3 = 2
WHERE CITY = ‘SAO PAULO’
UPDATE TESTE
SET CP1 = NULL,
(CP2,CP3) = (SELECT TEMP, TEMP-10
FROM TESTE2
WHERE CITY = `SANTOS`)
WHERE CITY = ‘SAO PAULO’
UPDATE DEPTO
SET DT_STATUS = SYSDATE
WHERE DT_STATUS IS NULL;
UPDATE EMP
SET SAL = SAL * 1.1
WHERE SAL < 900
DELETE GER_ORCAMENTO_VENDA
WHERE
ORVE_FILI_CD IN (1,2,6,10,25,30,50,75) AND
-- ORVE_CANA_CD = REG_ORVE_CANA_CD AND
-- ORVE_COVE_CD = REG_ORVE_COVE_CD AND
-- ORVE_APELIDO = REG_ORVE_APELIDO AND
-- ORVE_CLGR_APELIDO = REG_ORVE_APELIDO AND
ORVE_VERSAO = 'ATU1' AND
ORVE_ANO = '2000' AND
ORVE_MES = '11' AND
ORVE_PROD_CD IN
(SELECT PROD_CD FROM GER_PRODUTO WHERE PROD_GRCO_CD IN('03') )
71
ORACLE – SQLPLUS
_________________________________________________________________________________
CONTROLE DE TRANSAÇÕES
Exemplos:
DELETE TESTE1
SELECT * FROM TESTE1
ROLLBACK
SELECT * FROM TESTE1
DELETE TESTE1
SELECT * FROM TESTE1
COMMIT
SELECT * FROM TESTE1
DELETE TESTE1
SELECT * FROM TESTE1
ROLLBACK TO A
SELECT * FROM TESTE1
ROLLBACK
SELECT * FROM TESTE1
COMMIT;
LOCK DE REGISTROS
Quando uma linha da tabela está sofrendo manutenção por um usuário, ela fica disponível
apenas para leitura para outros usuários, com seu valor antigo, até que seja realizado
rollback ou commit. Caso outro usuário também altere seu conteúdo e de commit, esse
comando ficará em WAIT até que o 1° usuário conclua a transação
72
ORACLE – SQLPLUS
_________________________________________________________________________________
D.D.L.
73
ORACLE – SQLPLUS
_________________________________________________________________________________
74
ORACLE – SQLPLUS
_________________________________________________________________________________
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-
yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20);
COMMIT;
75
ORACLE – SQLPLUS
_________________________________________________________________________________
TIPOS DE DADOS
Armazena data
76
ORACLE – SQLPLUS
_________________________________________________________________________________
Execute a Seqüência de teste para constraint not null e analise os resultados obtidos.
Execute a Seqüência de teste para constraint not null e analise os resultados obtidos.
Execute a Seqüência de teste para constraint not null e analise os resultados obtidos.
COMMIT
77
ORACLE – SQLPLUS
_________________________________________________________________________________
Execute a Seqüência de teste para constraint Primary Key e analise os resultados obtidos.
Execute a Seqüência de teste para constraint Primary Key e analise os resultados obtidos.
Execute a Seqüência de teste para constraint Primary Key e analise os resultados obtidos.
COMMIT
78
ORACLE – SQLPLUS
_________________________________________________________________________________
CONSTRAINT REFERENCES
COMMIT
79
ORACLE – SQLPLUS
_________________________________________________________________________________
CONSTRAINT UNIQUE
COMMIT
80
ORACLE – SQLPLUS
_________________________________________________________________________________
CONSTRAINT CHECK
COMMIT
81
ORACLE – SQLPLUS
_________________________________________________________________________________
82
ORACLE – SQLPLUS
_________________________________________________________________________________
83
ORACLE – SQLPLUS
_________________________________________________________________________________
-- C:\ger_fornecedor.tab
--
-- Generated for Oracle 8 on Fri Mar 22 18:52:33 2002 by Server Generator 6.0.3.3.0
-- C:\ger_fornecedor.con
--
-- Generated for Oracle 8 on Fri Mar 22 18:52:33 2002 by Server Generator 6.0.3.3.0
84
ORACLE – SQLPLUS
_________________________________________________________________________________
-- C:\ger_.tab
--
-- Generated for Oracle 8 on Fri Mar 22 20:58:36 2002 by Server Generator 6.0.3.3.0
85
ORACLE – SQLPLUS
_________________________________________________________________________________
86
ORACLE – SQLPLUS
_________________________________________________________________________________
-- C:\ger_.con
--
-- Generated for Oracle 8 on Fri Mar 22 20:58:36 2002 by Server Generator 6.0.3.3.0
EXCLUIR TABELAS
SPOOL C:\ORACLE\SQLPLUS\DROP0002.SQL ;
select 'DROP TABLE ' || tname || ' ;' from user_tables;
SPOOL OFF;
87
ORACLE – SQLPLUS
_________________________________________________________________________________
SEQUENCES
Estrutura para geração de numeração sequencial. Gera uma lista serial de números
exclusivos para as colunas das tabelas.
88
ORACLE – SQLPLUS
_________________________________________________________________________________
CREATE TABLE A (
CP1 VARCHAR2(20) ,
CP2 NUMBER( 10),
CP3 DATE ,
CP4 NUMBER( 10));
INSERT INTO A
VALUES (USER, SEQ1.NEXTVAL, SYSDATE, SEQ1.CURRVAL)
Desc user_sequences
89
ORACLE – SQLPLUS
_________________________________________________________________________________
INDICES
Embora o Oracle crie um índice sobre a chave primária, você pode criar índices sobre
outros campos da tabela.
Operações de insert , delete e update podem se tornar mais lentas se existem muitos índices
associados à tabela
90
ORACLE – SQLPLUS
_________________________________________________________________________________
TRIGGERS
Um Trigger pode conter comandos SQL e PL/SQL ou pode chamar Stored Procedures
A diferença principal entre um Trigger e uma procedure é que a primeira é acionada pelo
Banco de Dados e a segunda é chamada pelo usuário.
91
ORACLE – SQLPLUS
_________________________________________________________________________________
Begin
If INSERTING Then
Add_Log_Transacao('GER_CLIENTE_GRUPO','INSERT',:new.CLGR_APELIDO);
End if;
If DELETING Then
Add_Log_Transacao('GER_CLIENTE_GRUPO','DELETE',:OLD.CLGR_APELIDO);
End if;
if UPDATING Then
Begin
if (:Old.CLGR_APELIDO <> :New.CLGR_APELIDO OR
:Old.CLGR_RAZ_SOC <> :New.CLGR_RAZ_SOC OR
:Old.CLGR_CD_END_ENTREGA <> :New.CLGR_CD_END_ENTREGA OR
:Old.CLGR_CONTR_VEND <> :New.CLGR_CONTR_VEND OR
:Old.CLGR_PRAZO_VEND <> :New.CLGR_PRAZO_VEND OR
:Old.CLGR_TAXA_VEND <> :New.CLGR_TAXA_VEND OR
:Old.CLGR_PRAZO_REPC <> :New.CLGR_PRAZO_REPC OR
:Old.CLGR_PERC_PLUS <> :New.CLGR_PERC_PLUS OR
:Old.CLGR_PRAZO_TVEN <> :New.CLGR_PRAZO_TVEN OR
:Old.CLGR_GR_FIS_ICM <> :New.CLGR_GR_FIS_ICM OR
:Old.CLGR_GR_FIS_IPI <> :New.CLGR_GR_FIS_IPI OR
:Old.CLGR_CONTRIB <> :New.CLGR_CONTRIB OR
:Old.CLGR_MOED_CD <> :New.CLGR_MOED_CD OR
:Old.CLGR_CLCL_CD <> :New.CLGR_CLCL_CD OR
:Old.CLGR_TTRI_CD <> :New.CLGR_TTRI_CD OR
:Old.CLGR_TTII_CD <> :New.CLGR_TTII_CD
OR
:Old.CLGR_TRAN_CD <> :New.CLGR_TRAN_CD)
then
Add_Log_Transacao('GER_CLIENTE_GRUPO','UPDATE',:new.CLGR_APELIDO
);
Else
Raise_Application_Error(-20000,'Trigger Failure');
end if;
End;
End If;
End;
92
ORACLE – SQLPLUS
_________________________________________________________________________________
94
ORACLE – SQLPLUS
_________________________________________________________________________________
ADD_LOG_TRANSACAO
95
ORACLE – SQLPLUS
_________________________________________________________________________________
DECLARE
BEGIN
UPDATE GER_MUNICIPIO
SET MUNI_DESC = 'TESTE - ELIMINOR'
WHERE MUNI_CD = -4 ;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE <> -20000 THEN
DBMS_OUTPUT.PUT_LINE('ALTERACAO NAO AUTORIZADA');
END IF;
END;
/
96
ORACLE – SQLPLUS
_________________________________________________________________________________
PROCEDURE e FUNCTIONS
Conjunto de declarações SQL e PL/SQL agrupadas como uma unidade executável. (Para
executar uma tarefa específica)
PACKAGES
CURSOR
É um produto da linguagem PL/SQL. É possível dar nome para uma dessas areas de
trabalho e acessar sua informação
97
ORACLE – SQLPLUS
_________________________________________________________________________________
SQL LOADER
P/ RODAR (DOS):
Arquivo: CARREGA.CTL
OPTIONS ( FILE='C:/COMPRAS/CARREGA.ctl')
LOAD DATA
INFILE 'C:/COMPRAS/COM_COMPRA.TXT'
BADFILE 'C:/COMPRAS/CARGA_COM_COMPRA.bad'
DISCARDFILE 'C:/COMPRAS/COM_COMPRA.dsc'
INTO TABLE "TA_COM_COMPRA"
APPEND
FIELDS
(
"RAZAO" POSITION (01:53) CHAR,
"END" POSITION (54:99) CHAR,
"COMPLEMENTO" POSITION (100:123) CHAR,
"CIDADE" POSITION (124:143) CHAR,
"UF" POSITION (144:145) CHAR,
"CEP" POSITION (150:160) CHAR,
"IE" POSITION (162:182) CHAR,
"CGC" POSITION (183:196) CHAR,
"DATA_CHAR" POSITION (202:210) CHAR
)
98
ORACLE – SQLPLUS
_________________________________________________________________________________
Arquivo: CARREGA.log
Exemplo:
SQL*Loader: Release 8.0.5.0.0 - Production on Wed Apr 24 10:7:23 2002
Table "WK_ITENS":
13 Rows successfully loaded.
51 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
99
ORACLE – SQLPLUS
_________________________________________________________________________________
Arquivo: CARREGA.bad
100
ORACLE – SQLPLUS
_________________________________________________________________________________
(Requer que o programa SQL*Net esteja sendo executado em cada uma das máquinas)
Exemplo:
SNAPSHOTS
Chamado de materialized view, é uma cópia de uma parte ou de toda uma tabela
MASTER TABLE
Tabela de Origem
SNAPSHOTS READ-ONLY
SNAPSHOTS UPDATABLE
Podem ser feitas alterações na cópia local e que periodicamente atualiza a master table
(Atualiza a master table mas também é atualizada por ela no momento do sincronismo)
101
ORACLE – SQLPLUS
_________________________________________________________________________________
D.C.L.
102
ORACLE – SQLPLUS
_________________________________________________________________________________
ROLES
(CONNECT, RESOURCE E DBA)
Se uma Role é atribuida a um usuário, este obtem todos os privilégios associados a Role
Exemplos:
ALTERAR SENHA
CRIAR USUÁRIO
CONEXÃO AO ORACLE
CONNECT LEDA@CCAP;
104
ORACLE – SQLPLUS
_________________________________________________________________________________
VIEWs
- Visões de Tabelas, permitem que os dados mantidos em uma tabela possam ser
disponibilizados para diversos usuários conforme os direitos de acesso a informação de
cada usuário especifico.
- É uma apresentação personalizada dos dados de uma ou mais tabelas. As visões não
contém ou armazenam realmente os dados, mas elas os retiram das tabelas nas quais se
baseiam. As operações executadas em uma visão afetam as tabelas base dessa visão.
105
ORACLE – SQLPLUS
_________________________________________________________________________________
Sinônimos (Synonym)
Utilidade:
- Mascara o nome real e o proprietário de um objeto de esquema
- Fornece acesso público a um objeto de esquema
- Fornece transparência a localização para os objetos
- Simplifica as declarações SQL para os usuários do Banco de Dados
Exemplo:
No OWNER
create table a (cp1 number );
Table created.
No ADMSIM
desc a
ERROR:
ORA-04043: object a does not exist
desc admger.a
Name Null? Type
------------------------------- -------- ----
CP1 NUMBER
desc joao
Name Null? Type
------------------------------- -------- ----
CP1 NUMBER
No OWNER
revoke select on a from admsim;
Revoke succeeded.
106
ORACLE – SQLPLUS
_________________________________________________________________________________
No ADMSIM
desc joao;
ERROR:
ORA-04043: object ADMGER.A does not exist
desc admger.aa
Name Null? Type
------------------------------- -------- ----
CP1 NUMBER
drop synonym joao;
Synonym dropped.
No OWNER
drop table a
Table dropped.
drop view aa
View dropped.
107
ORACLE – SQLPLUS
_________________________________________________________________________________
SELECT count(*)
FROM GER_RESUMO_PEDIDO O
WHERE O.REPE_FILI_CD IN (1,2,6,10,25,30,50,75) AND
O.REPE_PROD_CD IN (SELECT PROD_CD FROM GER_PRODUTO
WHERE PROD_GRCO_CD IN ('03','07') )
/
COUNT(*)
----------
2067
SELECT count(*)
FROM GER_RESUMO_PEDIDO ;
COUNT(*)
----------
3174
View dropped.
connect admger@ccap;
Enter password: ******
Connected.
CREATE OR REPLACE VIEW GER_REPE_VW_BG0307 AS
SELECT O.*
FROM GER_RESUMO_PEDIDO O
WHERE O.REPE_FILI_CD IN (1,2,6,10,25,30,50,75) AND
O.REPE_PROD_CD IN (SELECT PROD_CD FROM GER_PRODUTO
WHERE PROD_GRCO_CD IN ('03','07') )
/
View created.
108
ORACLE – SQLPLUS
_________________________________________________________________________________
Grant succeeded.
connect brc00166/xxxxxxxx@ccap;
Connected.
select * from GER_REPE_VW_BG0307
*
ERROR at line 1:
ORA-00942: table or view does not exist
- O usuário BRC00166 procura criar um sinônimo para poder acessar a tabela pelo
seu nome e não pelo nome da visão. Mas não possui privilégios para isso.
109
ORACLE – SQLPLUS
_________________________________________________________________________________
- O usuário entra no Oracle com seu próprio login para eliminar o antigo
sinônimo
connect brc00166/XXXXXXXX@ccap;
Connected.
desc all_objects;
Name Null? Type
------------------------------- -------- ----
OWNER NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NOT NULL NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE NOT NULL VARCHAR2(15)
CREATED NOT NULL DATE
LAST_DDL_TIME NOT NULL DATE
TIMESTAMP NOT NULL VARCHAR2(19)
STATUS NOT NULL VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
Synonym dropped.
connect brc00166/XXXXXX@ccap;
Connected.
select count(*) from GER_RESUMO_PEDIDO;
COUNT(*)
----------
110
ORACLE – SQLPLUS
_________________________________________________________________________________
2067
connect admger@ccap;
Enter password: ******
Connected.
alter view admger.GER_REPE_VW_BG0307 compile;
View altered.
111
ORACLE – SQLPLUS
_________________________________________________________________________________
desc all_views
112
ORACLE – SQLPLUS
_________________________________________________________________________________
REFERÊNCIAS BIBLIOGRAFICAS
113