Você está na página 1de 13

NDICE

PASSO 1.1.1 .............................................................................................................................. 2


PASSO 1.1.2 ............................................................................................................................... 2
PASSO 1.1.3 ............................................................................................................................... 4
PASSO 1.2.1 .............................................................................................................................. 8
PASSO 1.2.2 ............................................................................................................................... 8
PASSO 1.2.3 ............................................................................................................................... 9
PASSO 1.2.4 .............................................................................................................................. 9
PASSO 1.2.5 ............................................................................................................................. 10
PASSO 1.2.6 ............................................................................................................................. 10
PASSO 1.2.7 ............................................................................................................................ 11
PASSO 1.2.8 ............................................................................................................................. 11
PASSO 1.2.9 ............................................................................................................................. 12
PASSO 1.2.10 .......................................................................................................................... 12
CONCLUSO ......................................................................................................................... 13

Passo 1.1.1 - Elaborar um script com os comandos SQL - DDL para criar o banco de dados do
sistema SIG.
O seguinte comando cria o database de nome ATPS_SIG:
CREATE DATABASE ATPS_SIG;

Passo 1.1.2 - Criao das Tabelas e ndices


Criar tabela cliente:
CREATE TABLE cliente
( idcliente

INT,

nome

VARCHAR(50)

CHECK(nome like '[a-z]%'),

cpf

CHAR(12),

-- formato '999999999-99'

rg

VARCHAR(11),

-- formato '999999999-9'

endereco

VARCHAR(50),

cidade

VARCHAR(30),

uf

CHAR(2),

fone

VARCHAR(12),

-- formato '(ll)nnnnnnnn'

celular

VARCHAR(13),

-- formato '(ll)nnnnnnnnn'

email

VARCHAR(50),

datanascimento DATE,
genero

CHAR(1),

PRIMARY KEY (idcliente)

);

Criar tabela funcionario:


CREATE TABLE funcionario (
idfuncionario

INT,

nome

VARCHAR(50) CHECK(nome like '[a-z]%'),

cpf

CHAR(12),

-- formato '999999999-99'

rg

VARCHAR(11),

-- formato '999999999-9'

ctps

VARCHAR(20),

cargo

VARCHAR(30),

datanascimento

DATE,

dataadmissao

DATE,

datademissao

DATE,

ativo

TINYINT,

comissao

NUMERIC(11,2),

PRIMARY KEY(idfuncionario)

);

Criar tabela produto:


CREATE TABLE produto

idproduto

INT,

descricao

VARCHAR(50)

precovenda

NUMERIC(11,2),

precocompra

NUMERIC(11,2),

marca

INT,

tipo

INT,

CHECK (descricao like '[a-z]%'),

PRIMARY KEY(idproduto) );

Criar tabela venda:


CREATE TABLE venda (
idvenda

INT,

cliente_venda

INT,

data

DATE,

hora

TIME,

valortotal

NUMERIC(11,2),

funcionario_venda INT,
PRIMARY KEY(idvenda),
CONSTRAINT cliente_venda FOREIGN KEY(cliente_venda) REFERENCES cliente
(idcliente),
CONSTRAINT func_venda

FOREIGN KEY(funcionario_venda) REFERENCES

funcionario(idfuncionario)

);

Criar tabela itemvenda:


CREATE TABLE itemvenda

iditemvenda

INT,

venda_itemvenda

INT,

produto_itemvenda

INT,

qtde

NUMERIC(7),

valorunitario

NUMERIC(9,2),

valordesconto

NUMERIC(11,2),

valortotal

NUMERIC(15,2),

PRIMARY KEY (iditemvenda),


CONSTRAINT venda_item FOREIGN KEY(venda_itemvenda) REFERENCES venda
(idvenda),
CONSTRAINT produto_item FOREIGN KEY(produto_itemvenda) REFERENCES
produto(idproduto)

);

Passo 1.1.3 Elaborar um script contendo os comandos SQL para inserir dados nas tabelas.
Deve conter pelo menos 5 ocorrncias por tabela. Os dados da tabela funcionrios devem ser
dos alunos do grupo, com os campos NOME: nome do aluno e RG: RA do aluno, demais
dados podem ser fictcios.
Cdigo cliente:
INSERT INTO cliente (idcliente, nome, cpf, rg, endereco, cidade, uf, fone,
celular, email, datanascimento, genero)
VALUES
( 1, 'Luiz Shig', '123456789-12', '987654321-0', 'Av Morro Velho, 100',
'Sao Paulo', 'SP',
'(11)12345678','(11)987651122','luizshig@uniban.com.br',
'1980/01/01','1'),
( 2, 'Antonio da Silva','333456789-12', '999654321-0', 'Av Sobe Desce,
100', 'Sao Paulo', 'SP',
'(11)12345666','(11)987653333','antsilv@uniban.com.br',
'1985/04/01','1'),
( 3, 'Watson Oliveira', '123444789-12', '987666321-0', 'Rua Pinheiro
Velho', 'Campo Limpo', 'SP',
'(11)12345666','(11)987654444','watson@uniban.com.br',
'1995/01/25','2'),
( 4, 'Berenice Almeida', '122256789-12', '987643221-0', 'Av Sem Saida, 10',
'Bras', 'SP',
'(11)12345678','(11)987651122','b.almeida@uniban.com.br',
'1980/01/01','3'),
( 5, 'Fernanda de Lima', '126546789-12', '887754321-0', 'Av Fim do Mundo,
100', 'Rocinha', 'RJ',
'(11)12235678','(11)987665522','flima@aisa.com.br', '1975/11/22','4');

Antes do comando:

Depois do comando:

Cdigo funcionario:
INSERT INTO funcionario (idfuncionario, nome, cpf, rg, ctps, cargo,
datanascimento, dataadmissao, datademissao, ativo, comissao )
VALUES
(101, 'Vinicius Mendes', '192837465-01', '42000683-4', '0123456-001-SP',
'gerente', '1970/12/30', '2013/10/27',null,1,null),
(102, 'Fernando Schmidt','192888465-01', '420177446-4', '987654-001-SP',
'Adm', '1970/12/11', '2013/10/01',null,1,null),
(103, 'Gleisa Damario', '192227465-01', '373067758-5', '0123336-001-SP',
'Secretaria', '1985/01/01', '2012/10/27',null,1,null),
(104, 'Vinicius Mariano', '194443365-01', '424182962-9', '01234566-001-SP',
'Tecnico', '1985/01/31', '2012/01/05',null,1,null),
(105, 'Jos Oliveira', '192227465-01', '998877445-1', '0123336-001-SP',
'Analista', '1988/07/01', '2012/10/20',null,1,null)

Antes do comando:

Depois do comando:

Cdigo produto:
INSERT INTO

produto

(idproduto,descricao, precovenda, precocompra, marca,

tipo) VALUES(201, 'caderno 100 fl', 2.50, 1.35, 1,1),


(202, 'caderno 200 fl', 4.50, 3.35, 1,2),
(203, 'lapis preto', 0.50, 0.25, 2,5),
(204, 'lapis de cor', 6.50, 5.35, 2,6),
(205, 'caneta preta', 1.50, 1.00, 3,1),
(206, 'esferografica vermelha', 1.20, 0.65, 3,8),
(207, 'Folha Sulfite A4', 12.50, 9.35, 1,6),
(208, 'borracha verde', 2.50, 1.35, 1,1);

Antes do comando:

Depois do comando:

Cdigo venda:
INSERT INTO venda (idvenda, cliente_venda, data, hora, valortotal,
funcionario_venda)
VALUES(501,1, '2013/10/25', '10:00:01', 120.00, 101),
(502,1, '2013/12/20', '05:00:01', 230.00, 101),
(503,3, '2013/10/22', '10:00:01', 20.00, 101),
(504,2, '2012/10/25', '7:00:01', 100.00, 102),
(505,4, '2011/10/21', '10:00:01', 350.00, 101),
(506,4, '2013/05/25', '10:00:01', 340.00, 102),
(507,5, '2013/10/01', '10:10:00', 25.00, 102),
(508,5, '2013/10/25', '10:00:01', 120.00, 103),
(509,1, '2011/11/25', '10:30:01', 80.00, 104);

Antes do comando:

Depois do comando:

Cdigo itemvenda:
INSERT INTO itemvenda

(iditemvenda, venda_itemvenda, produto_itemvenda,

qtde, valorunitario, valordesconto, valortotal)


VALUES(701, 501, 201, 100, 2.50, 0.00, 250.00),
(702, 501, 202, 50, 4.00, 0.10, 200.00),
(703, 503, 201, 10, 2.50, null, 25.00),
(704, 501, 204, 25, 6.00, null, 15.00),
(705, 504, 205, 10, 1.40, 0.10, 14.00),
(706, 504, 208, 25, 2.00, 0.15, 50.00),
(707, 506, 201, 10, 1.00, 0.00, 10.00);

Antes do comando:

Depois do comando:

Passo 1.2.1 - Consulta Cliente. Exibir os campos: nome, cidade, UF, idade, gnero. O s
registros devem estar ordenados por nome. Filtros da consulta: cidade.

SELECT nome,cidade,uf,datanascimento,genero FROM cliente WHERE cidade= 'Sao


Paulo' ORDER BY nome ASC

Obs:o comando "asc" opcional. Por padro os resultados so mostrados de forma


ascendente.

Resultado:

Passo 1.2.2 - Consulta funcionarios. Exibir os campos: nome, cargo, idade, data
de admisso, valor da comisso. Os registros devem estar ordenados por cargo. Filtros da
consulta: ativo

SELECT nome,cargo,datanascimento,dataadmissao,comissao FROM funcionario


WHERE ativo = '1' ORDER BY cargo

Resultado:

Passo 1.2.3 - Consulta vendas por funcionario - Exibir os campos: nome do funcionrio, valor
da venda. Os registros devem estar ordenados por valor da venda, sendo os maiores valores
exibidos primeiro. Filtros da consulta: dia da venda.

SELECT a.nome,b.valortotal FROM funcionario a, venda b WHERE


a.idfuncionario = b.funcionario_venda AND b.data <= '2013-12-31' ORDER BY
valortotal desc

Resultado:

Passo 1.2.4 - Consulta vendas por produtos. Exibir os campos: descrio do produto, preo
de venda do produto, valor total de vendas para produto. Os registros devem estar ordenados
pelo valor total das vendas, sendo os valores maiores nos primeiros registros. Filtros da
consulta: ms em que foram realizadas as vendas.

SELECT a.descricao,a.precovenda, b.valortotal FROM produto a, itemvenda b


WHERE a.precovenda = b.valorunitario AND a.idproduto = b.produto_itemvenda
ORDER BY valortotal desc

Resultado:

Passo 1.2.5 - Consulta vendas por cliente. Exibir o nome do cliente, cidade, quantidade total
de vendas, valor total de vendas. A consulta deve exibir todos os clientes, inclusive aqueles
que no possuem registros de venda. Os registros devem estar ordenados por nome e cidade.
Filtros da consulta: ms em que foram realizada as vendas.

SELECT a.nome,a.cidade, b.valortotal, SUM(c.qtde) AS qtdetotal FROM cliente


a, venda b, itemvenda c WHERE a.idcliente = b.cliente_venda AND
c.venda_itemvenda = b.idvenda AND b.data BETWEEN '2013-10-01' AND '2013-1031' GROUP BY a.nome, a.cidade, b.valortotal ORDER BY a.nome, a.cidade

Resultado:

Passo 1.2.6 - Atualizao dos dados do cliente. alterar os dados de endereo para: Estrada do
Campo Limpo, 123 cidade: So Paulo e UF: SP. Listar todos os campo da tabela Clientes para
mostrar a atualizao realizada.

UPDATE cliente SET endereco='Estrada do Campo Limpo, 123', cidade='Sao


Paulo', uf='SP' WHERE idcliente = '5'

Antes:

Depois:

10

Passo 1.2.7 - Insero de dados do cliente. Inserir um novo cliente com os seus dados. Listar
todas as linhas e colunas da tabela para evidenciar a execuo da insero.

INSERT INTO cliente VALUES ('6', 'Carlos Bernardes', '158374695-12',


'496829734-5', 'Rua Sem Numero, 560', 'Sao Paulo', 'SP', '(11)41234321',
'(11)954789632', 'c.bernardes@gmail.com', '1988-07-31', '1')

Antes:

Depois:

Passo 1.2.8 - Excluso de dados do cliente. Excluir o cliente inserido na etapa anterior. Listar
todas as linhas e colunas da tabela para evidenciar a execuo

DELETE FROM cliente WHERE idcliente = '6'

Resultado:

11

Passo 1.2.9 - Consulta vendas e produtos. Relacionar os produtos que compem as vendas
efetuadas no ano corrente, exibindo: identificao da venda, identificao do funcionrio que
efetuou a venda, identificao do produto, descrio do produto, quantidade, preo unitrio e
preo total.
SELECT a.idvenda, a.funcionario_venda, b.idproduto, b.descricao, c.qtde,
c.valorunitario, c.valortotal FROM venda a, produto b, itemvenda c
WHERE a.idvenda = c.venda_itemvenda AND b.idproduto = c.produto_itemvenda
AND a.data BETWEEN '2013-01-01' AND '2013-12-31'

Resultado:

Passo 1.2.10 - Consulta vendas produtos e clientes. Relacionar as Vendas de Clientes com
seus respectivos produtos, informando Identificao do Cliente, nome do Cliente, Unidade da
Federao, Ident. Venda, data Venda, Ident. Produto, Nome do Produto.

SELECT a.idcliente, a.nome, a.uf, b.idvenda, b.data, d.idproduto,


d.descricao FROM cliente a, venda b, itemvenda c, produto d WHERE
a.idcliente = b.cliente_venda AND b.idvenda = c.venda_itemvenda AND
d.idproduto = c.produto_itemvenda

Resultado:

12

Concluso
Com esse trabalho, conclumos que um banco de dados bem organizado fundamental, tanto
no momento de interpret-lo como em um desenvolvimento de um sistema.
Este trabalhou tratou de temas relacionados a otimizao de consultas, o que muito
importante, pois atualmente, no podemos nos preocupar somente com segurana e
confiabilidade de dados, mas tambm devemos lembrar de fatores indispensveis como
desempenho, pois um banco de dados otimizado fundamental para qualquer empresa.
Alm disso, o ATPS foi uma tima ferramenta de aprendizado pois nos incentivou a praticar e
tambm a pesquisarmos alm do aprendido em sala de aula.

13