1. Banco de Dados II
Fundamentos Oracle
Gustavo S´avio
gsoprofessor@gmail.com
2015.2
2. SQL
Structured Query Language
Anos 70
Padr˜ao BD Relacionais
1986 American National
Standards Institute (ANSI1)
Atualmente...
Estamos no padr˜ao ANSI3
1 / 27
3. DDL
Data Definition Language DDL
O que ´e?
Instruc¸˜oes que criam os objetos do banco de dados
Exemplos...
CREATE TABLE, ALTER TABLE, DROP TABLE
2 / 27
4. DML
Data Manipulation Language
O que ´e?
Instruc¸˜oes que manipulam (acesso e armazenamento) os dados
Exemplos...
SELECT, INSERT , DELETE , UPDATE
3 / 27
5. DCL
Data Control Language
O que ´e?
Instruc¸˜oes que controlam o acesso aos dados
Grupos: controle de transac¸˜ao, sess˜ao e sistema
Exemplos...
COMMIT, ROLLBACK, GRANT, REVOKE
4 / 27
6. Oracle
Fundada em 1977 formada por Larry Ellison, Bob Miner, Ed
Oates e Bruce Scott, chamada de Software Development
Laboratories (SDL)
Larry e Bob vieram da Ampex, trabalhavam em um projeto da CIA
chamado de Oracle
Em 1978 mudou o nome para Relational Software Inc (RSI)
5 / 27
7. Oracle
Em 1979 surgiu a primeira vers˜ao comercial, vendida `a Forc¸a
A´erea Americana
Primeiro RDBMS comercial do mercado
Em 1982 mudou o nome para Oracle Systems Corporation (OSC)
Posteriormente simplificada para Oracle Corporation
6 / 27
8. Oracle 11g XE
Oracle Database 11g Express Edition
Express Edition
Oracle XE ´e uma vers˜ao gratuita oferecida pela Oracle, livre para de-
senvolver e distribuir
Entretanto, possui as seguintes limitac¸˜oes:
1 por servidor
1 CPU
Usa apenas 1GB/RAM
11 GB de espac¸o em disco
7 / 27
9. SQL Developer
SQL Developer is a free integrated development environment that sim-
plifies the development and management of Oracle Database in both
traditional and Cloud deployments. SQL Developer offers complete
end-to-end development of your PL/SQL applications, a worksheet for
running queries and scripts, a DBA console for managing the database,
a reports interface, a complete data modeling solution, and a migration
platform for moving your 3rd party databases to Oracle”
8 / 27
11. Acessando o Banco
Quando instalamos o Oracle, os usu´arios Sys e System s˜ao
criados com perfil DBA (Role)
Privil´egio Administrativos
Existem dois privil´egios de sistema especiais, SYSDBA e SYSOPER
Conecte com o usu´ario System
10 / 27
12. Tablespace
Subdivis˜ao l´ogica de um banco de dados
Especifica a localizac¸˜ao f´ısica do armazenamento em datafiles
System ´e a primeira tablespace criada pelo Oracle
11 / 27
13. Tablespace
Criando o tablespace disciplina
CREATE TABLESPACE disciplina LOGGING DATAFILE
’C:oraclexeapporacleoradataXEdisciplina.dfb’
SIZE 1024m
AUTOEXTEND ON NEXT 500m
EXTENT MANAGEMENT LOCAL;
12 / 27
14. Usu´ario
Criando o usu´ario aluno
CREATE USER aluno
IDENTIFIED BY aluno
DEFAULT TABLESPACE disciplina
QUOTA UNLIMITED ON disciplina;
Usu´ario e Schema = Confus˜ao!
Um schema ´e uma colec¸˜ao de objetos de um usu´ario
Um usu´ario est´a relacionado a um schema
Quando o Oracle cria um usu´ario, automaticamente tamb´em cria
um schema com o mesmo nome do usu´ario
13 / 27
15. Permiss˜ao de Usu´ario
Definindo as permiss˜oes do usu´ario aluno
GRANT CREATE SESSION, ALTER SESSION, CREATE TABLE,
CREATE PROCEDURE, CREATE VIEW,
CREATE MATERIALIZED VIEW, CREATE TRIGGER,
CREATE SEQUENCE, CREATE ANY DIRECTORY,
CREATE TYPE, CREATE SYNONYM,
DEBUG CONNECT SESSION,
DEBUG ANY PROCEDURE TO aluno;
14 / 27
17. Importando dados
DROP TABLE IF EXISTS
O oracle n˜ao possui uma func¸˜ao nativa para a funcionalidade de deletar
uma tabela, caso ela exista...
CREATE OR REPLACE PROCEDURE dropTable(tabela IN VARCHAR2)
IS
BEGIN
FOR i IN (SELECT NULL FROM user_tables WHERE table_name = UPPER(tabela)) LOOP
EXECUTE IMMEDIATE ’DROP TABLE ’ || tabela || ’ CASCADE CONSTRAINTS’;
END LOOP;
END;
16 / 27
19. Importando dados
Conectar com o usu´ario criado ’aluno’
Executar os scripts seguindo a ordem:
tabelas.sql
inserts.sql
18 / 27
20. Transa¸c˜ao
O que ´e?
Permite englobar v´arias ac¸˜oes em uma ´unica operac¸˜ao tudo ou nada
SET TRANSACTION, COMMIT OU ROLLBACK
19 / 27
21. Executando um SQL
Como o oracle executa uma consulta SQL?
PARSE, EXECUTE e FETCH
20 / 27
22. Executando um SQL
PARSE
Valida a sintaxe (Syntax Parse)
Verifica se a consulta j´a foi carregada na mem´oria (Shared Pool)
Cen´ario 1
Se j´a foi carregada, o plano de execuc¸˜ao j´a est´a feito
Reutiliza o plano de execuc¸˜ao
21 / 27
23. Executando um SQL
PARSE
Valida a sintaxe (Syntax Parse)
Verifica se a consulta j´a foi carregada na mem´oria (Shared Pool)
Cen´ario 2
Se n˜ao foi carregada, verifica o dicion´ario de dados, checando a
existˆencia das tabelas/colunas/permiss˜oes de acesso dos objetos
Trac¸a o plano de execuc¸˜ao (Parse Tree)
Coloca o plano de execuc¸˜ao na mem´oria (Shared Pool)
22 / 27
24. Executando um SQL
EXECUTE
Aplica o plano de execuc¸˜ao
Efetua a leitura dos dados (em disco ou mem´oria)
Verifica as regras de integridade (Constraints)
Executa
23 / 27
26. Banco
Pais (sigla, nome)
Cidade (codigo, nome, UF, pais) pais referencia Pais (sigla)
Cliente (codigo, nome, tipo, contrato, cargo, endereco, cidade, cep, fone, fax, obs) cidade
referencia Cidade (codigo)
Funcao (codigo, nome, gratif)
Setor (sigla, nome, ramal, chefe)
Funcionario (codigo, nome, sexo, rg, cpf, datanasc, naturalidade, dataadm, funcao,
cidade, setor, ...) naturalidade referencia Cidade (codigo) funcao referencia Funcao
(codigo) cidade referencia Cidade (codigo) setor referencia Setor (sigla)
Tipo (codigo, nome, descricao)
Pedido (codigo, cliente, vendedor, dataPedido, dataFatura, via, frete) cliente referencia
Cliente (codigo) vendedor referencia Funcionario (codigo)
Produto (codigo, nome, descricao, apresent, venda, custo, quantest, estmin, tipo,
situacao, status) tipo referencia Tipo (codigo)
Itens (pedido, produto, preco, quant, desconto) pedido referencia Pedido (codigo)
produto referencia Produto (codigo)
25 / 27
27. Exerc´ıcio
1. Crie uma consulta SQL que retorne o c´odigo e o nome de todos
os funcion´arios da base de dados
2. Crie uma consulta SQL que retorne o c´odigo e o nome dos
funcion´arios do sexo masculino
3. Crie uma consulta SQL que retorne o c´odigo e o nome dos
produtos cujo valor de venda ´e maior do que 500 reais
4. Crie uma consulta SQL que retorne o c´odigo e o nome do
produto, al´em do nome do tipo do produto para todos os
produtos da base de dados
5. Crie uma consulta SQL que retorne o nome do cliente e o nome
da cidade onde o cliente mora, para todos os clientes da base de
dados
26 / 27