Você está na página 1de 66

Banco de Dados I

Linguagem de Consulta (parte II)


 Recuperando Dados de Vrias
Tabelas (JOINS)


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

 Linguagem de Definio de Dados: ...


create, alter, drop
 Consultando informaes: select

Criao e Destruio de Tabelas


CREATE TABLE <tabela>
(<descrio das colunas>);
(<descrio das chaves>);


char (n) : cadeia de caracter de tamanho fixo (pode-se usar character - mx n 255)

varchar ou varchar2 (n): caracteres de tamanho varivel. (pode-se usar




character varing - mx n 2000).

smallint: um inteiro pequeno

number (p,d): nmero com mx de 38 caracteres. p o total incluindo a casa decimal


e d o nmero de casas decimais. Ex numeric(3,1) 44,5 444,5 e 0,32

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

raw ou long raw: campo binrio de tamanho varivel. ( 2000 e 2Giga)

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);

CREATE TABLE ITEM_DO_PEDIDO


(num_pedido smallint not null ,
cdigo_produto smallint not null,
quantidade number(3),
FOREIGN KEY (num_pedido)
REFERENCES PEDIDO,
FOREIGN KEY (cdigo_produto)
REFERENCES PRODUTO,
PRIMARY KEY (num_pedido ,cdigo_produto));

Ex:tabelas Vendedor e Produto


CREATE TABLE VENDEDOR
(cdigo_vendedor smallint not null,
nome_vendedor char(20),
salrio_fixo number(6,2),
faixa_comisso char(1),
PRIMARY KEYcdigo_vendedor)
(
);
CREATE TABLE PRODUTO
(cdigo_produto smallint not null ,
unidade char(3),
descrio_produto char(30),
val_unit number(10,2),
PRIMARY KEYcdigo_produto)
(
);

Destruio de Tabelas
Forma: DROP TABLE <tabela>;
DROP TABLE PEDIDO;

Consultando dados: estrutura


Select
From
Where

colunas
tabela
restries

(projeo )
(linhas seleo )

Aluno
RA

Nome

Idade

952001

Ana

19

992655

Marco

20

302566

Paulinha

22

...

...

...

tabela

Coluna 1

Linha 1

Extraindo Dados de uma Tabela: Comando


SELECT (projeo - )
A) Selecionando Colunas Especificas da Tabela:
Forma:
Select <nome(s) da(s) coluna(s)>
from <tabela>;
Problema :

-Listar todos os produtos com respectivas descries, unidades e


valores unitrios.
SQL:

Select descrio, unidade, valor_unitrio


from produto;

Resultado:

Extraindo Dados de uma Tabela: Comando


SELECT (projeo - )
B) Selecionando todas as Colunas da Tabela
Forma:

Select *
from <tabela> ;

Problema:

- Listar todo o contedo de Vendedor


SQL:

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

Selecionando somente alguns Registros da


Tabela: ( seleo - )
Forma:

Select <nomes da(s) coluna(s)>


from <tabela>
Where <restries>;

Onde:
Where

<nome da coluna> <operador> <valor>

C.1) Operadores Relacionais:



Observaes:

= , <> ou != , < , >


>= , <=

quando o atributo do tipo caracter, o <valor> deve estar entre aspas ().
Ex: Parafuso. Em SQL existe diferena entre Parafuso e parafuso.

Selecionando somente alguns Registros da


Tabela: ( seleo - )
Problema:

- Listar o num_pedido, o cdigo_produto e a quantidade dos itens do pedido


com a quantidade igual a 35.

SQL:

Resultado:

Select
from
Where

num_pedido, cdigo_produto, quantidade


item_do_pedido
quantidade = 35;

Nmero do
Pedido
121
138

Cdigo do
Produto
31
77

Quantidade
35
35

Selecionando somente alguns Registros da


Tabela:
C.2) Operadores Lgicos:

 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

Selecionando somente alguns Registros da


Tabela:
Exerc 3:

Liste os clientes e seus respectivos endereos que moram em So


PauloOU estejam na faixa de CEP entre '30077000' e '30079000'.
SQL:

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

Selecionando somente alguns Registros da


Tabela:
Problema:

- Mostrar todos os pedidos que no tenham prazo de entrega igual a 15 dias


Select num_pedido
from pedido
Where NOT ( prazo_entrega = 15 );

SQL:

Resultado:
NMERO DO PEDIDO
121
97
137
148
104
203
......
98
91

Selecionando Registros da Tabela:


C.3) Operadores Between e NOT Between

Where <nome da coluna>

BETWEEN <valor1> AND <valor2>

Where <nome da coluna> NOT BETWEEN <valor1> AND <valor2>

 Pesquisa por uma determinada coluna que esteja dentro


da faixa de valores
 No h necessidade dos operadores >=, <= e AND.
Os VALOR1 e VALOR2 tm que ser do mesmo tipo de
dado da coluna.

Selecionando Registros da Tabela:


C.3) Operadores Between e NOT Between
Problema:

-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

cdigo_ produto, descrio_produto


produto
val_unit BETWEEN 0.32 AND 2.00;

Resultado:
CDIGO DO
PRODUTO
25
31
78
53
87
77

DESCRIO
Queijo
Chocolate
Vinho
Linha
Cano
Papel

Selecionando Registros da Tabela:


C.4) Operadores LIKE e NOT LIKE

-Where <nome da coluna> LIKE <valor>;


-Where <nome da coluna> NOT LIKE <valor>;
 LIKE e NOT LIKE s trabalham sobre colunas que sejam do tipo CHAR.
 Eles tm praticamente o mesmo funcionamento que os operadores =, < > ,
 Podem utilizar os smbolos ( % ) e ( _ ) que podem fazer o papel de "Curinga":
% - substitui uma palavra
_ - substitui um caractere
 Ex LAPIS % 'pode enxergar os seguintes registros:
LAPIS PRETO,
LAPIS CERA',
'LAPIS BORRACHA
 BROCA N_ pode enxergar os seguintes registros;
'BROCA N1,
'BROCA N9,
BROCA N3,

Selecionando Registros da Tabela:


C.4) Operadores LIKE e NOT LIKE
Exerc 4:

- Listar todos os produtos que tenham a sua unidade comeando por K.

SQL:

Select
from

cdigo_produto, descrio_produto
produto

Where

unidade LIKE 'K_ ;

Resultado:
CODIGO DO PRODUTO DESCRIO
25
Queijo

Selecionando Registros da Tabela:


C.5) Operadores IN e NOT IN

-Where

<nome da coluna> IN <valores>;

-Where <nome da coluna> NOT IN <valores> ;

 Pesquisam registros que esto ou no contidos no conjunto de

<valores> fornecido.
 Estes minimizam o uso dos operadores: =, <>, AND e OR.

Selecionando Registros da Tabela:


C.5) Operadores IN e NOT IN

Problema:

- Listar os vendedores que so da faixa de comisso A e B.


SQL:

Select nome_vendedor
from vendedor
Where faixa comisso IN (A, 'B');

Resultado:
NOME VENDEDOR
Carlos
Felipe
Jonas
Josias
Maurcio

Selecionando Registros da Tabela:


C.6) Operadores IS NULL e IS NOT NULL

- Where<nome da coluna> IS NULL;


- Where<nome da coluna> IS NOT NULL;
Problema:

- Mostrar os clientes que no tenham inscrio estadual.


SQL:

Select *
from cliente
Where
IE IS NULL;

Selecionando Registros da Tabela:


D) Ordenando os Dados Selecionados

Select<nome da(s) coluna(s)>


from <tabela>
Where<condio(es)>
order by <nome da(s) coluna(s)> ASC / DESC
ou
order by <nmero da coluna >
ASC (default) / DESC
Problema:
- Mostrar em ordem alfabtica a lista de vendedores e seus respectivos
salrios fixos.
SQL:

Select
nome_vendedor, salrio_fixo
from
vendedor
order by nome_vendedor;

Selecionando Registros da Tabela:


E) Realizando CLCULOS com Informaes Selecionada

Problema:
-Mostrar o novo salrio fixo dos vendedores, de faixa de comisso 'C,

calculado com base no reajuste de 75% acrescido de R$ 120,00 de


bonificao. Ordenar pelo nome do vendedor.

SQL:
Select

nome_vendedor,
novo salrio = (salrio_fixo * 1.75) + 120
from
vendedor
Where
faixa comisso = 'C'
order by nome_vendedor;

Selecionando Registros da Tabela:


E) Realizando CLCULOS com Informaes Selecionada
F) Utilizando Funes sobre Conjuntos

MAX, MIN
SUM, AVG
F.1) Buscando Mximos e Mnimos (MAX, MIN)
Problema:

- Mostrar o menor e o maior salrio de vendedor.


SQL:
Select
from

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:

Mostrar a quantidade total pedida para o produto 'VINHO' de cdigo '78'.


SQL:
Select

SUM(quantidade),

from

item_do_pedido

Where cdigo_produto = 78 ;

Selecionando Registros da Tabela:


E) Realizando CLCULOS com Informaes Selecionada
Problema:

- Qual a mdia dos salrios fixos dos vendedores?


SQL:

Select AVG (salrio_fixo),


from vendedor;

Resultado:

AVG(salrio_fixo)
3.324,44
F.4) Contando os Registros (COUNT)
Problema:

- Quantos vendedores ganham acima de R$ 2.500., de salrio fixo?


Select
from
Where

SQL:

Resultado:
COUNT(*)
5

COUNT(*),
vendedor
salrio_fixo >2500 ;

Selecionando Registros da Tabela:


F.5) Utilizando a Clusula DISTINCT

 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:

Select DISTINCT unidade,


produto;
from

Resultado:
UNIDADE
K
BAR
L
M
SAC
G

Recuperando Dados de Vrias Tabelas


(JOINS)
Trabalhamos at agora com a recuperao de
dados sobre apenas uma tabela, no entanto um
banco de dados formado por vrias tabelas
que se relacionam.
Para recuperar informaes em de vrias
tabelas muitas vezes precisamos realizar uma
JUNO (JOIN) entre as tabelas. esta
operao e suas implicaes que ser abordado
nesta momento.

Recuperando Dados de Vrias Tabelas


(JOINS)
 O Conceito de Qualificadores de Nome
 Consiste em identificar as colunas pr meio do nome
das tabela.
 Qualificador de nome para a coluna descrio da
tabela PRODUTO ser:

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)

Recuperando Dados de Vrias Tabelas


(JOINS)

 Juntar a tabela cliente com pedido,


identificando os pedidos de cada cliente.
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



Recuperando Dados de Vrias Tabelas


(JOINS)

 Uma soluo realizar a operao de produto


cartesiana entre os dois conjuntos.
CLIENTE
CLIENTE
Cdigo_cliente
Cdigo_cliente
Nome_cliente
Nome_cliente
Endereo
Endereo
Cidade
Cidade
CEP
CEP
UF
UF
CGC
CGC
IE
IE

c1
c2

...
cn

PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente 
Cdigo_cliente 
Cdigo_vendedor
Cdigo_vendedor



p1
p2

...
pn

Recuperando Dados de Vrias Tabelas


(JOINS)

 Uma soluo realizar a operao de produto


cartesiana entre os dois conjuntos.
CLIENTE
CLIENTE
Cdigo_cliente
Cdigo_cliente
Nome_cliente
Nome_cliente
Endereo
Endereo
Cidade
Cidade
CEP
CEP
UF
UF
CGC
CGC
IE
IE

SELECT
FROM

PEDIDO
PEDIDO
Nm_pedido
Nm_pedido
Prazo_entrega
Prazo_entrega
Cdigo_cliente 
Cdigo_cliente 
Cdigo_vendedor
Cdigo_vendedor



cliente.codigo_cliente, pedido. codigo_cliente, num_pedido

cliente , pedido

Recuperando Dados de Vrias Tabelas


(JOINS)
Podemos notar que dessa operao de juno, poucas informaes
podem ser extradas. Uma vez que a operao realizada foi a de produto
cartesiano, onde feita a combinao de cada elemento de um conjunto
com todos os elementos do outro conjunto.
 Assim, h a necessidade de qualificar o tipo de juno, para podermos
obter algum resultado concreto.


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

Recuperando Dados de Vrias Tabelas


(JOINS)
 Assim, h a necessidade de qualificar o tipo de juno, para podermos
obter algum resultado concreto.

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

SELECT cliente.codigo_cliente, pedido. codigo_cliente, num_pedido


FROM cliente , pedido AND
cliente.codigo_cliente =pedido.codigo_cliente

Recuperando Dados de Vrias Tabelas


(JOINS)

 Juntar a tabela cliente com pedido,


identificando os pedidos de cada cliente.
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



Recuperando Dados de Vrias Tabelas


(JOINS)

 Juntar a tabela cliente com pedido,


identificando os pedidos de cada cliente ?
NOME CLIENTE

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

pedido. codigo_cliente, num_pedido

Beth

20

143

Lvio

180

105

cliente , pedido AND

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:

Select nome_cliente, UF , prazo_entrega


from
cliente, pedido
Where UF IN (SP, RJ') AND prazo_entrega > 15
AND cliente.cod_cliente = pedido.cod_cliente;
NOME_CLIENTE

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:

Apresentar os vendedores, ordenados por nome, que emitiram


pedidos com prazos de entrega superiores a 15 dias e que tenham
salrios fixos igual ou superior a R$ 1.000,00.
nome_vendedor, prazo_entrega
vendedor V , pedido P
salrio_fixo >= 1000.00 AND prazo_entrega > 15 AND
V. cod_vendedor = P. cod_vendedor
order by nome_vendedor;

Select
from
Where

Juntando mais de duas Tabelas


Exerc 8: Mostre os clientes (ordenados) que tm
prazo de entrega major que 15 dias para o
produto QUEIJO e que sejam do Rio de Janeiro.

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?

Select cidade, nmero = COUNT (nome_cliente)


from cliente C , pedido P, vendedor V
Where nome_vendedor = 'Joo' AND
CIDADE IN ('Rio de Janeiro', 'Niteri') AND
V. cod_vendedor = P. cod_Vendedor AND
P. cod_cliente = V. cod cliente
Group by cidade;

Utilizando Consultas Encadeadas


(Subqueries)
Subquery quando o resultado de uma consulta
utilizado por outra consulta, de forma
encadeada e contida no mesmo comando SQL.
Sua forma geral:
SELECT col1, col2
FROM tab1
WHERE col1 , col2 IN
( SELECT col1, col2
FROM tab2
WHERE restrio);

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)

Select cd_produto, descrio


from
produto P
Where not exists
( Select *
from item_pedido
Where cod_produto = P. cod_produto ) ;

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?

Combinando Resultados de Pesquisas (


UNION)
Combina os resultados de duas ou mais colunas
feitas sobre tabelas.
Devem selecionar o mesmo nmero de colunas.
 As colunas selecionadas devem ser do mesmo
tipo.

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

Adicionando Registro Tabela


Forma:
INSERT INTO <nome da tabela>
(<nome da(s) coluna(s)>)
VALUES (<valores>);

Adicionando Registro Tabela


Adicionar a produto parafuso a tabela
produto?
Insert into produto
values ( 108 , 'Parafuso', 'Kg' , 1.25 );

Adicionando Registros usando um


SELECT
Forma:
INSERT INTO <nome da tabela> (<nome da(s) coluna(s)>)
Select <nome da(s) coluna(s)>
from <nome da tabela>
Where <condio>;
Problema:
- Cadastrar como cliente os vendedores que emitiram mais de 50 pedidos.
Usar para cdigo de cliente o mesmo cdigo de vendedor

Insert into Cliente (cod_cliente, nome cliente)


Select cod_vendedor, nome_vendedor, COUNT(*)
from vendedor V, pedido p
Where V. cod_vendedor = P. cod_vendedor
having count ( * ) > 50 ;

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 ) ;

Apagando Registros da Tabela


Forma:
DELETE FROM <nome da tabela>
WHERE <condio>;

Apagando Registros da Tabela


Problema:
- Apagar todos os vendedores com faixa de
comisso nula.
DELETE FROM vendedor
Where
faixa_ comisso IS NULL ;

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 )
;

Você também pode gostar