Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso Oracle
Curso Oracle
FACULDADE DE INFORMTICA
PROGRAMA DE PS-GRADUAO EM CINCIA DA COMPUTAO
2011/1 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
DQL (Data Query Language)
2
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
3
Agenda
PARTE 3
Operaes de conjunto
Subconsultas
Correlacionadas
No-correlacionadas
Exerccios Lista 3
4
Introduo
Oracle 10g Overview
5
Introduo
Tipos de Comandos SQL
6
Introduo
Modelo lgico Controle de Vendas de Livros
7
Introduo
SQL Developer
8
Comandos SQL
Tipos de dados Oracle
9
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE
CREATE TABLE table(
column datatype [DEFAULT expr]
[column constraint],
[table constraint]);
10
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE (Sem Constraints)
Exemplos:
11
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE (Constraints)
Previnir entrada de dados invlidos em tabelas;
Garantir regras nvel de tabela sempre que uma linha for inserida, atualizada ou
apagada desta tabela.
Previnir a excluso de uma tabela se existitem dependncias em outras tabelas;
12
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE (Constraints)
Exemplos:
CREATE TABLE TEDITORA2 (
codeditora number(10),
nome varchar2(100) NOT NULL,
constraint Ted_codeditora_pk PRIMARY KEY(codeditora));
14
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE
Exemplos:
CREATE TABLE TEDITORA3 (
codeditora number(10),
nome varchar2(100) NOT NULL,
PRIMARY KEY(codeditora));
16
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE
Script auxiliar:
17
Comandos SQL
DDL (Data Definition Language)
Comando CREATE TABLE
Criando uma tabela utilizando uma subconsulta:
Exemplo:
19
Comandos SQL
DDL (Data Definition Language)
Comando ALTER TABLE
Exemplos:
20
Comandos SQL
DDL (Data Definition Language)
Comando ALTER TABLE - (Com Constraints)
Exemplos:
21
Comandos SQL
DDL (Data Definition Language)
Comando RENAME
RENAME old_name TO new_name;
Exemplo:
RENAME TNOVAEDITORA TO TEDITORA ;
22
Comandos SQL
DDL (Data Definition Language)
Comando DROP TABLE
DROP TABLE table;
23
Comandos SQL
DDL (Data Definition Language)
Comando DROP TABLE
Exemplos:
24
Comandos SQL
DDL (Data Definition Language)
Abra e execute(F5) no Developer o arquivo abaixo:
SCRIPT_BANCO.SQL
25
Comandos SQL
DML (Data Manipulation Language)
Comando INSERT
INSERT INTO table[column1, column2m ,....columnN]
VALUES( value1, value2,... valueN);
26
Comandos SQL
DML (Data Manipulation Language)
Comando INSERT
Exemplos:
27
Comandos SQL
DML (Data Manipulation Language)
Comando UPDATE
UPDATE table
SET column=value [, columnN=valueN]
[WHERE condition];
28
Comandos SQL
DML (Data Manipulation Language)
Comando UPDATE
Exemplos:
UPDATE LIVRO SET preco=preco * 1.10
WHERE sigla='B';
30
Comandos SQL
DML (Data Manipulation Language)
Comando DELETE
Exemplos:
31
Comandos SQL
DML (Data Manipulation Language)
Comando MERGE
MERGE INTO tabela_destino [AS apelido_destino]
USING tabela_origem [AS apelido_origem]
ON (expr)
WHEN MATCHED THEN
operao_verdadeiro
WHEN NOT MATCHED THEN
operao_falso;
33
Comandos SQL
DML (Data Manipulation Language)
Comando MERGE
Exemplo:
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.
36
Comandos SQL
Criando Sequence
Exemplo
37
Comandos SQL
Criando Sequence
Exemplo
INSERT INTO EDITORA(codeditora, nome)
VALUES(IDEDITORA.NEXTVAL,'EDITORA SEQUENCE');
39
Comandos SQL
Criando Vises
Exemplo
CREATE OR REPLACE....
Exemplo
CREATE OR REPLACE TRIGGER gera_log_alteracoes
AFTER UPDATE of preco Aumentar o preco
ON LIVRO em 10%
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'));
END; Aumentar o preco
em 21%, ver a
tabela auditoria e
depois dar
ROLLBACK
42
Comandos SQL
DQL (Data Query Language)
Comando SELECT
SELECT [DISTINCT] {*, column [alias], columnN [aliasN]}
FROM table;
Exemplo
SELECT codlivro CODIGO_LIVRO ,
titulo TTULO ,
numpags NMERO DE PGINAS
FROM LIVRO;
43
Comandos SQL
DQL (Data Query Language)
Comando SELECT Restringindo e ordenando dados
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
DQL (Data Query Language)
Comando SELECT Operadores de comparao
45
Comandos SQL
DQL (Data Query Language)
Comando SELECT Restringindo e ordenando dados
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
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
INNER JOIN
47
Comandos SQL
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
LEFT OUTER JOIN
48
Comandos SQL
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
RIGHT OUTER JOIN
49
Comandos SQL
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
FULL OUTER JOIN
50
Comandos SQL
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
CROSS JOIN
51
Comandos SQL
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
NATURAL JOIN
52
Comandos SQL
DQL (Data Query Language)
Comando SELECT Juno de Tabelas
SELECT CL.nome, CA.tipocartao
FROM CLIENTE CL, CARTO CA INNER JOIN
WHERE CL.codcartao=CA.codcartao
ORDER BY 2 DESC;
54
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes Bsicas
55
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes Bsicas
SELECT titulo, preco PRECO_NORMAL
FROM LIVRO
WHERE LOWER(titulo) LIKE 'b%';
57
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Converso de
Tipos de dados
58
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Converso de
Tipos de dados
SELECT titulo, TO_CHAR(datapublicacao,'DD/MON/YY') DATA_PUBLICAO
FROM LIVRO;
59
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Converso de
Tipos de dados
SELECT titulo, TO_CHAR(preco,'L99G999D99') PRECO_LIVRO
FROM LIVRO;
60
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Converso de
Tipos de dados
SELECT titulo, TO_NUMBER('50') ESTOQUE
FROM LIVRO;
61
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Converso de
Tipos de dados
SELECT titulo, datapublicacao
FROM LIVRO
WHERE datapublicacao= TO_DATE('Janeiro 10, 1999', 'Month dd,YYYY');
62
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Agrupamento
63
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Agrupamento
64
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Agrupamento
65
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Agrupamento
SELECT
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;
SELECT L.nome,
MAX(R.TOT) MAIOR_VENDA
FROM LOJA L INNER JOIN VENDA V ON l.cnpj= v.cnpj
INNER JOIN (SELECT l.nome nome, SUM(V.total) TOT
FROM LOJA L,VENDA V
WHERE L.cnpj= v.cnpj
GROUP BY l.nome, v.idvenda) R ON l.nome=R.nome
GROUP BY L.NOME;
67
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Agrupamento
SELECT L.nome,
MIN(R.TOT) MENOR_VENDA
FROM LOJA L INNER JOIN VENDA V ON l.cnpj= v.cnpj
INNER JOIN (SELECT l.nome nome, SUM(V.total) TOT
FROM LOJA L,VENDA V
WHERE L.cnpj= v.cnpj
GROUP BY l.nome, v.idvenda) R ON l.nome=R.nome
GROUP BY L.NOME;
68
Comandos SQL
DQL (Data Query Language)
Comando SELECT Funes de Agrupamento
69
Comandos SQL
DQL (Data Query Language)
Comando SELECT Outras Funes
ATENO!
SELECT COUNT(V.total) REGISTROS_COM_TOTAL_INFORMADO
FROM VENDA V;
70
Comandos SQL
DQL (Data Query Language)
Comando SELECT Outras Funes
SELECT codlivro, total
FROM VENDA
WHERE codlivro=5;
71
Comandos SQL
DQL (Data Query Language)
Comando SELECT Outras Funes
SELECT nome,
TO_CHAR(datanasc,'yyyy')ANO_NASC,
CASE LOWER(nacionalidade) WHEN 'colombiana' THEN 'COL'
WHEN 'brasileira' THEN 'BRA'
WHEN 'equatoriana' THEN 'EQU'
ELSE 'NO INFORMADA' END CASE
FROM cliente
WHERE TO_CHAR(datanasc,'yyyy') > 1977;
72
Comandos SQL
DQL (Data Query Language)
Comando SELECT Outras Funes
SELECT nome,
TO_CHAR(datanasc,'yyyy')ANO_NASC,
DECODE(LOWER(nacionalidade),'colombiana','COL',
'brasileira','BRA',
'equatoriana', 'EQU',
'NO INFORMADA') NACILONALIDADE
FROM cliente
WHERE TO_CHAR(datanasc,'yyyy') > 1977;
73
Comandos SQL
DQL (Data Query Language)
Comando SELECT Operaes de Conjunto
EXECUTAR COMANDO:
74
Comandos SQL
DQL (Data Query Language)
Comando SELECT Operaes de Conjunto
SELECT cpf,
nome,
datanasc,
nacionalidade
FROM CLIENTE ;
SELECT cpf,
nome,
datanasc,
nacionalidade
FROM AUTOR ;
75
Comandos SQL
DQL (Data Query Language)
Comando SELECT Operaes de Conjunto
76
Comandos SQL
DQL (Data Query Language)
Comando SELECT Operaes de Conjunto
77
Comandos SQL
DQL (Data Query Language)
Comando SELECT Operaes de Conjunto
78
Comandos SQL
DQL (Data Query Language)
Subconsultas No-Correlacionadas
Single-Row
Multiple-Row
Multiple-Column
Subconsultas Correlacionadas
Multiple-Row
Multiple-Column
79
Comandos SQL
DQL (Data Query Language)
Subconsultas No-Correlacionadas
Single-Row
SELECT * A subconsulta
Consulta independente da
Externa
FROM LIVRO consulta externa
WHERE preco <
(SELECT preco
Consulta FROM LIVRO
Interna
WHERE codlivro=4);
80
Comandos SQL
DQL (Data Query Language)
Subconsultas No-Correlacionadas
Multiple-Row
A subconsulta
SELECT * independente da
Consulta
Externa FROM LIVRO consulta externa
WHERE PRECO IN
(SELECT preco
Consulta FROM LIVRO
Interna
WHERE TO_CHAR(datapublicacao,'YYYY') < '1998')
81
Comandos SQL
DQL (Data Query Language)
Subconsultas Correlacionadas
Multiple-Row
SELECT nome as NOME_EDITORA
A subconsulta possui
FROM EDITORA E
dependncia direta com
WHERE EXISTS a consulta externa
(SELECT L.titulo
FROM LIVRO L
WHERE E.codeditora= L.codeditora AND L.datapublicacao IS NOT NULL);
82
Comandos SQL
DQL (Data Query Language)
Subconsultas Correlacionadas
Nos campos de sada
SELECT E.nome, (SELECT COUNT(*)
FROM LIVRO L
WHERE L.numpags > 60 AND
L.codeditora=E.codeditora)
LIVROS+60PAGS
FROM EDITORA E;
83
Comandos SQL
DQL (Data Query Language)
Subconsultas Correlacionadas
Na clusula FROM
84
Comandos SQL
DQL (Data Query Language)
Subconsultas Correlacionadas
Na clusula FROM
85