Buscar

Iplementação de banco de dados

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Iplementação de banco de dados/Aula_01 imple bd.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 1-Modelo Relacional
Conteúdo Programático desta aula
Conhecer as principais características de um Sistema de Banco de Dados;
Definir modelo de dados;
Conceituar Relação;
Identificar os componentes do modelo relacional;
Conceituar integridade referencial;
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Dados X Informação 
Dados
Informação
fatos em sua forma primária
Conhecimento produzido
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Importância dos Banco de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
O que é um banco de dados?
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
O que é um banco de dados?
conjunto de dados que se relacionam. 
Propriedades:
coleção lógica e coerente de dados com um significado inerente; 
projetado, construído e populado com dados para um propósito específico; 
possui um conjunto pré definido de usuários e aplicações;
representa algum aspecto do mundo real - “mini-mundo” e qualquer alteração efetuada neste mini-mundo é automaticamente refletida no banco de dados.
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
EVOLUÇÃO DOS SISTEMAS
Sistemas Tradicionais
Sistemas de Banco de Dados
Baseados em Arquivos
Baseados em SGBD
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sistemas Tradicionais
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sistemas de Banco de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Benefícios de uso de um SBD
Implementação do Conceito de transação
Controle de Concorrência 
Mecanismo de acesso aos dados
Mecanismo de recuperação (Tolerância a falhas)
Maior Segurança
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
Bancos de Dados Centralizados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
Bancos de Dados Cliente – Servidor 
(com servidor de Banco de Dados)
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Evolução dos Bancos de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Estrutura Geral de um Sistema de Banco de Dados
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Esquema
Esquema é um termo utilizado na área de Banco de Dados com a mesma conotação de modelo (como produto final da atividade de modelagem).
O Esquema de um Banco de Dados é a especificação da estrutura do Banco de Dados.
De um modo geral se utiliza o termo esquema apenas para os modelos referentes ao aspecto estrutural do mundo real.
 
PESSOA
 
CPF
NOME
COD_DEP
 
DEPART
 
COD_DEP
NOME
LOCAL
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instância
É o conjunto de ocorrências dos objetos de dados de um esquema em um dado momento do tempo (Estado do BD num momento do tempo).
 
PESSOA
 
CPF
NOME
COD_DEP
123
A
D-10
456
B
D-10
789
C
D-20
 
DEPART
 
COD_DEP
NOME
LOCAL
D-10
DEPART-10
L1
D-20
DEPART-20
L2
D-30
DEPART-30
L3
ESQUEMA
INSTÂNCIA
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Arquitetura 3 Esquemas
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
É o processo de:
 · determinar a organização de um banco de dados, incluindo sua estrutura, conteúdo e aplicações;  
· desenvolver a estrutura de um banco de dados;
 · projetar a estrutura lógica e física de um ou mais bancos de dados com a finalidade de acomodar as informações necessárias aos usuários de uma organização, para um definido conjunto de aplicações.
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
Fase 1 – Projeto Conceitual de Banco de Dados: 
 Elaboração de um modelo abstrato do mini mundo – totalmente independente de qualquer tecnologia da informação. 
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
Fase 2 – Projeto Lógico de Banco de Dados 
	Elaboração de um modelo implementável durante a qual endereçamos uma classe de tecnologia da informação (Ex: Bancos de Dados Relacionais). 
ELABORAÇÃO DE 
UM MODELO 
IMPLEMENTÁVEL A 
PARTIR DO MODELO 
ABSTRATO 
MODELO
ABSTRATO
TECNOLOGIA
DA INFORMAÇÃO
MODELO
IMPLEMENTÁVEL
CLASSE
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeto de Banco de Dados
Fase 3 – Projeto Físico de Banco de Dados
Elaboração de um modelo processável, durante a qual endereçamos uma tecnologia da informação específica (Ex: Bancos de Dados Relacional ORACLE versão 11g).
ELABORAÇÃO DE 
UM MODELO 
PROCESSÁVEL A 
PARTIR DO MODELO 
IMPLEMENTÁVEL 
TECNOLOGIA
DA INFORMAÇÃO
MODELO
PROCESSÁVEL
EFETIVA
MODELO
IMPLEMENTÁVEL
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Ferramentas de Projeto
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo Relacional
Foi proposto por Edgar Codd em 1970
Modelo Dominante nos SGBD Comerciais
Possui uma extensão denominada Objeto Relacional
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Relação = Tabela
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Atributo = Coluna
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Valores dos Atributos = Domínio
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Conjunto de Atributo = Esquema
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Tupla = Linha
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Conjunto de Tuplas = Instância
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Campo = Encontro de Linha e Coluna
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Conteúdo do Campo = Valor
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Campos sem Conteúdo = Nulo
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria 
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Único 
Integridade de Chave Primária
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Único 
Integridade de Chave Primária
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Obrigatório
Integridade de Entidade
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria = Atributo Obrigatório
Integridade de Entidade
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria Simples
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Primaria Composta
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Candidata
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente
do Modelo Relacional
Chave Estrangeira
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Componente do Modelo Relacional
Chave Estrangeira -> Integridade Referencial
Chave Estrangeira
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Apresentar a Álgebra Relaciona;
- Exemplificar as principais operações da Álgebra; Relacional.
- Realizar exercícios de Álgebra Relacional.
 MODELO RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Quais são as PARTES (ATIVIDADES
DO PROCESSO) ???
Como elas se RELACIONAM ???
Quais são os seus PRODUTOS ???
����������������������������������������������������
Quais são as PARTES (ATIVIDADES DO PROCESSO) ???
Como elas se RELACIONAM ???
Quais são os seus PRODUTOS ??? 
ELABORAÇÃO DE 
UM MODELO 
ABSTRATO DO 
MINI-MUNDO
MODELO
ABSTRATO
PROJETO CONCEITUAL
DE DADOS
 
PROJETO LÓGICO
DE DADOS
 
PROJETO FÍSICO
DE DADOS
 
MODELO
ENTIDADE
RELACIONAMENTO
LINGUAGEM
SQL
MODELO 
DE DADOS
RELACIONAL
REQUISITOS
DE 
INFORMAÇÃO
ESQUEMA CONCEITUAL DE DADOS GLOBAL
(MODELO ABSTRATO)
ESQUEMA LÓGICO DE DADOS
(MODELO IMPLEMENTÁVEL)
ESQUEMA FÍSICO DE DADOS
(MODELO PROCESSÁVEL)
DBA
Iplementação de banco de dados/Aula_02implementação.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 2- Álgebra Relacional
Conteúdo Programático desta aula
Conceituar Álgebra Relacional
Conhecer as Operações da Álgebra Relacional
Utilizar Operadores de Conjunto
Escrever expressões utilizando operadores de tabelas
Analisar expressões de Álgebra relacional
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conceitos Envolvidos
a) Relação: representada por uma tabela de duas dimensões (linhas e colunas);
b) Tupla: corresponde a uma linha da relação;
c) Atributo: corresponde às colunas da relação;
d) Chave primária: conjunto de atributos que identificam univocamente cada tupla da
relação;
e) Chave extrangeira: atributo de uma relação que é chave primária de outra relação.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conceitos Envolvidos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Manipulação de Dados
Duas categorias de linguagens
	– formais
		• álgebra relacional e cálculo relacional
	– comerciais (baseadas nas linguagens formais)
		• SQL
Linguagens formais - Características
	– orientadas a conjuntos
	– fechamento
		• resultados de consultas são relações
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Álgebra Relacional
Conjunto de operações sobre modelos relacionais de dados. 
As principais operações da álgebra relacional são:
Seleção
Projeção
Produto Cartesiano
Junção
Operações de Conjunto : (União, Intersecção, Diferença)
Divisão 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A operação Seleção é utilizada para selecionar um subconjunto de tuplas de uma relação, sendo que estas tuplas devem satisfazer uma condição de seleção. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A forma geral de uma operação Seleção é:
 <condição de seleção> ( <nome da relação> )
Onde: 
A letra grega  é utilizada para representar a operação de seleção; 
<condição de seleção> é uma expressão booleana aplicada sobre os atributos da relação ; 
<nome da relação> é o nome da relação sobre a qual será aplicada a operação Seleção.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
Dada a relação dos empregados da empresa selecionar aqueles que trabalham no departamento 10:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A expressão que atende ao pedido é:
	 id_Depto = 10 (Empregado)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
Dada a relação dos empregados da empresa selecionar aqueles que trabalham no departamento 10 e que ganhem salario > 1500.
:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Seleção
A expressão que atende ao pedido é:
	 id_Depto = 10 E Salario > 1500 (Empregado)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
A operação Projeção seleciona um conjunto determinado de colunas de uma relação. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
A forma geral de uma operação Projeção é:
 <lista de atributos> (<nome da relação>)
 Onde:
A letra grega  é utilizada para representar a operação de seleção
<lista de atributos> representa a lista de atributos que o usuário deseja selecionar e 
<nome da relação> representa a relação sobre a qual a operação projeção será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Projeção
A expressão que atende ao pedido é:
 Id, Nome, Salario (Empregado)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A Projeção e a Seleção podem ser combinadas, de forma que apenas algumas linhas e algumas colunas retornem na operação. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A forma geral da operação Projeção :
<lista de atributos> (<condição de seleção> (<nome da relação>))
 Onde
  representa a operação de projeção
 <lista de atributos> representa a lista de atributos que o usuário deseja selecionar
  representa a operação de seleção
 <condição de seleção> é a condição que a linha deve atender para ser selecionada e 
  <nome da relação> é o nome da relação sobre a qual será aplicada a operação de Seleção e Projeção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
Dada a relação de empregados da empresa, projetar as colunas ID, NOME E SALARIO PARA OS EMPREGADOS DO DEPARTAMENTO 10:
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A expressão que atende ao pedido é:
 Id,Nome, Salario ( Id_Depto = 10 (Empregado))
Realizada em Dois Passos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A expressão que atende ao pedido é:
 Id,Nome, Salario ( Id_Depto = 10 (Empregado))
Passos 1 - Seleção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
A expressão que atende ao pedido é:
 Id,Nome, Salario ( Id_Depto = 10 (Empregado))
Passos 2 - Projeção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
Sempre na ordem Seleção -> Projeção?
 Id_Depto = 10 ( Id,Nome, Salario (Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Sequencialidade de Operações 
 Id_Depto = 10 ( Id,Nome, Salario (Empregado))
Projeção não tem todas as colunas utilizadas na seleção
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto Cartesiano
O produto cartesiano é uma operação binária que combina todas as tuplas de duas tabelas. 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto Cartesiano
A forma geral do Produto Cartesiano é:
A X B
 Onde:
X representa a operação de produto cartesiano
A e B representam as relações sobre as quais a operação será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto Cartesiano - Exemplo
Departamento X Região
A operação ira justapor as colunas e combinar todas as linhas.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Produto 
Cartesiano
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção
Atua de forma similar á operação produto cartesiano, porém, a tabela resultante conterá apenas as combinações das tuplas que se relacionam de acordo com uma determinada condição de junção. 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção
A forma geral de uma operação Seleção é:
R ⋈ <condição de junção> S
Onde: 
⋈ representa a operação de junção; 
<condição de junção> é uma expressão relacional, normalmente utilizando o operador =, que determina qual coluna da tabela R deve ser comparada com qual coluna da tabela S ( normalmente PK e FK); 
R e S representam as relações sobre as quais a operação será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção - Exemplo
Departamento ⋈ Id_Regiao = Id Região
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção - Exemplo
Departamento ⋈ Id_Regiao = Id Região
A operação ira justapor as colunas e combinar as linhas que se relacionam.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Junção 
Exemplo
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto
Operações
União
Interseção
Diferença
Redundância de Tuplas
Compatibilidade quanto a união
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Redundancia de Tupla
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Compatibilidade quanto a União
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União
O resultado desta operação entre duas relações consiste no conjunto de todas as linhas das duas relações . 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União
A forma geral da União é:
A U B
 Onde:
U representa a operação de União
A e B representam as relações sobre as quais a operação será aplicada.
A operação de União é Comutativa -> A U B = B U A
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União - Exemplo
Empregado U Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
União - Exemplo
Empregado U Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção
O resultado desta operação entre duas relações consiste no conjunto de todas as linhas que existem em comum nas duas relações . 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção 
A forma geral da Interseção é:
A ∩ B
 Onde:
∩ representa a operação de Interseção
A e B representam as relações sobre as quais a operação será aplicada.
A operação de Interseção é Comutativa -> A ∩ B = B ∩ A
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção - Exemplo
Empregado ∩ Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Interseção - Exemplo
Empregado ∩ Acionista
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença
O resultado desta operação entre duas relações consiste no conjunto de todas as linhas que existem em uma tabela e não existe na outra 
. 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença 
A forma geral da Diferença é:
A - B
 Onde:
- representa a operação de Interseção
A e B representam as relações sobre as quais a operação será aplicada.
A Diferença não é Comutativa -> A - B <> B - A
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença - Exemplo
Empregado – Acionista ou Acionista – Empregado
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Diferença - Exemplo
–
Empregado – Acionista ou Acionista – Empregado
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 1
–
T1 =  Id,Nome ( Id_Depto = 10 (Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 1
–
T1 =  Id,Nome ( Id_Depto = 10 (Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 2
–
T2 =  Id,Nome ( Salario >= 1500 (Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 2
–
T2 =  Id,Nome ( Salario >= 1500 (Empregado))
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Operações de Conjunto em consultas - 3
–
T1 U T2 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão
É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira relação que se relacionam com todos os elementos da segunda relação. 
É utilizada para consultas do tipo todos os eleitores que participaram de todas as votações, os sócios que pagaram todas as mensalidades e outras do mesmo tipo. 
 
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão 
A forma geral da Diferença é:
A / B
 Onde:
/ representa a operação de Interseção
A e B representam as relações sobre as quais a operação será aplicada.
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão - Exemplo
ID dos Funcionários que Trabalham em todos os Projetos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão - Exemplo
ID dos Funcionários que Trabalham em todos os Projetos
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão – Exemplo – Passo 1
–
T1 =  Id_Proj (Projeto)
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Divisão – Exemplo – Passo 2
–
Funcionario_Projeto / T1
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Apresentar a Linguagem SQL
Instalar e Configurar um SGBD.
Criar Tabelas.
Manipular Dados
 ÁLGEBRA RELACIONAL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_03implementacaobd.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 3- Sql Parte 1
Conteúdo Programático desta aula
Conhecer a Linguagem SQL
Instalar e Configurar um SGBD.
Criar Tabelas.
Manipular Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Todos o exemplos mostrados em nossas aulas serão feitos no Oracle 10G Express
Recomendo que instalem o Oracle na Máquina de vocês e acompanhem a aula
Link para download do Oracle:
Download Oracle
http://www.oracle.com/technetwork/database/express-edition/database10gxe-459378.html
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Download Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Download Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Download Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Instalação Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
Digite o comando: GRANT CONNECT, RESOURCE TO AULABD
DEPOIS CLIQUE EM EXECUTAR
MENSAGEM DE CONFIRMAÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Comando
CLIQUE PARA FAZER UM NOVO LOGIN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando Usuário – Via Interface
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
FAÇA UM NOVO LOGIN COM O USUARIO CRIADO
NOME USUÁRIO: AULABD
SENHA : SENHA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Testando o Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Linguagem SQL
 SQL quer dizer Structured Query Language e é o padrão mundial de acesso às bases de dados relacionais.
A Linguagem SQL é dividida nas seguintes partes:
DDL - Create,
Alter, Drop, Rename, Truncate: Permitem a criação e definição de objetos como tabelas, views e outros objetos no banco de dados.
DRL -Select: É o comando mais comum do SQL. Utilizado amplamente para recuperação dos dados de uma base. 
DML - Insert, Delete, Update: Comandos de manipulação dos dados. Usados nas aplicações que mantém a base de informações com inserções, atualizações e deleções de dados.
DCL - Grant, Revoke: São utilizados para atribuir ou remover direitos de acesso a objetos do banco de dados e suas estruturas.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
Elementos que Compõem uma Tabela
A tabela é a forma básica de armazenamento de informações em um sistema gerenciador de banco de dados relacional e por isso deve conter um conjunto de elementos, alguns opcionais, na sua composição e que são:
Nome
Colunas
Tipos de Dados
Restrições (Constraints)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
TIPOS DE DADOS
Cada coluna de uma tabela, tem que ter um tipo de dado definido e único, obedecendo a lista de tipos definidos pelo RDBMS. No Oracle existe uma diversidade bastante grande de tipos e alguns são descritos na tabela abaixo:
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
A estrutura básica do comando é de criação de tabela é:
CREATE TABLE nome_da_tabela
 (nome_col1 tipo_col1 [restri_col1] [,
 nome_col2 tipo_col2 [ restri_col2 ] [,
 nome_col3 tipo_col3 [restri_col3] 
 ]]... [, restri_tab1 [,restri_tab2] );
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
Exemplos:
CREATE TABLE DEPARTAMENTO
( ID NUMBER(7) PRIMARY KEY,
NOME VARCHAR2(40) NOT NULL)
CREATE TABLE EMPREGADO
( ID NUMBER(7) PRIMARY KEY,
 ULT_NOME VARCHAR2(20) NOT NULL,
PRIM_NOME VARCHAR2(20) NOT NULL,
CARGO VARCHAR2(30),
SALARIO NUMBER(7,2),
DT_ADMISSAO DATE,
CPF CHAR(11) UNIQUE,
ID_DEPTO NUMBER(7) REFERENCES DEPARTAMENTO(ID),
ID_GERENTE NUMBER(7) REFERENCES EMPREGADO(ID))
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DDL – CRIAÇÃO DE TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DML
Comando Insert
O comando INSERT insere linhas em uma tabela. A forma mais simples do comando INSERT insere somente uma linha , dados os valores conforme a sintaxe abaixo:
insert into 	<nome_tabela> (coluna1, coluna2, ..., colunan)
	values (valor1, valor2, ..., valorn);
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INSERT SEM REFERENCIAR COLUNAS
INSERT INTO DEPARTAMENTO VALUES ( 10, ‘Financeiro’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INSERT REFERECIANDO COLUNAS
INSERT INTO DEPARTAMENTO (ID,NOME) 
 VALUES ( 20, ‘Vendas’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conferindo Inserção
SELECT * FROM DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DML
Comando Update
Para alterarmos dados já existentes em nossas tabelas utilizaremos o comando UPDATE.
Veja a sintaxe do comando abaixo:
UPDATE [schema. ] nome_tabela 
SET coluna1 = expressão I subquery [, colunan = ... ]
WHERE condição
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SELECT * FROM DEPARTAMENTO
UPDATE
SOMAR 100 AO ID DOS DEPARTAMENTOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UPDATE
UPDATE DEPARTAMENTO
SET ID = ID + 100
Clique executar
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONFERINDO UPDATE
ALTEROU OS ID DOS DEPARTAMENTOS
SELECT * FROM DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UPDATE COM CONDIÇÃO
UPDATE DEPARTAMENTO
SET ID = ID + 1000
WHERE ID = 110
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONFERINDO UPDATE
ALTEROU O ID DE 110 PARA 1110
SELECT * FROM DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DML
Comando Delete
 Para excluirmos linhas em uma tabela utilizamos o comando DELETE.
Veja a sintaxe do comando abaixo:
DELETE [FROM] [schema.]nome_tabela
WHERE condição
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
APAGAR A LINHA DO DEPARTAMENTO DE ID 120
DESMARCAR COMMIT AUTOMATICO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
DELETE DEPARTAMENTO
COMMIT DESMARCADO
SEM FROM, NO ORACLE FROM É OPCIONAL
APAGOU AS 2 LINHAS????
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
SELECT * FROM DEPARTAMENTO
DELETE SEM WHERE APAGA TODAS AS LINHAS
E AGORA?
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
ROLLBACK
COMMIT DESMARCADO
CANCELA A TRANSAÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
VOLTARAM AS LINHAS
SELECT * FROM DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE COM WHERE
DELETE FROM DEPARTAMENTO
WHERE ID = 120
COMMIT DESMARCADO
AGORA COM FROM E WHERE
SO A LINHA DE ID 120 APAGADA
COMO TORNAR A ALTERAÇÃO DEFINITIVA?
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
DELETE
COMMIT
FECHOU A TRANSAÇÃO
IMPORTANTE
DEPOIS DO COMMIT NÃO ADIANTA DAR ROLLBACK
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONFERINDO DELETE
LINHA DE ID 120 FOI APAGADA
SELECT * FROM DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ELIMANDO TABELAS
Para excluirmos uma tabela existente devemos usar o comando DROP 
TABLE. A sua forma geral é: 
 
DROP TABLE <nome_tabela>;
 
onde: 
 
<nome_tabela> dever ser substituído pelo nome da tabela a ser excluída. 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ELIMANDO TABELAS
DROP TABLE EMPREGADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Aprender a rodar um Script no Oracle
Conhecer o Comando Select
Recuperar dados de uma tabela
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_04.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 4- Sql Parte 2
Conteúdo Programático desta aula
Conhecer o comando Select
Executar um script no Oracle.
Recuperar dados de uma tabela.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Rodando Script
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Rodando Script
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Rodando Script
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Rodando Script
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Rodando Script
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo de Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando modelo
CREATE TABLE DEPARTAMENTO
( ID NUMBER(7) PRIMARY KEY,
NOME VARCHAR2(40) NOT NULL)
INSERT INTO DEPARTAMENTO VALUES ( 10, 'Financeiro');
INSERT INTO DEPARTAMENTO VALUES ( 20, 'Vendas');
INSERT INTO DEPARTAMENTO VALUES ( 30, 'Administrativo');
COMMIT;
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando modelo
CREATE TABLE EMPREGADO
( ID NUMBER(7) PRIMARY KEY,
 ULT_NOME VARCHAR2(20) NOT NULL,
PRIM_NOME VARCHAR2(20) NOT NULL,
CARGO VARCHAR2(30),
SALARIO NUMBER(7,2),
DT_ADMISSAO DATE,
CPF CHAR(11) UNIQUE,
ID_DEPTO NUMBER(7) REFERENCES DEPARTAMENTO(ID),
ID_GERENTE NUMBER(7) REFERENCES EMPREGADO(ID));
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando modelo
INSERT INTO EMPREGADO VALUES( 1, 'Velasquez', 'Carmen','Presidente',25000, '08/04/2008','12345678901',30,null);
INSERT INTO EMPREGADO VALUES( 2, 'Neves', 'Lauro', 'Diretor de Vendas',19500, '07/03/2009','23456789012',20, 1);
INSERT INTO EMPREGADO VALUES( 3, 'Nogueira', 'Mário','Diretor Financeiro', 18000, '07/04/2010','34567890123',10,1);
INSERT INTO EMPREGADO VALUES( 4, 'Queiroz', 'Mark','Gerente de Vendas',8000, '07/11/2010','12345432123',20,2);
INSERT INTO EMPREGADO VALUES( 5, 'Rodrigues', 'Alberto', 'Vendedor',4000, '10/1/2008', '87965432123', 20, 4);
INSERT INTO EMPREGADO VALUES( 6, 'Ugarte', 'Marlene', 'Vendedor', 3500,'23/11/2009', '87654345678',20,4);
COMMIT;
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Criando modelo
CREATE TABLE CLIENTE
( ID NUMBER(7) PRIMARY KEY,
NOME VARCHAR2(40) NOT NULL,
VENDEDOR NUMBER(7) REFERENCES
EMPREGADO(ID));
INSERT INTO CLIENTE VALUES ( 110, 'Ponto Quente',5);
INSERT INTO CLIENTE VALUES ( 120, 'Casa Supimpa',6);
INSERT INTO CLIENTE VALUES ( 130, 'Coisas e Tralhas',5);
INSERT INTO CLIENTE VALUES ( 140, 'Casa Desconto',null);
COMMIT;
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONSULTANDO TABELAS
Comando Select
É o comando SQL para recuperação dos dados de uma ou mais tabelas. Pode referenciar todas ou parte das colunas de uma ou mais tabelas, além de poder restringir as linhas que serão recuperadas.
Como é orientado a conjuntos, um único comando pode retornar nenhuma ou várias linhas de uma combinação de tabelas desde que satisfaçam restrições impostas. 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONSULTANDO TABELAS
Os componentes básicos do comando são:
A Cláusula SELECT
Lista as colunas que serão recuperadas
Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, estaremos definindo que todas as colunas serão recuperadas.
A Cláusula FROM
Define a tabela que será recuperada
SELECT nome-col1, nome_col2, nome coln
FROM nome_da_ tabela;
OU
SELECT *
FROM nome_da_tabela ;
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONSULTANDO TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONSULTANDO TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ESCREVENDO EXPRESSÕES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ESCREVENDO EXPRESSÕES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ALIAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE
Gerando Restrições nas consultas
Ao selecionar os dados para visualização ou outra necessidade podemos, além de ordená-los, restringir o meu espectro de visualização utilizando a cláusula WHERE.
A cláusula Where estabelece uma condição que a linha deverá obdecer para que faça parte do conjunto resposta da consulta. No caso apenas retornam as linhas cujo deste da condição de como resposta verdadeiro. 
Veja o exemplo abaixo onde desejamos que retornem apenas a linhas dos empregados com ID > 3:
SELECT * 
FROM EMPREGADO
WHERE ID > 3
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – CASE SENSITIVE
SELECT * FROM EMPREGADO
SELECIONAR O EMPREGADO DE NOME Ugarte
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – CASE SENSITIVE
SELECT prim_nome,cargo
FROM c_empr 
WHERE ult_nome = ' UGARTE'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – CASE SENSITIVE
SELECT prim_nome,cargo
FROM c_empr 
WHERE ult_nome = ' Ugarte'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – DATAS
SELECT * FROM EMPREGADO
SELECIONAR O EMPREGADO CONTRATADO EM 07/04/10
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – DATA
SELECT ULT_NOME, DT_ADMISSAO
FROM EMPREGADO
WHERE DT_ADMISSAO = '7/4/2010';
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – DATA
SELECT ULT_NOME, DT_ADMISSAO
FROM EMPREGADO
WHERE DT_ADMISSAO = '7/ABR/2010'
ou
SELECT ULT_NOME, DT_ADMISSAO
FROM EMPREGADO
WHERE DT_ADMISSAO = '7/ABRIL/2010'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES LOGICOS
SELECT * FROM EMPREGADO
SELECIONAR OS EMPREGADOS CONTRATADOS DEPOIS DE 2008 E QUE GANHEM MAIS DE 10000
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES LOGICOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES LOGICOS
SELECT * FROM EMPREGADO
SELECIONAR OS EMPREGADOS CONTRATADOS DEPOIS DE 2008 OU QUE GANHEM MAIS DE 10000
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES LOGICOS
DATA MAIOR QUE 1/1/2009
SELECT * FROM EMPREGADO 
WHERE DT_ADMISSAO > ‘1/1/2009’ OR SALARIO > 10000
USO OR LIGANDO DUAS CONDIÇÕES 
SALARIO MAIOR QUE 10000
BASTA UMA SER VERDADEIRA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS - IN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS - IN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – NOT IN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – BETWEEN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – BETWEEN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – NOT BETWEEN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – BETWEEN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – BETWEEN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – NOT LIKE
SELECT * 
FROM EMPREGADO 
WHERE DT_ADMISSAO NOT LIKE ' %/04/%'
NÃO FORAM CONTRATADOS NO MÊS 4
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – IS NOT NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Aprender funções de grupo
Recuperar dados agregados de uma tabela
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_05bd.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 5- Sql Parte 3
Conteúdo Programático desta aula
Aprender a ordenar o resultado de
 uma consulta
Aprender funções de grupo
Recuperar dados agregados de 
uma tabela
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Rodando Script
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONSULTANDO TABELAS
Os componentes básicos do comando são:
A Cláusula SELECT
Lista as colunas que serão recuperadas
Se utilizarmos o artifício do * (asterisco) na cláusula SELECT, estaremos definindo que todas as colunas serão recuperadas.
A Cláusula FROM
Define a tabela que será recuperada
SELECT nome-col1, nome_col2, nome coln
FROM nome_da_ tabela;
OU
SELECT *
FROM nome_da_tabela ;
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CONSULTANDO TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ESCREVENDO EXPRESSÕES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ALIAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – CASE SENSITIVE
SELECT prim_nome,cargo
FROM c_empr 
WHERE ult_nome = ' Ugarte'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
UTILIZANDO WHERE – DATA
SELECT ULT_NOME, DT_ADMISSAO
FROM EMPREGADO
WHERE DT_ADMISSAO = '7/ABR/2010'
ou
SELECT ULT_NOME, DT_ADMISSAO
FROM EMPREGADO
WHERE DT_ADMISSAO = '7/ABRIL/2010'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES LOGICOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS - IN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – BETWEEN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – LIKE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES RELACIONAIS – IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo de Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENANDO RESULTADOS
Para permitir a ordenação o SQL nos fornece a clausula ORDER BY.
SELECT { * | nome da coluna [, nome da coluna ...]}
FROM nome da tabela
WHERE condição {AND | OR} condição
ORDER BY nome da coluna [
ASC | DESC ]
 [, nome da coluna [ ASC | DESC] ... ]
Onde: 
	ASC ordena as linhas de forma ascendente; é a ordenação default.
	DESC ordena as linhas de forma descendente.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENANDO RESULTADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENANDO RESULTADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENANDO RESULTADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENANDO RESULTADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENAÇÃO MULTIPLA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENAÇÃO MULTIPLA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENAÇÃO PELA POSIÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ORDENAÇÃO PELA POSIÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ELIMINANDO DUPLICADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
ELIMINANDO DUPLICADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
Funções de grupo operam sobre conjuntos de linhas. Elas retornam resultados baseados sobre um grupo de linhas, antes que um resultado por linha tenha retornado como uma função de linha única. 
Como padrão todas as linhas de um tabela são trilhadas como um grupo. 
A clausula GROUP BY da declaração do SELECT é usada para agrupar as linhas em menores grupos.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
AVG (x)
Retorna o valor médio da coluna x.
Exemplo: AVG (salario)
Ignora os valores nulos.
MAX (x)
Retorna o valor máximo da coluna x.
Exemplo: MAX (salario)
Ignora os valores nulos.
MIN (x)
Retorna o valor mínimo da coluna x.
Exemplo: MIN (salario)
Ignora os valores nulos.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
SUM (x)
Retorna a soma da coluna x.
Exemplo: SUM (salario)
Ignora os valores nulos.
COUNT (x)
Retorna o número de valores não nulos da coluna x.
Exemplo: COUNT (perc_comissao)
COUNT (* )
Retorna o número de linhas de uma tabela.
Exemplo: COUNT (*)
Considera os valores nulos.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO - DISTINCT
LISTAR A QUANTIDADE DE CARGOS E DE ID_DEPTOS
DIFERENTES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FUNÇÕES DE GRUPO - DISTINCT
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CRIANDO GRUPOS
Outro recurso do comando SELECT é a possibilidade de agruparmos nossos dados, utilizando a cláusula GROUP BY.
Sintaxe:
SELECT nome da coluna [ , nome da coluna]
FROM nome da tabela
WHERE condição
GROUP BY expressão
 onde
expressão especifica as colunas cujos valores determinam a base para o grupo de linhas; 
GROUP BY produz uma linha sumarizada para cada grupo de linhas selecionado. 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CRIANDO GRUPOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CRIANDO GRUPOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CRIANDO GRUPOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
GRUPOS EM GRUPOS
LISTAR A QUANTIDADE DE EMPREGADOS, SALARIO MEDIO E 
SOMA DOS SALARIOS DOS EMPREGADOS DE CADA DEPARTAMENTO E DENTRO DO DEPARTAMENTO PARA CADA CARGO 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
GRUPOS EM GRUPOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CRIANDO GRUPOS - WHERE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
CRIANDO GRUPOS - WHERE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FILTRANDO GRUPOS - HAVING
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FILTRANDO GRUPOS - HAVING
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
FILTRANDO GRUPOS - HAVING
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Faremos uma revisão 
para a AV1
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_06 bd.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 6- Sql Parte 4
Conteúdo Programático desta aula
Aprender os comandos de junção
Conhecer as diferentes sintaxes de junção
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo de Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Configurando Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO
Um comando SELECT pode fazer uma consulta que traz dados de duas ou mais tabelas. Esse é um processo chamado de junção [join]. As tabelas têm uma coluna em comum que é usado para fazer as junções.
 Sintaxe da Junção 
Sintaxe ANSI
Sintaxe tradicional (não ANSI)
Tipos Junção:
Junção Cruzada ou Irrestrita (Produto Cartesiano)
Junção Interior
Junção Exterior
Auto-Junção
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO CRUZADA
Uma junção cruzada [cross join] de tabelas, também chamada junção irrestrita de duas tabelas gera um resultado formado por todas as combinações possíveis de uma linha da primeira tabela com uma linha da segunda. Não existe uma condição de junção. Esse resultado é chamado produto cartesiano das duas tabelas. 
Na sintaxe ANSI, junções cruzadas são indicadas com CROSS JOIN, por exemplo: 
select *
from empregado cross join departamento; 
Na sintaxe Tradicional: 
select *
from empregado , departamento;
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO CRUZADA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO CRUZADA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO CRUZADA
RETORNANDO TODAS AS COLUNAS DAS DUAS TABELAS E COMBINANDO TODAS AS LINHAS
SELECT * FROM EMPREGADO CROSS JOIN DEPARTAMENTO, 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO CRUZADA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR
Esse tipo de junção conecta as duas tabelas e retorna apenas as linhas que satisfazem a condição de junção. 
Na sintaxe ANSI, junções interiores são indicadas com INNER JOIN: 
select <colunas>
from tabela1 INNER JOIN tabela2 ON <condição de junção>; 
Na sintaxe Tradicional: 
select <colunas>
from tabela1 ,tabela2 
Where <condição de junção>; 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR
Dados do Empregado e do Departamento onde esta alocado
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
SELECT * 
FROM EMPREGADO , DEPARTAMENTO
WHERE ID_DEPTO = DEPARTAMENTO.ID
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
Projetando Colunas
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE ANSI
JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE ANSI
JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
JUNÇÃO INTERIOR COM MAIS DE DUAS TABELAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
SINTAXE ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
SINTAXE TRADICIONAL
REPARE AND LIGANDO 
FILTRAGEM E JUNÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
QUERO JUNÇÃO PARA EMPREGADOS COM SALARIO < 10000 OU ID < 3
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – FILTRANDO RESULTADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - TRADICIONAL
NA SINTAXE TRADICIONAL DO ORACLE 
NÃO EXISTE FULL JOIN
SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO 
FROM CLIENTE C , EMPREGADO E 
WHERE C.VENDEDOR (+) = E.ID (+)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - TRADICIONAL
RESULTADO EQUIVALENTE AO FULL JOIN MAS O COMANDO NÃO É DE FULL JOIN
SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO 
FROM CLIENTE C , EMPREGADO E 
WHERE C.VENDEDOR (+) = E.ID 
UNION OPERADOR DE CONJUNTO
SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO 
FROM CLIENTE C , EMPREGADO E 
WHERE C.VENDEDOR = E.ID (+)
COMANDO EQUIVALENTE À LEFT 
COMANDO EQUIVALENTE À RIGHT 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR
PROJETANDO TODAS AS COLUNAS DE CLIENTE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECT G.ID, G.ULT_NOME, G.CARGO, 
 S.ID, S.ULT_NOME, S.CARGO 
FROM EMPREGADO G RIGHT JOIN EMPREGADO S 
 ON S.ID_GERENTE = G.ID
NOTE QUE O EMPREGADO DE ID 1 NÃO TEM GERENTE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECTS.ID, S.ULT_NOME, S.CARGO 
FROM EMPREGADO G RIGHT JOIN EMPREGADO S 
 ON S.ID_GERENTE = G.ID
WHERE G.ID IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
QUERO SABER O EMPREGADO QUE NÃO TEM GERENTE,
NÃO PRECISA RESOLVER POR OUTER JOIN
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECT ID, ULT_NOME, CARGO
FROM EMPREGADO 
WHERE ID_GERENTE IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
QUERO SABER OS EMPREGADOS QUE NÃO SÃO GERENTES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECT G.ID, G.ULT_NOME, G.CARGO, 
 S.ID, S.ULT_NOME, S.CARGO 
FROM EMPREGADO G LEFT JOIN EMPREGADO S 
 ON S.ID_GERENTE = G.ID
DADOS DOS 
SUBORDINADOS NULOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECT G.ID, G.ULT_NOME, G.CARGO 
FROM EMPREGADO G LEFT JOIN EMPREGADO S 
 ON S.ID_GERENTE = G.ID
WHERE S.ID IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECT G.ID, G.ULT_NOME, G.CARGO 
FROM EMPREGADO G , EMPREGADO S 
WHERE G.ID = S.ID_GERENTE (+) AND S.ID IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Aprender os como construir subconsulta
Conhecer os operadores de conjunto
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_07.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 7- Sql Parte 5
Conteúdo Programático desta aula
Aprender os como construir subconsulta
Conhecer os operadores de conjunto
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo de Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO
Um comando SELECT pode fazer uma consulta que traz dados de duas ou mais tabelas. Esse é um processo chamado de junção [join]. As tabelas têm uma coluna em comum que é usado para fazer as junções.
 Sintaxe da Junção 
Sintaxe ANSI
Sintaxe tradicional (não ANSI)
Tipos Junção:
Junção Cruzada ou Irrestrita (Produto Cartesiano)
Junção Interior
Junção Exterior
Auto-Junção
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO CRUZADA
RETORNANDO TODAS AS COLUNAS DAS DUAS TABELAS E COMBINANDO TODAS AS LINHAS
SELECT * FROM EMPREGADO CROSS JOIN DEPARTAMENTO, 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE TRADICIONAL
Projetando Colunas
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO INTERIOR – SINTAXE ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - ANSI
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - TRADICIONAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
AUTO JUNÇÃO
SELECT G.ID, G.ULT_NOME, G.CARGO 
FROM EMPREGADO G , EMPREGADO S 
WHERE G.ID = S.ID_GERENTE (+) AND S.ID IS NULL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
Subconsulta é uma consulta dentro de um outro comando SQL que pode ser:
 
CREATE TABLE
CREATE VIEW
SELECT
INSERT
DELETE 
UPDATE
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
Regras para Construção de Subconsultas
 
A consulta interna tem que estar entre parênteses e sempre a mais interna é executada primeiro.
Admite o aninhamento de n consultas internas ou em conjunto com operadores AND e OR
Retorna uma ou várias linhas ou colunas
Usualmente é usada na cláusula WHERE dos comandos SELECT, DELETE e UPDATE
Pode ser usada na cláusula FROM do comando SELECT .
Pode referenciar colunas da consulta mais externa
Não pode conter a cláusula ORDER BY
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
	Operador	Descrição
	=	Igual a
	<> 	Diferente
	> 	Maior que
	< 	Menor que
	>= 	Maior ou igual
	<= 	Menor ou igual
Operadores de Comparação em Subconsultas Simples
Os operadores abaixo podem ser usados em condições de comparação com subconsultas simples, pois manipulam o retorno de apenas uma linha de comparação com a consulta principal.
	
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
EMPREGADOS DO 
DEPARTAMENTO DE VENDAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
SELECT *
FROM EMPREGADO 
WHERE ID_DEPTO = 20 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
ESTE COMANDO PRODUZ O RESULTADO 20 QUE É UTILIZADO NO COMANDO EXTERNO 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
EMPREGADOS QUE GANHAM MAIS QUE O SALARIO MEDIO DA EMPRESA 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA
SELECT * 
FROM EMPREGADO
WHERE SALARIO > ( SELECT AVG (SALARIO) 
 FROM EMPREGADO)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
EMPREGADOS QUE GANHAM SALARIO DIFERENTE DOS VENDEDORES 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILNHAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
	Operador	Descrição
	IN	Igual a qualquer elemento de
	NOT IN	Diferente que qualquer elemento de
	> ALL	maior que todos os elementos da lista
	< ALL	menor que todos
	<> ALL	diferente de todos (o mesmo que NOT IN)
	= ANY	igual a algum dos elementos da lista (o mesmo que IN)
	> ANY	maior que algum dos elementos da lista
	< ANY	menor que algum dos elementos
	<> ANY	diferente de algum dos elementos da lista (falso se igual a todos)
OPERADORES DE COMPARAÇÃO EM SUBCONSULTAS MULTI-LINHAS
Existe um conjunto de operadores que podem ser utilizados em subconsultas que retornam mais de uma linhas, este operadores são
	
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILNHAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
EMPREGADOS QUE GANHAM SALARIO MAIORES QUE TODOS OS VENDEDORES 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
SELECT *
FROM EMPREGADO
WHERE SALARIO > ALL ( SELECT SALARIO 
 FROM EMPREGADO 
 WHERE UPPER(CARGO) = 'VENDEDOR')
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
EMPREGADOS QUE GANHAM SALARIO MAIORES QUE TODOS OS VENDEDORES 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - MULTILINHAS
SELECT *
FROM EMPREGADO
WHERE SALARIO > ANY ( SELECT SALARIO 
 FROM EMPREGADO 
 WHERE UPPER(CARGO) = 'VENDEDOR')
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - SELECT
SELECT ID, ULT_NOME, SALARIO , 
 (SELECT AVG(SALARIO) FROM EMPREGADO) AS "SALARIO MEDIO"
FROM EMPREGADO
WHERE SALARIO < (SELECT AVG(SALARIO) FROM EMPREGADO)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - SELECT
SELECT ID, ULT_NOME, SALARIO , 
 (SELECT SALARIO FROM EMPREGADO 
 WHERE UPPER(CARGO) = 'VENDEDOR') AS "SALARIO VENDEDORES"
FROM EMPREGADO
WHERE SALARIO >ALL (SELECT SALARIO FROM EMPREGADO 
 WHERE UPPER(CARGO) = 'VENDEDOR')
NO SELECT A SUBCONSULTA SOMENTE PODE RETORNAR UMA LINHA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - HAVING
DEPARTAMENTOS COM MEDIA SALARIAL MAIOR QUE MEDIA SALARIAL DA EMPRESA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - HAVING
SELECT ID_DEPTO, AVG(SALARIO) 
FROM EMPREGADO
GROUP BY ID_DEPTO
HAVING AVG(SALARIO) > ( SELECT AVG(SALARIO) FROM EMPREGADO)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - FROM
ID, ULT_NOME, SALARIO E ID_DEPTO DO EMPREGADO E 
MEDIA SALARIAL DE SEU DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA – FROM
SELECT E.ID, E.ULT_NOME, E.SALARIO, E.ID_DEPTO, RD.MEDIA
FROM EMPREGADO E INNER JOIN 
 (SELECT ID_DEPTO, AVG(SALARIO) AS MEDIA 
 FROM EMPREGADO GROUP BY ID_DEPTO) RD
 ON E.ID_DEPTO = RD.ID_DEPTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - CORRELATA
EMPREGADOS QUE GANHAM MAIS QUE A MEDIA SALARIAL DE SEU DEPARTAMENTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA - CORRELATA
SELECT ID, ULT_NOME, SALARIO, ID_DEPTO 
FROM EMPREGADO E
WHERE SALARIO > (SELECT AVG(SALARIO) 
 FROM EMPREGADO I
 WHERE I.ID_DEPTO = E.ID_DEPTO)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA – TESTE EXISTENCIA
DEPARTAMENTOS QUE POSSUEM VENDEDORES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SUBCONSULTA – TESTE EXISTENCIA
SELECT * 
FROM DEPARTAMENTO E
WHERE EXISTS (SELECT * 
 FROM EMPREGADO I
 WHERE E.ID = I.ID_DEPTO AND UPPER(I.CARGO) = 'VENDEDOR')
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO
Trabalhando com Conjuntos
Muitas vezes necessitamos que nossas consultas incluam, em uma mesma coluna, dados de mais de uma tabela. Para isto utilizamos os operadores de conjuntos UNION, UNION ALL, INTERSECT e MINUS.
Regras para Utilização dos Operadores de Conjuntos
Os comandos SELECT participantes têm que ter o mesmo número de colunas,
As colunas correspondentes têm que ser do mesmo tipo de dado,
Linhas duplicadas são automaticamente descartadas, exceto com UNION ALL,
Os nomes das colunas resultantes são os da primeira consulta,
ALIAS de colunas só tem efeito se utilizados na primeira consulta,
A cláusula ORDER BY só pode ser utilizada ao final do comando,
Os operadores de conjuntos podem ser utilizados em subconsultas
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO - UNION
Resulta na combinação de todas as linhas de duas ou mais tabelas participantes do UNION, eliminando as linhas duplicadas resultantes.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO - UNION
20
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO - UNION
SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20)
UNION 
SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
JUNÇÃO EXTERIOR - TRADICIONAL
RESULTADO EQUIVALENTE AO FULL JOIN MAS O COMANDO NÃO É DE FULL JOIN
SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO 
FROM CLIENTE C , EMPREGADO E 
WHERE C.VENDEDOR (+) = E.ID 
UNION OPERADOR DE CONJUNTO
SELECT C.ID, C.NOME, E.ID, E.ULT_NOME,E.CARGO 
FROM CLIENTE C , EMPREGADO E 
WHERE C.VENDEDOR = E.ID (+)
COMANDO EQUIVALENTE À LEFT 
COMANDO EQUIVALENTE À RIGHT 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO – UNION ALL
Resulta na combinação de todas as linhas de duas ou mais tabelas participantes do UNION, mantendo todas as linhas duplicadas.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO – UNION ALL
SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20)
UNION ALL
SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO – INTERSECT
Resulta na interseção entre todas as linhas de duas ou mais tabelas participantes do INTERSECT, ou seja, apenas as linhas comuns entre ela
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO - INTERSECT
20 E
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO – INTERSECT
SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20)
INTERSECT 
SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO - MINUS
Resulta nas linhas existentes na primeira tabela, mas que não existem na segunda
. 
As linhas comuns também não são resultantes. 
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO - MINUS
20 E QUE NÃO SÃO VENDEDORES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO – MINUS
SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20)
MINUS 
SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = 'VENDEDOR'
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
OPERADORES DE CONJUNTO – ORDENAÇÃO
SELECT ID FROM EMPREGADO WHERE ID_DEPTO IN (10,20)
UNION ALL
SELECT ID FROM EMPREGADO WHERE UPPER(CARGO) = VENDEDOR'
ORDER BY ID DESC
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Aprender a criar Visões, Indices e Sequences
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_08.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 8- Sql Parte 6
Conteúdo Programático desta aula
Aprender a criar Visões, Indices e Sequences
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Modelo de Dados
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES
Materializam o Esquema Externo de um banco de dados.
 
é uma consulta previamente definida e que fica armazenada no dicionário de dados, podendo ser acessada de forma similar a uma tabela.
 
Quando a visão é referenciada em um comando de SELECT suas linhas e colunas são determinadas dinamicamente, ou seja a consulta é executada e o resultado apresentado para o usuário, atuando como um verdadeira tabela virtual.
 
Uma visão pode permitir, com restrições que os dados da tabela sejam manipulados em comando de INSERT, UPDATE e DELETE, porém, não armazena estes dados.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - CRIAÇÃO
CRIAR UMA VISÃO COM O ID, PRIMEIRO NOME,
 ULTIMO NOME E CARGO DO EMPREGADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO
DE DADOS
VISÕES - CRIAÇÃO
CREATE VIEW EMP_RESUMO AS
SELECT ID, PRIM_NOME, ULT_NOME, CARGO 
FROM EMPREGADO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - CONSULTA
SELECT * FROM EMP_RESUMO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - TIPOS
Existem basicamente dois tipos de Views:
 
Simples : composto por apenas um SELECT, utiliza apenas uma tabela, suas colunas são formadas por colunas da tabela original, sem cálculos ou funções
Complexas: aquelas onde há um join entre tabelas
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES – MANIPULANDO DADOS
INSERT INTO EMP_RESUMO 
VALUES ( 10, ‘ALBERTO’,’RODRIGUES’, ‘ALMOXARIFE’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES – MANIPULANDO DADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - TIPOS
Vamos agora criar uma visão complexas, desejamos criar um visão com o id, nome completo e cargo do empregado e nome do departamento onde ele trabalha
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - TIPOS
CREATE VIEW EMP_DEP 
AS
SELECT E.ID , E.PRIM_NOME|| ' ' ||E.ULT_NOME AS "NOME EMPREGADO" , 
 E.CARGO , D.NOME AS "NOME DEPARTAMENTO"
FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.ID_DEPTO = D.ID
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - TIPOS
SELECT * FROM EMP_DEP
USUARIO PENSA QUE É UMA TABELA
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - TIPOS
INSERT INTO EMP_DEP 
VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - WITH READ ONLY
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - CONSULTA
INSERT INTO EMP_RESUMO 
VALUES ( 15, ‘SIDNEY’,’VENTURI’, ‘DIRETOR’)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - ELIMINANDO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
VISÕES - ELIMINANDO
DROP VIEW EMP_DEP
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES
CREATE SEQUENCE ID_CLI_SEQ
	INCREMENT BY 3
	START WITH 10
	MAXVALUE 1000
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - NEXTVAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - CURRVAL
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES
INSERT INTO CLIENTE 
VALUES (ID_CLI_SEQ.NEXTVAL , 'Casa Tombo', 6)
VAI INSERIR 16 NO ID
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - PARTICULARIDADES
A sequence é incrementada independente da transação ter sido efetivada (Commit) ou não (Rollback) o que pode gerar perda de valores. Não utilizar em aplicações que manipulam dados fiscais como emissão de Notas Fiscais. 
 
Da mesma forma que usuários acessam a mesma sequence, estes podem receber valores intercalados, visto que num dado momento a sequence poderá estar atendendo um número para cada um. Dois usuários jamais conseguirão gerar o mesmo número sobre uma mesma sequence.
Os valores que estão no CACHE (memória) são perdidos caso o banco de dados sofra uma interrupção anormal.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - PARTICULARIDADES
Regras para Utilização de NEXTVAL e CURRVAL
 
NEXTVAL e CURRVAL podem ser usados:
 
Numa cláusula SELECT em tabelas (exceto em Views)
Na cláusula VALUES de um comando INSERT
Na cláusula SET de um comando UPDATE
No SELECT da query principal de uma construção com subqueries
.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - PARTICULARIDADES
Restrições para Utilização de NEXTVAL e CURRVAL
 
NEXTVAL e CURRVAL não podem ser usados:
 
Dentro de uma lista de colunas de um comando SELECT de uma View
Com as cláusulas ORDER BY, GROUP BY ou HAVING de um comando SELECT
Com operadores de conjuntos UNION, INTERSECT e MINUS
Dentro de uma subconsulta
.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - ALTERANDO
ALTER SEQUENCE <sequence_name>
	[INCREMENT BY n ]
	[MAXVALUE n I NOMAXVALUE]
	[MINVALUE n I NOMINVALUE]
	...........
Controles sobre Sequences Alteradas
 Serão afetados apenas os números a serem gerados.
Algumas validações serão feitas como um novo valor MAXVALUE, não poderá ser definido se menor que o último número gerado.
A cláusula START WITH, não poderá ser alterada, neste caso, a sequence deverá ser eliminada e recriada.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - ALTERANDO
Alter Sequence ID_CLI_SEQ
 INCREMENT BY 5
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - ALTERANDO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
SEQUENCES - ELIMANDO
DROP SEQUENCE ID_CLI_SEQ
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INDICES - FUNDAMENTAÇÃO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INDICES - PRIMARIO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INDICES – CLUSTERING
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INDICES - SECUNDÁRIO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
INDICES - SECUNDÁRIO
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Cluster X Não Cluster
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Cluster X Não Cluster
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Denso e Não Denso
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Denso e Não Denso
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Denso e Não Denso
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Multinível
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Multinível
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Bitmap
Um índice bitmap atribui um “mapa de bits” (bitmap) para cada possível valor de um campo chave
 Uma matriz é criada com:
 uma linha para cada linha da tabela e
 uma coluna para cada valor distinto do atributo escolhido
 Cada bit no bitmap corresponde ao cruzamento entre um rowid e um valor do campo chave.
Se o bit está setado (=1), significa que o registro com o rowid correspondente contém o valor do campo chave
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Bitmap
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Bitmap
Durante o processamento de consultas, o mapa de bits é transferido para a memória
Consultas são transformadas para serem processadas por operações booleanas
Maior eficiência
 Eficiência é ainda maior se a tabela consultada possuir múltiplos índices bitmap
1 para cada coluna acessada
Cada lista de RowIDs é construída indepedentemente, utilizando os índices bitmap de cada coluna
Rotina de merge compara as listas de RowIDs buscando interseções
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices Bitmap
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices - Oracle
Tipos de Índices
 
Único - Garante a unicidade do valor. O Índice criado na Primary Key ou Unique Key, é único, porém podemos criar restrições de unicidade em outras colunas da tabela. Criado automaticamente em PK e UK
 
Não_único - Índices criados apenas com o propósito de acelerar a pesquisa, como em Chaves Estrangeiras (Foreing Key), onde a unicidade não é requerida.
 
Uma Coluna - Apenas uma coluna será indexada.
 
Colunas Compostas ou Concatenadas - Até 255 colunas podem ser concatenadas para formar apenas um índice e não necessitam ser adjacentes.
 
Função – É criado em função de um cálculo feito em uma ou mais colunas.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices - Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices - Oracle
CREATE INDEX IND_VEND ON CLIENTE(VENDEDOR)
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices - Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices - Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Índices - Oracle
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Próxima Aula
Aprender a
controlar transações
Acessar o dicionário de dados 
 do Oracle.
 LINGUAGEM SQL
IMPLEMENTAÇÃO DE BANCO DE DADOS
Iplementação de banco de dados/Aula_09.ppt
IMPLEMENTAÇÃO DE BANCO DE DADOS
Aula 9- Transações
IMPLEMENTAÇÃO DE BANCO DE DADOS
Conteúdo Programático desta aula
Transações
 TRANSAÇÕES
IMPLEMENTAÇÃO DE BANCO DE DADOS
IMPLEMENTAÇÃO DE BANCO DE DADOS
TRANSAÇÕES
 
Uma transação é uma unidade de execução de programa que acessa e, possivelmente, atualiza vários itens de dados. Uma transação, geralmente, é o resultado da execução de um programa de usuário escrito em uma linguagem de manipulação de dados, e é delimitada da forma: 
begin transaction 
.........
end transacion. 
A transação consiste de todas as operações ali executadas, entre o começo e o final da transação. Durante a execução de uma transação o banco de dados pode passar por estados de inconsistência por vários motivos como:
Queda de energia,
Falha física,
Etc..
 TRANSAÇÕES
IMPLEMENTAÇÃO DE BANCO DE DADOS
IMPLEMENTAÇÃO DE BANCO DE DADOS
TRANSAÇÃO
INÍCIO DA 
TRANSAÇÃO
FIM DA 
TRANSAÇÃO
EXECUÇÃO DA TRANSAÇÃO
BANCO DE DADOS EM 
ESTADO CONSISTENTE
BANCO DE DADOS TEMPORARIAMENTE 
EM ESTADO INCONSISTENTE
T1
T2
IMPLEMENTAÇÃO DE BANCO DE DADOS
 TRANSAÇÃO
COMANDO UPDATE
TABELA
TODA TRANSAÇÃO TERMINA
INSUCESSO (ROLLBACK)
SUCESSO (COMMIT)
IMAGEM ANTIGA
NOVA IMAGEM
IMPLEMENTAÇÃO DE BANCO DE DADOS
5
EXEMPLOS DE TRANSAÇÃO
BEGIN_TRANSACTION
UPDATE EMP
SET SAL = SAL * 1.1
WHERE CODEPT = 10
COMMIT
BEGIN_TRANSACTION
UPDATE CONTA
SET SALDO = SALDO - 200
WHERE NRCC = 1000
UPDATE CONTA 
SET SALDO = SALDO + 200
WHERE NRCC = 1002
COMMIT
BEGIN_TRANSACTION
UPDATE EMP
SET SAL = SAL * 1.1
WHERE CODEPT = 10
ROLLBACK
IMPLEMENTAÇÃO DE BANCO DE DADOS
PROPRIEDADES DAS TRANSAÇÕES
- ATOMICIDADE
	- CONSISTÊNCIA
		 - ISOLAMENTO
			-DURABILIDADE		
A C I D
IMPLEMENTAÇÃO DE BANCO DE DADOS
ATOMICIDADE
PROPRIEDADE DO TUDO OU NADA
 NRCC NOME	 CPF SALDO
 1000 J SILVA 123 500,00
 1001 A BARROS 143 500,00
 1002 J SILVA 123 200,00
 1003 S SALES 223 500,00
UPDATE CONTA SET SALDO = SALDO - 200 WHERE NRCC = 1000
300,00
400,00
UPDATE CONTA SET SALDO = SALDO + 200 WHERE NRCC = 1002
200,00
BEGIN_TRANSACTION
COMMIT
IMPLEMENTAÇÃO DE BANCO DE DADOS
GRAUS DE CONSISTENCIA
GRAU 3 - OUTRAS TRANSAÇÕES NÃO MODIFICAM 
QUALQUER DADOS DE T ANTES DE T TERMINAR
GRAU 2 - T NÃO LE DADOS MODIFICADOS
 POR OUTRA TRANSAÇÃO
GRAU 1 - T NÃO FAZ COMMIT DE DADOS
ESCRITOS ANTES DO FIM DA TRANSAÇÃO
GRAU 0 - T NÃO SOBRE-ESCREVE DADOS
 MODIFICADOS POR OUTRAS TRANSAÇÕES
IMPLEMENTAÇÃO DE BANCO DE DADOS
 ISOLAMENTO
UPDATE EMP...
EMP
Imagem ao inicio do select
Nova Imagem
SELECT * 
FROM EMP
IMPLEMENTAÇÃO DE BANCO DE DADOS
10
CONSISTÊNCIA/ISOLAMENTO
 NRCC NOME	 CPF SALDO
 1000 J SILVA 123 500,00
 1001 A BARROS 143 500,00
 1002 J SILVA 123 200,00
 1003 S SALES 223 500,00
AGENCIA
 R$ 300,00
------------------
COMPENSAÇÃO
500,00
200,00
500,00
200,00
300,00
R$ 200,00
300,00
IMPLEMENTAÇÃO DE BANCO DE DADOS
 DURABILIDADE
UPDATE EMP...
EMP
SELECT * 
FROM EMP
Imagem Antiga
COMMIT
MECANISMO
 DE
 RECUPERAÇÃO
IMPLEMENTAÇÃO DE BANCO DE DADOS
12
ESTADOS DA TRANSAÇÃO
IMPLEMENTAÇÃO DE BANCO DE DADOS
Execução concorrente 
Sejam T1 e T2 duas transações que transferem fundos de uma conta para outra. 
O saldo inicial de A é 100 e de B 200
A transação T1 transfere 50 reais da conta A para a conta B.
A transação T2 transfere 10 por cento do saldo da conta A para a conta B.
IMPLEMENTAÇÃO DE BANCO DE DADOS
Execução concorrente
T1:
	read(A);
	A := A – 50;
	write(A);
	read(B);
	B := B + 50;
	write(B);
T2:
	read(A);
	temp := A * 0,1;
	A := A – temp;
	write(A);
	read(B);
	B := B + temp;
	write(B);
IMPLEMENTAÇÃO DE BANCO DE DADOS
Execução em seqüência
T1
T2
T1
T2
read(A);
A := A – 50;
write(A);
read(B);
B := B + 50;
write(B);
read(A);
temp := A * 0,1;
A := A – temp;
write(A);
read(B);
B := B + temp;
write(B);
read(A);
A := A – 50;
write(A);
read(B);
B := B + 50;
write(B);
read(A);
temp := A * 0,1;
A := A – temp;
write(A);
read(B);
B := B + temp;
write(B);
Escalas de execução em seqüência: observe que o estado do BD é sempre 
consistente.
IMPLEMENTAÇÃO DE BANCO DE DADOS
Execução concorrente ...
T1
T2
read(A);
A := A – 50;
write(A);
read(B);
B := B + temp;
write(B);
read(B);
B := B + 50;
write(B);
read(A);
temp := A * 0,1;
A := A – temp;
write(A);
Correta
T1
T2
read(A);
A := A – 50;
write(A);
read(B);
B := B + 50;
write(B);
read(A);
temp := A * 0,1;
A := A – temp;
write(A);
read(B);
B := B + temp;
write(B);
Incorreta
IMPLEMENTAÇÃO DE BANCO DE DADOS
Serialização
O sistema de banco de dados deve controlar a execução concorrente de transações para assegurar que o estado do banco de dados permaneça consistente.
A consistência do banco de dados, sob execução concorrente, pode ser assegurada por meio da garantia que qualquer escala executada tenha o mesmo efeito de outra que tivesse sido executada sem qualquer concorrência.
Isto é, uma escala de execução deve, de alguma forma, ser equivalente a uma escala seqüencial.
IMPLEMENTAÇÃO DE BANCO DE DADOS
Controle de Concorrência
IMPLEMENTAÇÃO DE BANCO DE DADOS
Protocolos com Base em Bloqueio (Métodos Pessimistas)
Uma das formas de garantir que apenas escalonamentos serializáveis sejam produzidos é obrigar que o acesso aos itens de dados seja feito de maneira mutuamente exclusiva:
Enquanto uma transação acessa um item de dados, nenhuma outra transação pode modificá-lo.
Para implementar isso pode-se usar o método de bloqueio (lock).
IMPLEMENTAÇÃO DE BANCO DE DADOS
Bloqueios
Bloqueio compartilhado:
Se uma transação Ti obteve um bloqueio compartilhado (denotado por S) sobre o item de dado Q, então Ti pode ler, mas não escrever em Q.
Bloqueio exclusivo:
Se uma transação Ti obteve um bloqueio exclusivo (denotado por X) do item de dado Q, então Ti pode tanto ler como escrever em Q.
Toda transação precisa solicitar o bloqueio apropriado antes de executar qualquer operação sobre Q.
IMPLEMENTAÇÃO DE BANCO DE DADOS
Bloqueios
T1: 
	lock-X(B);
	read(B);
	B := B – 50;
	write(B);
	unlock(B);
	lock-X(A);
	read(A);
	A := A + 50;
	write(A);
	unlock(A);
T2:
	lock-S(A);
	read(A);
	unlock(A);
	lock-S(B);
	read(B);
	display (A + B);
	unlock(B);
Se A = 100 e B = 200, o valor mostrado em T2
= 300.
IMPLEMENTAÇÃO DE BANCO DE DADOS
Ordenamento Timestamp (Método Otimista)
Garante seriabilidade:
Envolve o uso de timestamp para ordenar a execução das transações de forma que o escalonamento formado seja equivalente ao escalonamento serial.
Timestamp: identificador único criado pelo SGBD para identificar uma transação. São associados na ordem em que as transações são submetidas ao sistema.
TS(T) = timestamp da transação T
No escalonamento as transações tomam a ordem de seus timestamps
IMPLEMENTAÇÃO DE BANCO DE DADOS
Algoritmo Básico
Associa dois timestamps a cada item X:
Read_TS(x): o timestamp de leitura de X é o maior entre todos os timestamps de transações que leram X com sucesso;
Write_TS(x): o timestamp de escrita de X é o maior entre todos os timestamps de transações que escreveram X com sucesso; 
Esses timestamps são atualizados sempre que uma instrução read(x) ou write(x) é executada. 
Assegura que as operações de leitura e

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando