Você está na página 1de 37

Treinamento bsico

SQL
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


1

Reviso

Servidores de arquivos
x
Gerenciadores de Bancos de Dados

Jos Simo de Paula Pinto


2
u Viso Geral

n Sistemas de Arquivos x Banco de Dados Relacional


n Conceitos Bsicos de Bancos de Dados Relacional

Jos Simo de Paula Pinto


3

u Acesso a Dados

n Sistemas de Arquivos
l Os dados so obtidos aps percorrer-se um ou mais
arquivos, por meio de linguagens de programao,
sendo em geral necessria a construo de um novo
programa para cada nova consulta
n Banco de Dados Relacional
l O gerenciador de banco de dados obtm as
informaes que foram solicitadas por meio de uma
linguagem de consulta padro, e entrega-as em forma
de lista (ou relatrio)

Jos Simo de Paula Pinto


4
u O Modelo de Entidades e Relacionamentos

Entidades
Entidades Relacionamentos
Relacionamentos Atributos
Atributos

Colunas
Colunas
Existe Colunas
Existe como
como Tabelas
Tabelas
Colunas
ou
(ou
(ou Campos)
Campos)
ou Tabelas
Tabelas numa
numa Tabela
Tabela

Informao
Informao dede Nome,
Nome,
um
um cliente;
cliente; Pedidos
Pedidos dede Endereo,
Endereo,
Exemplos
Exemplos informao
informao dede um cliente
um cliente Telefone
Telefone dodo
um pedido
um pedido cliente
cliente

Jos Simo de Paula Pinto


5

u Tabelas (Entidades) e Colunas (Atributos)


n Tabelas tem nomes nicos
n So compostas por linhas e colunas
n Linhas e colunas podem estar em qualquer ordem
n Tem um identificador nico: chave primria (Primary
Key)
clientes
n Colunas: atributos identificador nome endereo telefone ...

1001 Joo . 5554444 ~~~


1002 Alberto . 4687999 ~~~
1003 Franciso .. NULL ~~~
1004 Maria .. 5678900
1005 Snia ... 0988855 ~~~
1006 Roberto . NULL ~~~

Jos Simo de Paula Pinto


6
u Relacionamentos

clientes
identificador nome . .. . ..
PK NN NN NN NN
1001 Joo S .. . 98022 NULL 05 Jun 1992
1002 Alberto. S .. . 98022 206-555-1212 07 Ago 1992
1008 Wilson . . 98026 NULL 03 Mar 1993

Pedidos
numero cliente produto
PK PK,FK, NN NN
1 1002 567
1 1001 566
2 1001 122

Jos Simo de Paula Pinto


7

u SQL - Structured Query Language

n SQL - linguagem estruturada criada para a manipulao


dos elementos do banco de dados
n Caractersticas importantes:
l Padronizada para os bancos de dados relacionais.
l Cada comando uma descrio do que se deseja
obter.
l Quem executa o comando o gerenciador do banco de
dados.

Jos Simo de Paula Pinto


8
Definio de dados - DDL

Comandos
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


9

u Criar uma tabela - CREATE TABLE

n Permite a criao de uma tabela e a especificao de


como ser seu contedo (nomes e tipos de dados das
colunas)
n Palavras chave:
l CREATE TABLE - especifica o nome da tabela.
l CHAR, VARCHAR - tipos de dados para caracteres.
l INT - tipo de dados para nmeros.

Jos Simo de Paula Pinto


10
u Exemplo de criao de tabela - CREATE TABLE
CREATE
CREATE TABLE
TABLE clientes
clientes
((
nome
nome VARCHAR(40),
VARCHAR(40),
telefone
telefone VARCHAR(10)
VARCHAR(10)
))

ANTES DEPOIS

nome telefone

Jos Simo de Paula Pinto


11

u Apagar (destruir) uma tabela - DROP TABLE

n Permite apagar uma tabela (no somente o contedo,


mas a tabela em si) de um banco de dados.
n Palavras chave:
l DROP TABLE - apaga a tabela indicada
n ATENO: este comando apagar a tabela e todo o seu
contedo do banco de dados especificado ou em uso.
No existe volta ! Use com cuidado !

Jos Simo de Paula Pinto


12
u Exemplo de deleo de tabela - DROP TABLE

DROP
DROP TABLE
TABLE clientes
clientes

ANTES DEPOIS

nome telefone

Joo 445-0988
Alberto 465-98-87
Maria 789-9877
Francisco null

Jos Simo de Paula Pinto


13

Manipulao de dados - DML

Comandos
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


14
u Obtendo informaes - SELECT

n Seleciona linhas e colunas de uma tabela


n Palavras chave:
l SELECT - determina quais as colunas a serem
retornadas ( o asterisco * seleciona todas).
l FROM - determina de quais tabelas sero selecionados
os dados.
l WHERE - determina quais as linhas devero ser
retornadas. A clusula where tambm conhecida por
critrio.

Jos Simo de Paula Pinto


15

u Exemplo do comando SELECT

SELECT
SELECT nome,telefone
nome,telefone
FROM clientes
FROM clientes

nome telefone

Joo 445-0988
Alberto 465-98-87
Maria 789-9877
Francisco null

Jos Simo de Paula Pinto


16
u Exemplo do comando SELECT condicional

SELECT
SELECT nome,telefone
nome,telefone
FROM clientes
FROM clientes
WHERE
WHERE nome
nome == Joo
Joo

nome telefone

Joo 445-0988

Jos Simo de Paula Pinto


17

u Adicionando linhas - INSERT

n Insere linhas em uma tabela


n Palavras chave:
l INSERT - indica a tabela e os nomes das colunas nas
quais ser realizada a incluso dos dados.
l VALUES - informa quais so os valores a serem
includos nas respectivas colunas.

Jos Simo de Paula Pinto


18
u Exemplo do comando INSERT

INSERT
INSERT clientes
clientes (nome,telefone)
(nome,telefone)
VALUES
VALUES (Snia,
(Snia, null)
null)

ANTES DEPOIS

nome telefone nome telefone

Joo 445-0988 Joo 445-0988


Alberto 465-98-87 Alberto 465-98-87
Maria 789-9877 Maria 789-9877
Francisco null Francisco null
Snia null

Jos Simo de Paula Pinto


19

u Alterando informaes - UPDATE

n Altera o contedo de determinadas colunas em uma ou


mais linhas de uma tabela.
n Palavras chave:
l UPDATE - determina qual a tabela que ser alterada.
l SET - determina quais so as alteraes a serem
realizadas, em em quais colunas elas ocorrero.
l WHERE - determina quais so as linhas a serem
alteradas.

Jos Simo de Paula Pinto


20
u Exemplo do comando UPDATE

UPDATE
UPDATE clientes
clientes
SET telefone == 882-3344
SET telefone 882-3344
WHERE nome = Snia
WHERE nome = Snia

ANTES DEPOIS

nome telefone nome telefone

Joo 445-0988 Joo 445-0988


Alberto 465-98-87 Alberto 465-98-87
Maria 789-9877 Maria 789-9877
Francisco null Francisco null
Snia null Snia 882-3344

Jos Simo de Paula Pinto


21

u Apagando informaes - DELETE

n Apaga uma ou mais linhas de uma tabela.


n Palavras chave:
l DELETE - determina qual a tabela que ter linhas
apagadas.
l WHERE - determina quais so as linhas a serem
apagadas.
n Ateno: este comando no apaga a tabela, somente as
suas linhas (seu contedo) !

Jos Simo de Paula Pinto


22
u Exemplo do comando DELETE condicional

DELETE
DELETE clientes
clientes
WHERE nome == Snia
WHERE nome Snia

ANTES DEPOIS

nome telefone nome telefone

Joo 445-0988 Joo 445-0988


Alberto 465-98-87 Alberto 465-98-87
Maria 789-9877 Maria 789-9877
Francisco null Francisco null
Snia 882-3344

Jos Simo de Paula Pinto


23

u Exemplo de comando DELETE sem condio !

DELETE
DELETE clientes
clientes

ANTES DEPOIS

nome telefone nome telefone

Joo 445-0988
Alberto 465-98-87
Maria 789-9877
Francisco null
Snia 882-3344

Jos Simo de Paula Pinto


24
u Resumo dos comandos de manipulao vistos

n SELECT colunas
FROM tabela
WHERE condio
n INSERT tabela
VALUES ( contedo a armazenar )
n UPDATE tabela
SET coluna = novo contedo
WHERE condio
n DELETE tabela
WHERE condio
Jos Simo de Paula Pinto
25

Exerccios de fixao

Prtica
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


26
u Exerccio - Criao de tabelas
cod nome
n cliente

n produto cod descricao

n preco cod valor

n venda comprador produto qtdade

Jos Simo de Paula Pinto


27

u Respostas - Criao de tabelas

n CREATE TABLE cliente


(
cod INT,
nome CHAR(20)
)
n CREATE TABLE produto
(
cod INT,
descricao CHAR(20)
)

Jos Simo de Paula Pinto


28
u Respostas - Criao de tabelas

n CREATE TABLE preco


(
cod INT,
valor MONEY
)
n CREATE TABLE venda
(
comprador INT,
produto INT,
qtdade INT
)

Jos Simo de Paula Pinto


29

u Exerccio - Insero de valores

cod nome

1 Ana
2 Pedro
3 Tnia
4 Maria
5 Joo

cod descricao

1 Barco
2 Sabonete
3 Abacaxi

Jos Simo de Paula Pinto


30
u Exerccio - Insero de valores

cod valor

1 500.80
2 32.89
3 2.00

comprador produto qtdade

3 1 1
1 2 8
2 2 5
1 3 1
4 3 10
2 1 1

Jos Simo de Paula Pinto


31

u Respostas - Insero de valores

n INSERT cliente VALUES(1,'ANA')


n INSERT cliente VALUES(2,'PEDRO')
n INSERT cliente VALUES(3,'TNIA')
n INSERT cliente VALUES(4,'MARIA')
n INSERT cliente VALUES(5,'JOO')
n INSERT produto VALUES(1,'BARCO')
n INSERT produto VALUES(2,'SABONETE')
n INSERT produto VALUES(3,'ABACAXI')
Jos Simo de Paula Pinto
32
u Respostas - Insero de valores

n INSERT preco VALUES(1, 500.80)


n INSERT preco VALUES(2, 32.89)
n INSERT preco VALUES(3, 2.00)
n INSERT venda VALUES(3,1,1)
n INSERT venda VALUES(1,2,8)
n INSERT venda VALUES(2,2,5)
n INSERT venda VALUES(1,3,1)
n INSERT venda VALUES(4,3,10)
n INSERT venda VALUES(2,1,1)
Jos Simo de Paula Pinto
33

u Exerccio - Comandos de seleo

n Selecionar todos os clientes

n Selecionar todos os produtos

n Selecionar todos os preos

n Selecionar todos os registros das vendas efetuadas

Jos Simo de Paula Pinto


34
u Resposta - Selecionar todos os clientes

SELECT
SELECT nome
nome FROM
FROM cliente
cliente

nome

Ana
Pedro
Tnia
Maria
Joo

Jos Simo de Paula Pinto


35

u Resposta - Selecionar todos os produtos

SELECT
SELECTdescricao
descricaoFROM
FROMproduto
produto

descricao

Barco
Sabonete
Abacaxi

Jos Simo de Paula Pinto


36
u Resposta - Selecionar todos os preos

SELECT
SELECTvalor
valorFROM
FROMpreco
preco

valor

500.80
32.89
2.00

Jos Simo de Paula Pinto


37

u Resposta - Selecionar todas as vendas efetuadas

SELECT
SELECT**FROM
FROMvenda
venda

comprador produto qtdade

3 1 1
1 2 8
2
1
4
2
3
3
5
1
10
???
2 1 1

Jos Simo de Paula Pinto


38
Classificao, comparaes,
juno e operadores agregadores

Comandos
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


39

u Operador de classificao - ORDER BY

n Destina-se classificao (ordenao) dos dados, na


apresentao (no afeta os dados originais na tabela).
n Palavras chave:
l ASC - ordenao ascendente (do menor para o maior).
l DESC - ordenao descendente (do maior para o
menor)

Jos Simo de Paula Pinto


40
u Exemplo do uso de ORDER BY

SELECT
SELECT nome
nome SELECT
SELECT nome
nome
FROM cliente
FROM cliente FROM
FROM cliente
cliente
ORDER
ORDER BY
BY nome
nome ORDER
ORDER BY
BY nome
nome DESC
DESC

ASC DESC

nome nome

Ana Tnia
Joo Pedro
Maria Maria
Pedro Joo
Tnia Ana

Jos Simo de Paula Pinto


41

u Operadores de comparao

= Igual

> Maior

< Menor

>= Maior ou igual

<= Menor ou igual

<> ou != Diferente ou no igual

LIKE Parecido

Jos Simo de Paula Pinto


42
u Exemplo do uso do operador igual (=)

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod==44

nome

Maria

Jos Simo de Paula Pinto


43

u Exemplo do uso do operador diferente ( <> ou != )

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod<><>44

nome

Ana
Pedro
Tnia
Joo

Jos Simo de Paula Pinto


44
u Exemplo do uso do operador LIKE

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE nome
nome LIKE
LIKE %a
%a

nome

Ana
Tnia
Maria

Jos Simo de Paula Pinto


45

u Operadores AND e OR

n Operador AND

E = somente retornar os dados quando as condies


forem todas satisfeitas

n Operador OR

OU = retorna dados assim que qualquer das condies


for satisfeita

Jos Simo de Paula Pinto


46
u Exemplo de uso do operador AND

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod>>4040
AND
AND nome
nome == Maria
Maria

nome

Jos Simo de Paula Pinto


47

u Exemplo do uso do operador OR

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod>>4040
OR
OR nome
nome == Maria
Maria

nome

Maria

Jos Simo de Paula Pinto


48
u Exemplo do uso dos operadores AND e OR juntos

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
cod<<33
AND
AND nome
nome LIKE
LIKE %o
%o
OR
OR nome
nome == Maria
Maria
nome

Pedro
Maria

Jos Simo de Paula Pinto


49

u Juno de tabelas - JOIN

n Utilizamos a juno (JOIN) de tabelas, e seus


operadores, de maneira a expressar os relacionamentos
que foram criados quando da montagem da base de
dados, obtendo os conjuntos de valores originais,
desnormalizados.
n A juno efetuada basicamente efetuando-se uma
comparao entre dois campos de valores semelhantes
em tabelas distintas, selecionando em ambas as tabelas
as linhas que atendam estes valores e combinando-as.
Estas operaes sero efetuadas automaticamente pelo
gerenciador de bancos de dados.

Jos Simo de Paula Pinto


50
u Exemplo de juno - JOIN

SELECT
SELECT descricao,
descricao,valor
valor
FROM
FROM produto,
produto,preco
preco
WHERE
WHERE produto.cod
produto.cod==preco.cod
preco.cod
cod descricao cod valor

1 Barco 1 500.80
2 Sabonete 2 32.89
3 Abacaxi 3 2.00

descricao valor

Barco 500.80
Sabonete 32.89
Abacaxi 2.00

Jos Simo de Paula Pinto


51

u Operadores de agregao

MIN Retorna o menor valor

MAX Retorna o maior valor

COUNT Retorna a quantidade


de valores
AVG Retorna a mdia dos
valores
SUM Retorna a soma dos
valores

Jos Simo de Paula Pinto


52
u Exemplos de uso de operadores de agregao

SELECT
SELECT MAX(
MAX(valor
valor))
FROM
FROM preco
preco
-->
-->Retorna
Retornaoomaior
maiorpreo
preo

SELECT
SELECT AVG(
AVG(valor
valor))
FROM
FROM preco
preco
-->
-->Retorna
Retornaaamdia
mdiadedepreos
preos

SELECT
SELECT COUNT(
COUNT(**))
FROM
FROM cliente
cliente
-->
-->Retorna
Retornaaaquantidade
quantidadede
declientes
clientes

Jos Simo de Paula Pinto


53

u Agrupamento / Subtotais - GROUP BY

n Este comando permite que a apresentao dos dados


retornados da consulta seja agrupada de acordo com
uma determinada condio, digamos a soma dos
valores vendidos para cada produto. utilizado em
conjunto com o comando SELECT.
n Uso:
SELECT colunas
FROM tabela
WHERE condio
GROUP BY coluna ou agregado

Jos Simo de Paula Pinto


54
u Exemplo de agrupamento - GROUP BY

SELECT
SELECT descricao,
descricao,unidades=sum(qtdade)
unidades=sum(qtdade)
FROM
FROM produto,
produto,venda
venda
WHERE
WHERE produto.cod
produto.cod== venda.produto
venda.produto
GROUP
GROUPBYBY descricao
descricao

descricao unidades

Abacaxi 11
Barco 2
Sabonete 13

Jos Simo de Paula Pinto


55

u Operador DISTINCT

n O operador DISTINCT possibilita que uma consulta


retorne valores nicos, sem repeties, para a coluna
de dados.Este operador deve ser utilizado em conjunto
com a declarao SELECT.
n Uso:
SELECT DISTINCT (coluna)
FROM tabela
WHERE condio

Jos Simo de Paula Pinto


56
u Exemplo do uso do operador DISTINCT

SELECT
SELECTdescricao
descricao SELECT
SELECTDISTINCT
DISTINCT(descricao)
(descricao)
FROM
FROM produto,venda
produto, venda FROM produto, venda
FROM produto, venda
WHEREproduto.cod
WHEREproduto.cod==venda.produto
venda.produto WHEREproduto.cod
WHEREproduto.cod==venda.produto
venda.produto

SEM usar DISTINCT Usando DISTINCT

descricao descricao

Barco Abacaxi
Sabonete Barco
Sabonete Sabonete
Abacaxi
Abacaxi
Barco

Jos Simo de Paula Pinto


57

u Operadores IN e BETWEEN

n IN = para testar se um valor est dentro de um


determinado conjunto de valores. Pode utilizar o
operador IN em conjunto com o operador NOT
(formando a expresso NOT IN).

n BETWEEN = para testar se um valor est entre uma


determinada faixa de valores.

Jos Simo de Paula Pinto


58
u Exemplo do uso do operador IN

SELECT
SELECT descricao
descricao
FROM
FROM produto
produto
WHERE
WHERE descricao
descricaoIN
IN(
(Abacaxi,
Abacaxi,Sabonete
Sabonete))

descricao

Sabonete
Abacaxi

Jos Simo de Paula Pinto


59

u Exemplo do uso do operador BETWEEN

SELECT
SELECT nome
nome
FROM
FROM cliente
cliente
WHERE
WHERE cod
codBETWEEN
BETWEEN22and
and33

descricao
nome

Pedro
Barco
Sabonete
Tnia
Abacaxi

Jos Simo de Paula Pinto


60
u Operador HAVING

n O operador HAVING dever ser utilizado em conjunto


com a declarao SELECT e sua funo ser a de
estabelecer um critrio extra de agrupamento ou
seleo de valores, quando utilizando-se a clusula
GROUP BY. Pode-se entender a declarao HAVING
como sendo uma clusula WHERE para a declarao
GROUP BY.

Jos Simo de Paula Pinto


61

u Exemplo de uso do operador HAVING

SELECT
SELECT descricao,
descricao,unidades=sum(qtdade)
unidades=sum(qtdade)
FROM
FROM produto,
produto,venda
venda
WHERE
WHERE produto.cod
produto.cod== venda.produto
venda.produto
GROUP
GROUPBYBY descricao
descricao
HAVING
HAVING sum(qtdade)
sum(qtdade)>>1212

descricao unidades

Sabonete 13

Jos Simo de Paula Pinto


62
Exerccios de fixao

Prtica
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


63

u Exerccios - Comandos de seleo avanados

n Quantas vendas foram registradas?


n Qual dos clientes no comprou nada?
n O que cada cliente comprou e por quanto?
n Descritivo (descricao, preos unitrios e total e
quantidade) de cada venda, ordenado por produto
n Quais os totais de compras por cliente?
n Totais de vendas: quantas vendas e seu valor (geral)

Jos Simo de Paula Pinto


64
Stored Procedures

Comandos
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


65

u STORED PROCEDURES

n Stored Procedures, ou procedimentos armazenados,


so como que pequenos programas, escritos em
linguagem SQL, e ficam armazenados no gerenciador
de banco de dados.
n O servidor de bancos de dados realiza uma pr-
compilao dos procedimentos, e armazena-os em
memria cache aps a sua primeira execuo, de
maneira que tendem a ser / tornar-se mais rpidos que a
execuo de declaraes com mesma finalidade a partir
do cliente.

Jos Simo de Paula Pinto


66
u Criao de STORED PROCEDURES

n A sintaxe para a criao de uma stored procedure :


l CREATE PROCEDURE nome do procedimento AS
l Exemplo:
l CREATE PROCEDURE TodosClientes AS
SELECT * FROM cliente
l Para sua execuo, basta declarar o nome do
procedimento, neste exemplo TodosClientes

Jos Simo de Paula Pinto


67

u STORED PROCEDURES com parmetros

n Podemos enviar parmetros para uma stored


procedured, desde que ela tenha sido declarada de
maneira a receb-lo.
n Os parmetros so declarados por meio do uso do
smbolo @ seguido do nome da varivel. Deve-se
informar tambm o tipo de dados que ser tratado:
l @nome TipoDeDado
n Os parmetros (de entrada) so informados antes do
uso da palavra reservada AS, na declarao da stored
procedure.

Jos Simo de Paula Pinto


68
u Exemplo de STORED PROCEDURE com parmetro

CREATE
CREATEPROCEDURE
PROCEDUREQualNome
QualNome@codigo
@codigoint
intAS
AS
SELECT
SELECTcod,
cod, nome
nome
FROM
FROMcliente
cliente
WHERE
WHEREcodcod==@codigo
@codigo

QualNome
QualNome55

cod nome

5 Joo

Jos Simo de Paula Pinto


69

u Variveis em STORED PROCEDURES

n Podemos utilizar variveis dentro de uma stored


procedure, desde que elas sejam previamente
declaradas.
n A declarao ocorre dentro do corpo da stored
procedure, utilizando-se a palavra reservada DECLARE
e informando um nome de varivel (precedido do
smbolo @) e o tipo de dados que ela conter.
l DECLARE @nome TipoDeDado

Jos Simo de Paula Pinto


70
u Exemplo de STORED PROCEDURE com varivel

CREATE
CREATEPROCEDURE
PROCEDURETotal Total@codigo
@codigoint,
int,@quantos
@quantosint
intAS
AS
DECLARE
DECLARE@saida
@saida money
money
SELECT
SELECT@saida
@saida==@quantos
@quantos**(SELECT
(SELECTvalor
valorFROM
FROMpreco
preco
WHERE
WHEREcodcod==@codigo)
@codigo)
SELECT
SELECTPreo
Preototal
total==@saida
@saida

Total
Total3,
3,10
10

Preo total

20.00

Jos Simo de Paula Pinto


71

u Algumas STORED PROCEDURES do sistema

n SP_WHO - mostra quem est usando o servidor.


n SP_HELP - mostra objetos do banco de dados.
n SP_HELP parmetro - mostra caractersticas de
parmetro.
l SP_HELP cliente - exibe as caractersticas da tabela
cliente.
n SP_HELPTEXT parmetro - exibe o contedo da stored
procedure passada em.
l parmetroSP_HELP TodosClientes - exibe o
contedo da stored procedure TodosClientes.

Jos Simo de Paula Pinto


72
Exerccios de fixao

Prtica
da
Linguagem de Consulta Estruturada

Jos Simo de Paula Pinto


73

u Exerccios usando STORED PROCEDURES

n Criar STORED PROCEDURES para:


l Exibir todos os produtos.
l Exibir todos os produtos, e seus preos.
l Retornar o preo de um produto desde que passado
seu cdigo para o procedimento.
l Retornar quantos itens j foram vendidos de um
produto, e sua descrio, desde que passado seu
cdigo para o procedimento.

Jos Simo de Paula Pinto


74

Você também pode gostar