Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULDADE DE INFORMTICA
PROGRAMA DE PS-GRADUAO EM CINCIA DA COMPUTAO
2011/1
Agenda
Introduo
Oracle 10g overview
Tipos de dados no Oracle
SQL Developer
Comandos SQL
DDL (Data Definition Language)
DML (Data Manipulation Language)
Sequence
Viso
Trigger
Agenda
PARTE 1
Introduo
DDL, DML
Sequence e Trigger
Exerccios Lista 1
PARTE 2
DQL
Juno de tabelas
Funes de agrupamento
Outras Funes
Vises
Exerccios Lista 2
Agenda
PARTE 3
Operaes de conjunto
Subconsultas
Correlacionadas
No-correlacionadas
Exerccios Lista 3
Introduo
Introduo
Introduo
Introduo
SQL Developer
Comandos SQL
Comandos SQL
table:
o nome da tabela.
DEFAULT expr:
10
Comandos SQL
codeditora number(10),
nome varchar2(100));
CREATE TABLE TLIVRO1 (
titulo varchar2(50),
codlivro number(10),
codeditora number(10));
11
Comandos SQL
12
Comandos SQL
codlivro number(10),
codeditora number(10),
constraint Tliv_codlivro_pk PRIMARY KEY(codlivro),
constraint Tliv_Ted_codeditoa_fk FOREIGN KEY(codeditora)
REFERENCES TEDITORA2);
13
Comandos SQL
CPF number(10),
datanasc date,
nome varchar2(150) NOT NULL,
nacionalidade varchar2(100),
matricula number(10),
Comandos SQL
Comandos SQL
o nome da tabela.
column:
o nome da coluna.
subquery: o comando SELECT que define o conjunto de linhas a ser inserido na nova
tabela.
16
Comandos SQL
17
Comandos SQL
Comandos SQL
Comandos SQL
20
Comandos SQL
21
Comandos SQL
Exemplo:
RENAME TNOVAEDITORA TO TEDITORA ;
22
Comandos SQL
23
Comandos SQL
24
Comandos SQL
25
Comandos SQL
table:
o nome da tabela.
column :
value:
26
Comandos SQL
27
Comandos SQL
table:
o nome da tabela.
column :
value:
28
Comandos SQL
Comandos SQL
table:
o nome da tabela.
30
Comandos SQL
31
Comandos SQL
tabela_origem:
expr:
operao_verdadeiro:
operao_falso:
Comandos SQL
33
Comandos SQL
34
Comandos SQL
Criando Sequence
Uma sequence um objeto do banco de dados criado por um usurio
podendo ser compartilhado por mltiplos usurios.
Um uso tpico para sequence criar um valor para uma chave primria, que
deve ser nico para cada linha.
Os nmeros das sequncias so armazenados e gerados independentemente
das tabelas. Portanto, a mesma sequence pode ser utilizada em tabelas
diferentes.
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
[{ORDER | NOORDER}];
35
Comandos SQL
Criando Sequence
sequence:
INCREMENT BY n:
START WITH n:
MAXVALUE n:
NOMAXVALUE:
MINVALUE n:
NOMINVALUE:
CYCLE | NOCYCLE:
36
Comandos SQL
Criando Sequence
Exemplo
INCREMENT BY 1
INCREMENT BY 1
START WITH 10
START WITH 6
MAXVALUE 5000
MAXVALUE 5000
NOCACHE
NOCACHE
NOCYCLE;
NOCYCLE;
37
Comandos SQL
Criando Sequence
Exemplo
INSERT INTO EDITORA(codeditora, nome)
VALUES(IDEDITORA.NEXTVAL,'EDITORA SEQUENCE');
INSERT INTO LIVRO(codlivro, titulo, sigla, preco, numpags, datapublicacao, codeditora)
VALUES(IDLIVRO.NEXTVAL,'BANCO DE DADOS
TEMPORAIS','B',50.00,102,TO_DATE('10/02/2001',
'DD/MM/YYYY'),IDEDITORA.CURRVAL);
INSERT INTO LIVRO_AUTORIA(codlivro, matricula)
VALUES(IDLIVRO.CURRVAL,111);
ALTER SEQUENCE IDEDITORA
MAXVALUE 300;
DROP SEQUENCE IDEDITORA;
38
Comandos SQL
Criando Vises
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view
[alias1, alias2,...aliasN]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]
[WITH READ ONLY];
OR REPLACE:
FORCE:
NOFORCE:
view
alias:
Comandos SQL
Criando Vises
Exemplo
CREATE VIEW VISAO_VENDAS
AS
SELECT
CL.nome AS NOME_CLIENTE,
li.titulo AS TITULO_LIVRO,
ed.nome AS NOME_EDITORA,
VE.QUANTIDADE
FROM LIVRO LI INNER JOIN EDITORA ED ON LI.codeditora=ED.codeditora
INNER JOIN VENDA VE ON LI.codlivro=VE.codlivro
INNER JOIN CLIENTE CL ON CL.cpf=VE.cpf;
CREATE OR REPLACE....
DROP VIEW VISAO_VENDAS;
40
Comandos SQL
Criando Triggers
CREATE [OR REPLACE] TRIGGER nome_trigger
{BEFORE | AFTER | INSTEAD OF}
evento_disparador1 OR evento_disparadorN
ON tabela_evento
[nvel_gatilho]
[condio_execuo]
Bloco_de_comandos_SQL;
Exemplo
CREATE OR REPLACE TRIGGER gera_log_alteracoes
Aumentar o preco
AFTER UPDATE of preco
em 10%
ON LIVRO
BEGIN
INSERT INTO LOG(usuario, datahora)
VALUES (user,TO_CHAR(sysdate, 'DD/MM/YY HH24:MI:SS'));
END;
41
Comandos SQL
Criando Triggers
Exemplo
CREATE OR REPLACE TRIGGER teste
AFTER UPDATE OF preco
ON LIVRO
REFERENCING NEW AS N1 OLD AS O1
FOR EACH ROW
WHEN (N1.PRECO > O1.PRECO *1.2)
BEGIN
INSERT INTO auditoria(codlivro, precoantigo, preconovo, datahora)
VALUES(:O1.codlivro, :O1.preco, :N1.preco, TO_CHAR(sysdate, 'DD/MM/YY
HH24:MI:SS'));
Aumentar o preco
END;
em 21%, ver a
tabela auditoria e
depois dar
ROLLBACK
42
Comandos SQL
Exemplo
SELECT codlivro CODIGO_LIVRO ,
titulo TTULO ,
numpags NMERO DE PGINAS
FROM LIVRO;
43
Comandos SQL
Exemplo
SELECT codlivro CODIGO_LIVRO,
titulo TTULO,
numpags "NMERO DE PGINAS"
FROM LIVRO
WHERE numpags > 70
Operador de comparao
ORDER BY 2 ASC; --OU DESC
44
Comandos SQL
45
Comandos SQL
Exemplo
SELECT codlivro CODIGO_LIVRO,
titulo TTULO,
numpags "NMERO DE PGINAS"
FROM LIVRO
WHERE numpags BETWEEN 55 AND 90
ORDER BY 2 ASC;
46
Comandos SQL
47
Comandos SQL
48
Comandos SQL
49
Comandos SQL
50
Comandos SQL
51
Comandos SQL
52
Comandos SQL
INNER JOIN
WHERE CL.codcartao=CA.codcartao
ORDER BY 2 DESC;
SELECT CL.nome, CA.tipocartao
FROM CLIENTE CL, CARTO CA
WHERE CL.codcartao=CA.codcartao(+)
ORDER BY 2 DESC;
SELECT CL.nome, CA.tipocartao
FROM CLIENTE CL, CARTO CA
WHERE CL.codcartao(+)=CA.codcartao
ORDER BY 2 DESC;
53
Comandos SQL
WHERE sigla='b';
SELECT sigla, assunto
FROM ASSUNTO
WHERE LOWER(sigla)='b';
Comandos SQL
WHERE LOWER(sigla)='b';
SELECT sigla, INITCAP(SUBSTR(assunto, 1, 5)) AS ASSUNTO
FROM ASSUNTO
WHERE LOWER(sigla)='b';
55
Comandos SQL
FROM LIVRO
WHERE LOWER(titulo) LIKE 'b%';
SELECT titulo, MOD(preco,preco)PRECO_RESTDI
FROM LIVRO
WHERE LOWER(titulo) LIKE 'b%';
56
Comandos SQL
57
Comandos SQL
58
Comandos SQL
59
Comandos SQL
60
Comandos SQL
61
Comandos SQL
62
Comandos SQL
63
Comandos SQL
64
Comandos SQL
65
Comandos SQL
L.nome,
TRUNC(SUM(V.total) / COUNT(DISTINCT(V.idvenda)),2) MEDIA_VENDAS
FROM VENDA V INNER JOIN LOJA L ON V.cnpj=L.cnpj
GROUP BY L.nome;
Comandos SQL
67
Comandos SQL
68
Comandos SQL
Comandos SQL
70
Comandos SQL
Comandos SQL
72
Comandos SQL
73
Comandos SQL
74
Comandos SQL
SELECT cpf,
nome,
datanasc,
nacionalidade
FROM AUTOR ;
75
Comandos SQL
76
Comandos SQL
77
Comandos SQL
78
Comandos SQL
Subconsultas Correlacionadas
Multiple-Row
Multiple-Column
79
Comandos SQL
Consulta
Externa
Consulta
Interna
A subconsulta
independente da
consulta externa
SELECT *
FROM LIVRO
WHERE preco <
(SELECT preco
FROM LIVRO
WHERE codlivro=4);
80
Comandos SQL
Consulta
Externa
Consulta
Interna
SELECT *
independente da
consulta externa
FROM LIVRO
WHERE PRECO IN
(SELECT preco
FROM LIVRO
WHERE TO_CHAR(datapublicacao,'YYYY') < '1998')
81
Comandos SQL
82
Comandos SQL
83
Comandos SQL
FROM
LIVRO_AUTOR.nome AUTOR,
LIVRO_AUTOR.titulo,
LIVRO_AUTOR.preco,
E.nome EDITORA
EDITORA E,
(SELECT l.titulo, L.datapublicacao, A.nome, l.preco, l.codeditora
FROM LIVRO L INNER JOIN LIVRO_AUTORIA LA ON L.codlivro= LA.codlivro
INNER JOIN AUTOR A ON A.matricula=LA.matricula) LIVRO_AUTOR
WHERE
E.codeditora=LIVRO_AUTOR.codeditora AND LIVRO_AUTOR.datapublicacao IS NOT NULL
ORDER BY 2,1 ASC;
84
Comandos SQL
85