Você está na página 1de 9

1

FACULDADES CARLOS DRUMMOND DE ANDRADE

IMPLEMENTAO DO MODELO FSICO NO ORACLE

Prof. Antonio Alberto Santana

So Paulo, fevereiro de 2016


2
IMPLEMENTAO DO MODELO FSICO

MODELO LGICO DE DADOS

Sexo

Clientes
Pedidos

Itens
Produtos pedidos

SEXO Conjunto domnio do sexo dos clientes.


Atributo Tipo Tam Nulo Valores Descrio
? possveis
Codigo num 01 No  0 Cdigo identificador do sexo
(PK)
Descricao alfan 20 No Descrio do sexo

PRODUTOS Produtos para venda pela loja.


Atributo Tipo Tam Nulo Valores Descrio
? possvei
s
Codigo num 03 No  0 Cdigo identificador do
produto (PK)
Descricao alfan 40 No Descrio do produto
Preo Num 10(2) No > 0 Preo do produto

CLIENTES Pessoas fsicas responsveis pelas compras na loja.


Atributo Tipo Tam Nulo? Valores Descrio
possveis
Codigo Num 03 No  0 Cdigo identificador do
cliente (PK)
Nome Alfan 40 No Nome de identificao do
cliente
Cpf Alfan 11 No Numero do Cadastro de Pessoa
Fsica junto Receita
Federal do Brasil
Data_nasc Data - No Data de nascimento do cliente
to
Sexo Num 1 Sim Sexo do cliente (FK)
3

PEDIDOS Registros dos pedidos feitos pelos clientes


loja.
Atributo Tipo Tam Nulo? Valores Descrio
possveis
Numero Num 06 No  0 Nmero de identificao do
pedido (PK)
Cliente Num 03 No Cdigo identificados do
cliente (FK)
Data do Data - No Data em que foi realizado
pedido o pedido
Valor Num 10(2) No >= 0 Valor total do pedido
pedido

ITENS PEDIDO Registros dos itens dos pedidos.


Atributo Tipo Tam Nulo? Valores Descrio
possveis
Pedido Num 06 No Nmero de identificao do
pedico (PK)
Item Num 03 No  0 Cdigo identificados do
pedido item do pedido (PK)
(sequencial por pedido)
Qtde Num 03 No Quantidade dos produtos no
item
Produto Num 03 No Cdigo identificador do
produto (FK)
Valor Num 10(2) No >= 0 Valor unitrio do item do
unitrio pedido
Valor Num 10(2) N0 >= 0 Valor total do item do
total item pedido

TIPOS DE DADOS (DATATYPES)


Datatype Tamanho mx. Descrio
Char(tamanho) 2000 Campo caracter tamanho fixo
Varchar2(tam) 4000 Campo caracter tamanho varivel
(especificar tamanho mximo)
Number (p, e) 38,38 Campo numrico de tamanho varivel
Date - Tamanho fixo no formato data (dd-mmm-yy)
Long 2 Gb Campo caracter de tamanho varivel
Raw 2000 Campo binrio de tamanho varivel
Long raw 2 Gb Campo binrio de tamanho varivel
CLOB 4 Gb Campo caracter para objetos longos

INTERVAL DAY 11 bytes Data com dias, horas, minutos e segundos


TO SECOND

CRIAO DE TABELAS

SINTAXE:
CREATE TABLE esquema.nome-table
(coluna1 number(99) NOT NULL,
coluna2 varchar2(99),
coluna3 DATE,
coluna4 number (7,2));
4

EXEMPLO:
CREATE TABLE sexo
(codigo number(01) PRIMARY KEY,
descricao varchar2(20) NOT NULL
);

LISTAR A ESTRUTURA DA TABELA

SINTAXE: describe nome_tabela

EXEMPLO: describe sexo

INSERIR DADOS NA TABELA

SINTAXE:
insert into nome_tabela (coluna1, coluna2, coluna3, ...)
values (valor_coluna1, valor_coluna2, valor_coluna3, ...)

EXEMPLO:
insert into sexo (codigo, descricao)
values
(1, masculino);

CREATE TABLE produtos


(codigo number(03) PRIMARY KEY,
descricao varchar2(40) NOT NULL,
preco number(10,2) not null
);

describe produtos

insert into produtos (codigo, descrio, preco)


values
(101, Computador HP 2Gb 500HD, 900.00);
insert into produtos (codigo, descrio, preco)
values
(102, Pen Drive Multilaser 4Gb, 16.90);

CREATE TABLE clientes


(codigo number(06) PRIMARY KEY,
nome varchar2(40) NOT NULL,
cpf char(11) NOT NULL,
data_nascto DATE NOT NULL,
sexo number(01) NULL CONSTRAINT fk01_cli
REFERENCES sexo
);

describe pedidos
5
insert into clientes (codigo, nome, cpf, data_nascto, sexo)
values (1, Maria do Rosrio, 12345678910 10/05/1980,
2);

CREATE TABLE pedidos


(numero number(03) PRIMARY KEY,
data_pedido DATE NOT NULL,
cliente number(03) NOT NULL CONSTRAINT fk01_pedido
REFERENCES clientes,
valor_pedido number(10,2) not null
);

describe pedidos

insert into pedidos (numero, data_pedido, cliente, valor)


values (1, sysdate, 1, 0);

CREATE TABLE itens_pedidos


(pedido number(03) not null
Constraint FK01_Itens references pedidos,
item_pedido number(03) not null,
qtde number(03) NOT NULL,
produto number(03) NOT NULL
CONSTRAINT fk02_Itens REFERENCES produtos,
valor_unitario number(10,2) not null,
valor_total_item number (10,2) not null
);

----- criando a chave primria da tabela -------


Alter table itens_pedidos
add constraint pk01_itens primary key (pedido,
item_pedido);

describe itens_pedidos

insert into itens_pedidos (pedido, item_pedido, qtde,


produto, valor_unitario, valor_total_item)
values
(1, 1, 1, 101, 900.50, 900.50);

insert into itens_pedido (pedido, item_pedido, qtde,


produto, valor_unitario, valor_total_item)
values
(1, 2, 2, 102, 16.90, 33.80);

ALTERAO DE ESTRUTURA DE TABELA

Comando ALTER TABLE para alterar a estrutura de uma tabela,


adicionando ou eliminar uma coluna, modificar uma coluna ou
adicionar e eliminar uma constraint.
6

ADICIONANDO UMA COLUNA

SINTAXE:
ALTER TABLE nome_tabela ADD (nome_coluna tipo_dado(tam))

EXEMPLO:
ALTER TABLE clientes ADD (apelido varchar2(30));

MODIFICANDO UMA COLUNA

SINTAXE:
ALTER TABLE nome_tabela MODIFY (nome_coluna
tipo_dado(tam))

EXEMPLO:
ALTER TABLE pedidos MODIFY (valor_pedido number(12,2));

MUDANAS QUE NO PODEM SER EFETUADAS


1) Mudar uma coluna que contm campos nulos para no
nulos;
2) Adicionar uma coluna NOT NULL em tabela que no esteja
vazia
(adicione a coluna, preencha e troque para NOT NULL)
3) Diminuir o tamanho ou o tipo de uma coluna a no ser
que ela no esteja vazia

ELIMINANDO UMA COLUNA

ALTER TABLE nome_tabela DROP (nome_coluna)

ALTER TABLE clientes DROP (apelido);

REMOVENDO UMA TABELA

DROP TABLE esquema.nome_tabela

DROP TABLE sexo

ERROR at line 1:
ORA-02449: unique/primary keys in table referenced by
foreign keys

DROP TABLE itens_pedido;

RENOMEANDO UMA TABELA

RENAME table_old TO table_new

RENAME sexo TO sexos;


7

ORACLE SQL PLUS

DML (Data Manipulation Language)


a parte do SQL usada para recuperar ou manipular dados.
So os comandos responsveis pelas consultas e alteraes
das tabelas. Os mais importantes so:

Comando Funo
SELECT Comando usado para a recuperao de dados de
uma tabela ou viso.
INSERT Insere uma linha na tabela
DELETE Exclui linhas de uma tabela
UPDATE Altera o contedo de colunas da tabela

O COMANDO SELECT

Utilizado para recuperao de dados.

SELECT [DISTINCT / ALL] { *


/ { [ schema.][table / view}.*
/ expr [c_alias] }
[. { [schema.] {table / view}.*
/ expr [c_alias] } ] ... }
FROM [schema.] {table / view} [t_alias]
[. [schema.] {table / view} [t_alias] ] ...
WHERE condition ]
[GROUP BY expr [, expr] ... [HAVING condition] ]
[ {UNION / UNION ALL / MINUS} SELECT command ]
[ ORDER BY {expr / position} [ASC / DESC]
[, {expr / position} [ASC / DESC] ... ]
DISTINCT

ALL => Retorna todas as linhas selecionadas


* => Seleciona todas as colunas das tabelas ou vises
especificadas no from
table.* => Seleciona todas as colunas da tabela
especificada
view.* => Seleciona todas as colunas da tabela especificada
expr => Seleciona uma expresso, normalmente um nome de
coluna ou uma expresso composta de uma tabela ou viso
especificada
c_alias => Cria m apelido (alias) para a coluna
schema => Esquema que contm a tabela
t_alias => Cria um apelido ou viso para a tabela
WHERE => Filtra as linhas que sero exibidas pela consulta
Sem essa clusula todas as linhas sero exibidas

GROUP BY => Agrupa as linhas selecionadas baseadas no valor


de expresso para cada linha e retorna uma nica linha de
informao para cada grupo
HAVING => Filtra s linhas retornadas exibindo apenas
aquelas cuja expresso seja true
8
UNION => Retorna todas as linhas nicas selecionadas por
qualquer das consultas
UNION ALL => Retorna todas as linhas selecionadas pelas
consultas, incluindo duplicatas
MINUS => Seleciona todas as linhas selecionadas pela
primeira consulta, mas no pela Segunda-feira
ORDER BY => Ordena s linhas retornadas pelo comando SELECT
ASC => Coloca em ordem ascendente
DESC => Coloca em ordem descendente

Exemplos:

Select codigo, nome, data_nascto, from clientes;

Select * from produtos;

Select numero, valor_pedido from pedidos;

select min(valor_pedido), max(valor_pedido), sum(preco)


from pedidos group by clientes;

Select numero, sum(valor_total_pedido) from itens_prdido


group by pedido;

Select codigocat, min(preco), max(preco) from titulos group


by codigocat;

Select codigo, min(valor_pedido), max(valor_pedido) from


pedidos group by cliente having cliente <> 2;

Select * from clientes order by nome;

Select numero, cliente, data_pedido, origem from pedidos


order by data_pedido, cliente;

Select codigo, nome, cpf from clientes order by nome desc;

Select a.numero, b.item_pedido, a.data_pedido, b.descricao


from itens_pedido a, produtos b where a.codigo = b.produto;

Select count(numero) from pedidos;

Select count(numero) from pedidos where cliente = 2;

Select avg(valor_pedido) from pedidos;

O COMANDO UPDATE

Sintaxe:
UPDATE esquema.tabela
SET coluna = valor
WHERE condio
9
EXEMPLO:
Update produtos
set preco = 950.50
where codigo = 1;

O COMANDO DELETE

Sintaxe:
DELETE FROM esquema.tabela
WHERE condio

Delete from itens_pedido


where produto = 1 and cdigo_item = 2;

EXERCCIOS

1) Crie uma coluna numrica DESCONTO na tabela PRODUTOS com


8 inteiros e 2 decimais;

2) Altere os valores PRECO e DESCONTO de alguns produtos;

3) Complete as suas tabelas de CLIENTES e PRODUTOS para no


mnimo 4 linhas; Complete a sua tabela de PEDIDOS com
pelo menos 06 pedidos sendo que os pedidos tero
produtos diversificados;

4) Liste o numero e a data do pedido e o nome do


correspondente cliente;

5) Liste o numero, data_pedido, valor pedido de um


determinado pedido com as descries correspondentes do
seus produtos, quantidade, valor unitrio e valor total
do item;

6) Elimine um determinado pedido da base de dados;

7) Desfaa a eliminao que voc fez no passo anterior.

8) Execute os exemplos dos SELECTs especificados no incio


do texto.

BIBLIOGRAFIA RECOMENDADA

LONEY, K.; THERIAULT, M. Oracle91 O Manual do DBA. 1 ed.


Rio de Janeiro: Campus, 2002.

ABBEY, M.; COREY, M.; ABRAMSON, I. Oracle 8i Guia


introdutrio. 1 ed. Rio de Janeiro: Campus, 2000.

SARAIVA, A. Programando em Oracle. 1 ed. Rio de Janeiro:


IBPI Press, 1999.

Você também pode gostar