Escolar Documentos
Profissional Documentos
Cultura Documentos
Exemplo - pedido
Diagrama Entidade-Relacionamento
N
Pedido
Pedido
N
faz
tira
Cliente
Cliente
Vendedor
Vendedor
possui
Produto
Produto
Exemplo Pedido
N
Diagrama ER
Pedido
Pedido
possui
Produto
Produto
N
faz
tira
Cliente
Cliente
Vendedor
Vendedor
Diagrama de Tabelas
Pedido
Pedido
Cliente
Cliente
Vendedor
Vendedor
Item_de_Pedido
Item_de_Pedido
(possui )
(possui )
Produto
Produto
Exemplo Pedido
PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
ITEM_DO_PEDIDO
ITEM_DO_PEDIDO
Nm_pedido
Nm_pedido
Cdigo_produto
Cdigo_produto
Quantidade
Quantidade
CLIENTE
CLIENTE
Cdigo_cliente
Cdigo_cliente
Nome_cliente
Nome_cliente
Endereo
Endereo
Cidade
Cidade
CEP
CEP
UF
UF
CGC
CGC
IE
IE
VENDEDOR
VENDEDOR
Cdigo_vendedor
Cdigo_vendedor
Nome_vendedor
Nome_vendedor
Faixa_comisso
Faixa_comisso
Salrio_fixo
Salrio_fixo
PRODUTO
PRODUTO
Cdigo_produto
Cdigo_produto
Descrio
Descrio
Unidade
Unidade
Val_unit
Val_unit
SQL:DDL
Reviso
char (n) : cadeia de caracter de tamanho fixo (pode-se usar character - mx n 255)
float (n): nmero em ponto flutuante com preciso definida pelo usurio em pelo menos n
dgitos.
date: tipo calendrio contendos sculo, ano (4 dgitos), ms e dia do ms.+ horas horrio, em
horas, minutos e segundos. ( 12:00 quando somente data, DD-MON-YY )
long: alfanumrico de tamanho varivel. ( 2Giga), um por tabela. No pode ser usado em
consulta
Ex:tabelas ITEM_DO_PEDIDO
CREATE TABLE ITEM_DO_PEDIDO
(num_pedido smallint not null unique,
cdigo_produto smallint not null unique,
quantidade number(3),
FOREIGN KEY (num_pedido)
REFERENCES PEDIDO,
FOREIGN KEY (cdigo_produto)
REFERENCES PRODUTO);
Destruio de Tabelas
Forma: DROP TABLE <tabela>;
DROP TABLE PEDIDO;
colunas
tabela
restries
(projeo )
(linhas seleo )
Aluno
RA
Nome
Idade
952001
Ana
19
992655
Marco
20
302566
Paulinha
22
...
...
...
tabela
Coluna 1
Linha 1
Resultado:
Select *
from <tabela> ;
Problema:
Select
From
Cdigo do
Vendedor
209
111
11
240
720
213
101
310
250
*
vendedor ;
Nome do
Vendedor
Jos
Carlos
Joo
Antnio
Felipe
Jonas
Joo
Josias
Maurcio
Salrio
Fixo
1.800,00
2.490,00
2.780,00
9.500,00
4.600,00
2.300,00
2.650,00
870,00
2.930,00
Faixa de
Comisso
C
A
C
C
A
A
C
B
B
Onde:
Where
Observaes:
quando o atributo do tipo caracter, o <valor> deve estar entre aspas ().
Ex: Parafuso. Em SQL existe diferena entre Parafuso e parafuso.
SQL:
Resultado:
Select
from
Where
Nmero do
Pedido
121
138
Cdigo do
Produto
31
77
Quantidade
35
35
AND , OR ;
NOT.
Uso de ( ) para alterar a precedncia : AND > OR
Problema :
Listar
os produtos que tenham unidade igual a M e valor unitrio igual a R$ 1,05
SQL:
Select descrio_produto
from produto
Where unidade = M AND val_unit = 1.05 ;
Resultado:
DESCRICAO
Papel
Select
from
Where
nome_cliente, endereo
cliente
(CEP >= 30077000 AND CEP <= 30079000) OR
cidade = 'So Paulo;
Resultado:
NOME CLIENTE
Flvio
Jorge
Maurcio
Rodolfo
Beth
Lvio
Renato
ENDERECO CLIENTE
Av.Pres.Vargas10
Rua Caiapo13
Av.Paulista1236 sl 2345
Largo da Lapa 27 sobrado
Av. Climrio n.45
Av. Beira Mar n.1256
Rua Meireles n.1231 bl.2 sl.345
SQL:
Resultado:
NMERO DO PEDIDO
121
97
137
148
104
203
......
98
91
-Listar o cdigo e a descrio dos produtos que tenham o valor unitrio na faixa
de R$ 0,32 at R$ 2,00.
SQL:
Select
from
Where
Resultado:
CDIGO DO
PRODUTO
25
31
78
53
87
77
DESCRIO
Queijo
Chocolate
Vinho
Linha
Cano
Papel
SQL:
Select
from
cdigo_produto, descrio_produto
produto
Where
Resultado:
CODIGO DO PRODUTO DESCRIO
25
Queijo
-Where
<valores> fornecido.
Estes minimizam o uso dos operadores: =, <>, AND e OR.
Problema:
Select nome_vendedor
from vendedor
Where faixa comisso IN (A, 'B');
Resultado:
NOME VENDEDOR
Carlos
Felipe
Jonas
Josias
Maurcio
Select *
from cliente
Where
IE IS NULL;
Select
nome_vendedor, salrio_fixo
from
vendedor
order by nome_vendedor;
Problema:
-Mostrar o novo salrio fixo dos vendedores, de faixa de comisso 'C,
SQL:
Select
nome_vendedor,
novo salrio = (salrio_fixo * 1.75) + 120
from
vendedor
Where
faixa comisso = 'C'
order by nome_vendedor;
MAX, MIN
SUM, AVG
F.1) Buscando Mximos e Mnimos (MAX, MIN)
Problema:
MIN(salrio_fixo), MAX(salrio_fixo)
vendedor ;
Resultado:
MIN(salrio fixo) MAX(salrio fixo)
870,00
9.500,00
F.2) Totalizando Colunas (SUM)
Problema:
SUM(quantidade),
from
item_do_pedido
Where cdigo_produto = 78 ;
Resultado:
AVG(salrio_fixo)
3.324,44
F.4) Contando os Registros (COUNT)
Problema:
SQL:
Resultado:
COUNT(*)
5
COUNT(*),
vendedor
salrio_fixo >2500 ;
Vrios registros dentro de uma tabela podem conter os mesmos valores, com
exceo da chave primria.
Algumas consultas podem trazer informaes erradas.
A clusula DISTINCT, foi criada para no permitir que certas redundncias,
obviamente necessrias, causem problemas.
Problema:
- Quais as unidades de produtos, diferentes, na tabela produto?
SQL:
Resultado:
UNIDADE
K
BAR
L
M
SAC
G
PR0DUT0. descrio
Os qualificadores de nome so utilizados em uma
consulta para efetivar a juno (JOIN) entre tabelas.
(nomes de colunas iguais em tabelas diferentes)
PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
c1
c2
...
cn
PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
p1
p2
...
pn
SELECT
FROM
PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
cliente , pedido
SELECT
cliente.codigo_cliente, pedido.
codigo_cliente, num_pedido
FROM
cliente , pedido
NOME CLIENTE
PEDIDO.COD_CLIENTE
NUMERO PEDIDO
Ana
720
97
Ana
260
111
Ana
870
54
Ana
390
119
Ana
260
103
Ana
830
203
Ana
410
121
Ana
110
104
Ana
180
105
Ana
720
83
Ana
290
108
Ana
410
89
Flvio
720
97
Flvio
260
111
Equao de JUNO
CLIENTE
CLIENTE
PEDIDO
PEDIDO
Cdigo_cliente
Cdigo_cliente
Nome_cliente
Nome_cliente
Endereo
Endereo
Cidade
Cidade
CEP
CEP
UF
UF
CGC
CGC
IE
IE
c1
c2
...
cn
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
p1
p2
...
pn
PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
PEDIDO.COD_CLIENTE
NMERPEDIDO
Ana
720
97
Ana
720
101
Ana
720
137
Ana
720
148
Flvio
870
189
Jorge
110
104
Maurcio
830
203
Rodolfo
410
121
Rodolfo
410
98
Rodolfo
410
127
Beth
20
143
Lvio
180
105
Susana
260
111
Susana
260
103
Susana
260
91
Susana
260
138
Renato
290
108
Sebastio
390
119
CLIENTE
CLIENTE
Cdigo_cliente
Cdigo_cliente
Nome_cliente
Nome_cliente
Endereo
Endereo
Cidade
Cidade
CEP
CEP
UF
UF
CGC
CGC
IE
IE
PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente
Cdigo_cliente
Cdigo_vendedor
Cdigo_vendedor
SELECT cliente.codigo_cliente,
FROM
cliente.codigo_cliente=pedido.codigo_cliente
Problema:
Quais clientes que tm prazo de entrega
superior a 15 dias e que pertencem aos
estados de So Paulo (SP) ou Rio de
Janeiro (RJ)?
Problema:
UF
PRAZO_ENTREGA
Ana
RJ
20
Maurcio
SP
30
Rodolfo
RJ
20
Beth
SP
30
Susana
RJ
20
Exerccio 7:
- Mostrar os clientes e seus respectivos
prazos de entrega, ordenados do maior
para o menor.
ALIASES (sinnimos):
Pode-se definir sinnimos, evitando escrever os nomes das tabelas
nas qualificaes de nome.
A definio dos ALIASES feita na clausula FROM.
utilizada normalmente nas outras clausulas (Where, order by,
group by, having, select).
Problema:
Select
from
Where
Exerc 9:
Mostre todos os vendedores que
venderam chocolate em quantidade
superior a 10 Kg.
Exerc 10:
Quantos clientes fizeram pedido com o
vendedor Joo?
Problema:
Quantos clientes da cidade do Rio de
Janeiro, e Niteri tiveram seus pedidos
tirados com o vendedor Joo?
Problema:
Quantos clientes da cidade do Rio de Janeiro, e Niteri tiveram seus pedidos tirados com
o vendedor Joo?
Problema:
Que produtos participam em qualquer
pedido cuja quantidade seja 10?
Problema:
Que produtos participam em qualquer pedido cuja quantidade seja 10?
Select descrio
from produto
Where cod_produto IN
( Select cod_produto
from
item_pedido
Where quantidade = 10 );
Exerc 11:
Quais vendedores ganharam um salrio
fixo abaixo da mdia?
Exerc 12:
Quais os produtos que no esto presentes
em nenhum pedido? ( cdigo e descrio)
Problema:
Quais os vendedores que s venderam
produtos por grama ('G)?
Select
DISTINCT cod_vendedor, nome vendedor
from
vendedor V
Where
G= ALL
( Select unidade
from
pedido P, item_pedido I , produto PR
Where P. num_pedido = I. num_pedido AND
I. cod_produto = PR. cod_produto AND
p. cod_vendedor = V. cod vendedor ) ;
Exerc 13:
Quais clientes esto presentes em mais
de trs pedidos?
Exerc 13:
Quais clientes esto presentes em mais
de trs pedidos?
Problema:
- Listar os nomes e cdigos dos vendedores que
tm salrio fixo maior que RS 1.000,00 e nomes
e cdigos de clientes que residem no Rio de
Janeiro.
Select codigo = cod_cliente, nome = nome_cliente
from
cliente
Where UF = RJ
UNION
Select cod_vendedor, nome_vendedor
from
vendedor
Where salrio_fixo > 1000.00
Atualizando um Registro
Forma:
UPDATE <nome da tabela>
Set
<nome da(s) Coluna(s) > = valor
Where
<condio>;
Problema:
- Alterar o valor unitrio do produto 'parafuso' de R$ 1.25 para R$
1.62.
update
set
Where
produto
val_unit = 1.62
descrio = 'Parafuso' ;
Problema:
Pr- Atualizar o salrio fixo de todos os
vendedores em 27% mais uma bonificao
de R$ 100,00.
update vendedor
set
salrio_fixo =
100.00;
(salario_fixo * 1.27) +
Problema:
- Acrescentar 2,5% ao preo unitrio dos produtos
que estejam abaixo da mdia dos preos, para
aqueles comprados a Quilo.
update produto
set
val_unit = val_unit * 1.025
Where val_unit <
( Select AVG ( val_unit )
from produto
Where unidade = Kg ) ;
Problema:
Apagar todos os registros de pedidos realizados por
vendedores fantasmas (operao caa-fantasma).
DELETE FROM
pedido P
Where
not exists
( Select cod_vendedor
from
vendedor
Where cod_vendedor = P. cod_vendedor )
;