Banco de Dados 2


Professor: Jeandre

Complemento das aulas de Banco de Dados II
Aluno: Eron Targino da Silva


SQL

É a abreviatura de "Structured Query Language" - Linguagem de Consulta Estruturada - é uma linguagem de pesquisa declarativa para banco de dados relacional.

Foi desenvolvida para manipulação de dados nos "RDBMS - Relational DataBase Management System - ", ou seja, Sistemas de Gestão de Dados Relacional.

A linguagem SQL é baseada em Álgebra Relacional - Teoria dos Conjuntos.

ORIENTAÇÃO PARA CRIAÇÃO DE UMA CONSULTA EM LIGUAGEM SQL

* Efetuar um consulta SQL em apenas uma tabela é relativamente simples, na maioria dos casos.

* Normalmente uma consulta SQL relaciona duas ou mais tabelas, e isto pode tornar a consulta bem complexa, principalmente se não forem seguidas algumas orientações básicas.

PASSOS PARA DESENVOLVER UMA BOA CONSULTA SQL

PARTE 1

1 - Ler bem o requisito do usuário, inclusive questionando-o até entendê-lo.

2 - Consultar o "Modelo de Dados" e identificar em quais tabelas estão armazenadas as informações solicitadas no requisito.

PARTE 2

3 - Identificar quais são as regras da consulta definidas no requisito.

Exemplo: pedidos feitos até o mês passado significa no SELECT a condição:
(Exemplo Utilizando o POSTGRES)








Clique na imagem para ampliar


4 - Através do "Modelo de Dados" identificar quais são as relações entre estas tabelas, através da(s) FK(s), identificando que são as tabelas pais e filhas.

Exemplo: Tabela A é a filha da Tabela X que é filha de Y, etc.

Exemplo no "Modelo de Dados DTR"








Clique na imagem para ampliar


PARTE 3

5 - Identificar quais tabelas, além daquelas que tenham sido identificadas n requisito, são necessárias para completar as "pontes" para relacionar todas as tabelas solicitadas pelo usuário.

Exemplo: Preciso relacionar a Tabela G com a Tabela P, mas só posso relacioná-las indiretamente, utilizando a tabela W. Desta forma, relaciona G com a Tabela W e depos W com P:



G -> W -> P

ou, pode haver mais tabelas intermediárias:

G -> W -> Q -> U -> P

PARTE 4

6 - Colocar as tabelas identificadas nos passos 2 a 5 na cláusula FROM, de preferência com apelidos.

Exemplo: FROM tab_nome n - tab_nome (nome da tabela identificada) endereço e n apelido).

7 - Colocar todas as relações de dependência (FK) entre as tabelas na cláusula WHERE

Exemplo: WHERE and
n.cod_pessoa = c.cod.pessoa
and


PARTE 5

8 - Colocar também na cláusula WHERE as condições do usuário, isto é os filtros da consulta.

9 - Execultar a consulta no SGDB(Postgres), depurar os possiveis erros e conferir se o resultado é desejável.

** A consulta gera uma tabela (resultado)

Apresentação do Modelo DTR

Modelo de uma Empresa Atacadista, Distribuidora de Produtos Diversos
(Os exercícios serão baseados neste modelo de dados)









Clique na imagem para ampliar


EXEMPLO BASEADO NO MODELO DTR (Utilizando o POSTGRES)









Clique na imagem para ampliar


SUBINDO O Servido do POSTGRES NO UBUNTU (SALA TADS-3)

1 - Aplicativos

2- Acessórios

3 - Terminal
Na linha de comando digite: su - postgres (pressione Enter)








Clique na imagem para ampliar


Senha: postgres
próxima linha de comando digite: cd /etc/init.d (pressione Enter)
próxima linha de comando digite: ./postgresql start (pressione Enter)









Clique na imagem para ampliar


ABRINDO O POSTGRES E ACESSANDO O SERVIDOR

1 - Aplicativos
2 - Desenvolvimento
3 - pgAdmin III

Clique duplo em localhost para acesso ao servidor








Clique na imagem para ampliar


Servidor aberto clique em Execultar consultas SQL arbitrárias









Clique na imagem para ampliar


SQL EDITOR









Clique na imagem para ampliar


EXERCÍCIO 1 - SQL SIMPLES

Criar um comando SQL que retorne todas as vendas realizadas no segundo semestre de 2009.

Resposta (SGDB - Postgres)









Clique na imagem para ampliar


EXERCÍCIO 2 - JOIN SIMPLES

Criar um comando SQL que retorne todas as vendas e itens das vendas de novembro e dezembro de 2009.

Resposta (SGDB - Postgres)









Clique na imagem para ampliar


EXERCÍCIO 3 - JOIN COM MAIS TABELAS

Fazer um relatório com os números dos clientes, nomes, números da venda a cada cliente, itens da venda e os produtos das vendas.

Resposta (SGDB - Postgres)

Corrigir itens da venda, substituir por vi.nu_seq_item








Clique na imagem para ampliar



EXERCÍCIO 4 - COUNT + JOIN

Fazer um relatório para listar todos os vendedores e suas quantidades de vendas nos meses de agosto a dezembro de 2009.

Resposta (SGDB - Postgres)

** SELECT









Clique na imagem para ampliar


** RELATÓRIO









Clique na imagem para ampliar


ACRESCENTANDO O GROUP BY






FUNÇÕES

Funções no SGBD Postgres
  • As Funções Definidas Pelos Usuários de um SGBD são um conjunto de comandos armazenados no SGBD que são executados quando solicitados pelo usuário

  • Podem ser executadas diretamente ou chamadas por outras funções ou triggers.

Crie a função na Query


Para executar o teste vamos utilizar o terminal no ubuntu


  • Abrir o terminal
  • su - postgres (senha: postgres)
  • psql
  • Copie e cole o comando no terminal:
BEGIN;
SELECT DTR.DTRFN002_SEL_PESSOA('CURSOR_01');
FETCH ALL IN "CURSOR_01";
COMMIT;


Resultado na tela do terminal
Clique na imagem para ampliar


No segundo teste vamos utilizar a tabela PRODUTO


Observação: Não esquecer de criar a função na query







  • Abrir o terminal
  • su - postgres (senha: postgres)
  • psql
  • Copie e cole o comando no terminal:
BEGIN;
SELECT DTR.DTRTB005_PRODUTO('CURSOR_01');
FETCH ALL IN "CURSOR_01";
COMMIT; 


Resultado na tela do terminal

 Clique na imagem para ampliar

 As funções criandas ficam salvas 

Clique na imagem para ampliar
Triggers

Os Triggers (Gatilhos) são funções preparadas para serem disparadas no caso de alguma alteração ocorrer nos dados da tabela, isto é, em casos de “insert”,  “delete” ou “update”.

Possuem disparo automático, independente do usuário que estiver executando o comando DML.
Não depende do sistema.