SlideShare a Scribd company logo
1 of 39
Download to read offline
Bancos de Dados
Multimidia
Ticianne Darin
Álgebra Relacional Básica
Álgebra Relacional
• Álgebra relacional é uma linguagem de consulta
  téorica
   – usuários não a usam diretamente. É muito
     complicada para ser usada diretamente.

• Porém, a álgebra relacional é usada
  internamente em todos os SGBDs
   – outras linguagens de consulta são traduzidas em
     álgebra relacional.
Operações da Álgebra Relacional
• Operações derivadas da teoria dos conjuntos
   – União
   – Interseção
   – Diferença
   – Produto Cartesiano
• Operações relacionais especiais
   – Seleção
   – Projeção
   – Junção (natural)
Operações da Álgebra Relacional

União:
     R U S: Obtém a união das tuplas em R e S.
     Ilegal se R e S têm números diferentes de atributos.
                          R                         S
 R                            A        B                A     B
                              a1      b1                a2   b2
                  S           a2      b2                a3   b3



                                               A        B
                                   R  S       a1       b1
                                               a2       b2
                                               a3       b3
Operações da Álgebra Relacional
Diferença
  R-S: obtém as tuplas em R que não estão em S.
  Ilegal se R e S têm números diferentes de atributos

  R                         R   A         B        S    A     B
                        S       a1       b1             a2   b2
                                a2       b2             a3   b3
                    S



                                     R - S    A         B
                                              a1       b1
Operações da Álgebra Relacional
Interseção
   R  S: Obtém a interseção das tuplas de R e S.
     Ilegal se R e S têm números diferentes de atributos.

 R                            R    A       B            S   A      B
                         S         a1     b1                a2    b2
                                   a2     b2                a3    b3




                                          R  S        A      B
                                                       a2    b2
Operações da Álgebra Relacional
Seleção:
 Seleciona todas as tuplas que satisfazem à condição de
  seleção de uma relação R.
   R
                                       R   A     B
                                           a1   b1
                                           a2   b2



                            R [A = ‘a1’]
                                           A     B
                                           a1   b1


 R [expressão de seleção]
Operações da Álgebra Relacional
Projeção:
  Produz uma nova relação com apenas alguns atributos
  de R, removendo tuplas duplicadas.
   R
                                    R   A      B
                                        a1    b1
                                        a2    b2




                            R [B]         B
                                         b1

                                         b2

    R [A1, ... , An]
Operações da Álgebra Relacional
Produto Cartesiano:
A relação resultante consiste de todas as possíveis
tuplas resultantes da combinação de duas tuplas, uma
de cada relação envolvida na operação.

 R   A      B        R x S    A     B     C      D
     a1    b1                 a1    b1    c2    d2
     a2    b2                 a1    b1    c3    d3
                              a2    b2    c2    d2
 S   C      D                 a2    b2    c3    d3
      c2   d2
      c3   d3
Operações da Álgebra Relacional
 Junção:
   A junção de R com S = (R x S) [ expressão de seleção]


 R                       R x S [ B = C]
      A     B
      a1   b1
                            A        B    C     D
      a2   b2
                            a1       b1   b1   d3
                            a2       b2   b2   d2
 S   C      D
      b2   d2
      b1   d3
Operações da Álgebra Relacional
 Junção Natural:
  Quando a condição de junção for a igualdade do valor de um atributo
 comum e o atributo comum aparecer só uma vez no resultado.


    R     A       B            R * S
          a1     b1
          a2     b2              A       B      D
                                 a1      b1     d3
                                 a2      b2     d2
    S    C        D
          b2     d2
          b1     d3
Consultas em SQL
Estrutura Básica de consultas SQL
• SQL é baseada em operações de conjuntos e de álgebra
  relacional com algumas modificações e extensões
• Uma consulta SQL básica tem a forma:

           Select A1, A2, ..., Na
           From r1, r2, ..., rm
           Where P

   – Ai’s representam atributos
   – Ri’s representam relações
   – P é um predicado.

• O resultado de uma consulta SQL é uma relação.
A cláusula SELECT
• A cláusula select corresponde à operação de
  projeção
• É utilizada para listar os atributos pretendidos no
  resultado da consulta.
• NOTA:
   – O SQL não permite o caracter ‘-’ nos nomes,
     portanto deverá utilizar, por exemplo, nome_cliente
     em vez de nome-cliente num sistema existente.
• NOTE:
   – As maiúsculas e minúsculas não são distinguidas
    em nomes da linguagem SQL.
A cláusula SELECT
• Exemplos
  – Listar os nomes de todos os clientes
  – Um asterisco na cláusula select denota
    “todos os atributos”

   Select nome           Select *
   From Cliente          From Cliente
A cláusula SELECT
• O SQL permite duplicações nas relações e nos
  resultados de consultas.
• Para forçar a eliminação de duplicações, inserir a
  palavra-chave distinct após select.
   – Apresentar os endereços de todos clientes, sem
     repetições
           Select distinct endereço
           From Cliente

• A palavra-chave all indica que os duplicados não
  devem ser removidos.
           Select all endereço
           From Cliente
A cláusula SELECT
• A cláusula select pode conter expressões aritméticas
  envolvendo as operações, +, –, *, e /, com
  argumentos constantes ou atributos
• Dependendo das implementações, encontram-se
  normalmente definidas uma biblioteca de funções.
• A consulta:
      Select procodigo, preço, taxa*100
      From Produto


• Devolve uma relação idêntica à relação Produto,
  exceto que o atributo taxa é multiplicado por 100.
A cláusula FROM
• A cláusula from corresponde à operação de
  produto cartesiano
• Indica as relações a consultar na avaliação da
  expressão.
   – Encontrar o produto cartesiano Cliente x Pedido

             Select *
             From Cliente, Pedido
A cláusula WHERE
• A cláusula where corresponde ao predicado de
  seleção
• É formada por um predicado envolvendo
  atributos de relações que aparecem na
  cláusula from.
  – Encontrar telefone dos clientes que se chamam
    ‘João da Silva’
        Select telefone
        From Cliente
        Where nome=‘João da Silva’
A cláusula WHERE
• Os resultados de comparações podem ser
  combinados por intermédio dos conectivos lógicos
  and, or, e not.

• Podem-se aplicar comparações ao resultado de
  expressões aritméticas.
   – Encontrar os códigos dos produtos do pedido número 203,
     cujas quantidades são superiores a dois itens

         Select produto
         From Itens
         Where pedido=203 and quantidade>2
A cláusula WHERE
• Operador de comparação between para
  especificar condições em que um valor
  deve estar contido num intervalo de
  valores (incluindo os seus extremos).


• Para negar a condição pode-se colocar
  o conectivo not antes de between.
A cláusula WHERE
• Apresentar os códigos dos produtos
  cujos preços estão entre R$5,00 e
  R$30,00
       Select procodigo
       From Produto
       Where preço between 5 and 30


• Para negar a condição pode-se colocar
  o conectivo not antes de between.
       Select procodigo
       From Produto
       Where taxa not between 0,2 and 0,35
Operações com cadeias de
Caracteres
• SQL inclui um mecanismo de concordância de padrões para
  comparações envolvendo cadeias de caracteres.

• Os padrões são descritos recorrendo a dois caracteres especiais:

    – percentagem(%): concorda com qualquer subcadeia.

    – sublinhado (_): concorda com qualquer carácter.

• A SQL suporta uma variedade de operações com cadeias de
  caracteres, tais como:

    – concatenação (utilizando “||”), conversão de maiúsculas para
      minúsculas (e vice versa), calcular o comprimento, extração de
      subcadeias, etc.
Operações com cadeias de Caracteres

• Listar todos os clientes cujo endereço inclua
  “Rua Nélio Rodrigues” .

     Select nome
     From Cliente
     Where endereço like ‘% Rua Nélio Rodrigues %’



• Encontrar uma cadeia de caracteres que de
  fato contenha o símbolo de porcentagem
   – Ex.: 10%

                 like ‘10%’
A operação de renomeação AS
• A linguagem SQL permite a renomeação
  de relações e atributos recorrendo à
  cláusula as :
           old_name as new_name
• Listar os nome e códigos dos pedidos
  de cada cliente, renomeando a coluna
  pedcodigo para codPedido
     Select c.nome, p.pedcodigo as codPedido
     From Cliente as c, Pedido as p
     Where c.ccodigo = p.pedcodigo
A operação de renomeação AS
• Caso se pretenda utilizar um nome com
  espaços, esse nome deverá ser
  colocado entre aspas.
   Select c.nome, p.pedcodigo as “codigo do Pedido”
   From Cliente as c, Pedido as p
   Where c.ccodigo = p.pedcodigo
A operação de ordenação ORDER
BY
• Listar em ordem alfabética os nomes de todos os clientes que
  possuem algum pedido

          Select distinct nome
          From Cliente as c, Pedido as p
          Where c.ccodigo = p.pedcodigo
          Order by nome;


• Pode-se especificar desc para ordenação descrescente ou
  asc para ordenação ascendente, para cada atributo; por
  omissão, assume-se ordem ascendente.
                 Order by nome desc;

• Pode-se ter mais do que uma chave de ordenação, separando-as
  com vírgulas
Funções de Agregação
• Estas funções aplicam-se a multiconjuntos
  de valores de uma coluna de uma relação,
  devolvendo um único valor como resultado
  – avg: valor médio
  – min: valor mínimo
  – max: valor máximo
  – sum: soma dos valores
  – count: número de valores
Funções de Agregação
• Determinar o preço médio dos produtos comprados no dia
  16/03/2008.
       Select AVG(preço)
       From Pedido as p, Itens as i, Produto as pr
       Where p.data=’16/03/2008’ and
             p.pedcodigo=i.produto and
             i.produto=pr.procodigo


• Calcular a quantidade de clientes
               Select COUNT(ccodigo)
               From Cliente


• Encontrar o número de clientes com nomes diferentes
              Select COUNT(distinct nome)
              From Cliente
Funções de agregação – GROUP BY
• Listar o número de pedidos por cliente.
    Select c.nome, COUNT(p.pedcodigo)
    From Cliente as c, Pedido as p
    Where c.ccodifgo=p.cliente
    Group By c.nome;

• Atenção:
   – Atributos na cláusula select fora de funções de
     agregação têm de aparecer na lista group by

   – Se aparecer mais do que um atributo em group
     by, então cada grupo é formado pelas tuplas com
     valores iguais em todos esses os atributos
Funções de agregação – Having
• Listar o número de pedidos por cliente, para clientes
  que tiverem mais de 5 pedidos
     Select c.nome, COUNT(p.pedcodigo) as numeroPedidos
     From Cliente as c, Pedido as p
     Where c.ccodifgo=p.cliente
     Group By c.nome
     Having numeroPedidos > 5


• Nota:
   – predicados na cláusula having são aplicados depois
     da formação dos grupos, enquanto que os predicados
     na cláusula where são aplicados antes da formação
     dos grupos.
Operações com Conjuntos
• As operações com conjuntos union, intersect, e
  except (minus no Oracle9i) operam sobre relações e
  correspondem aos operadores 
• Cada uma das operações anteriores elimina as duplicações
  automaticamente.
• Para reter duplicados deve-se utilizar as respectivas versões
  multiconjunto union all, intersect all e except all
• Suponha que uma tupla ocorre m vezes em R e n vezes
  em S, então ele ocorre:
    – m + n vezes em R union all S

    – min(m,n) vezes em R intersect all S

    – max(0, m – n) vezes em R except all S
Operações com Conjuntos - Union
• Listar todos os clientes que realizaram pedidos
  com mais de 5 itens ou contendo algum
  produto de preço>R$30,00
    (Select c.nome
     From Cliente as c, Pedido as p, Produto as pr
     Where c.ccodifgo=p.cliente and
          p.pedcodigo=i.pedido and
          i.quantidade>5)
    UNION

    (Select c.nome
     From Cliente as c, Pedido as p, Produto as pr
     Where c.ccodifgo=p.cliente and
          p.pedcodigo=i.pedido and
          i.produto=pr.procodigo and
          i.preço>30)
Operações com Conjuntos - Intersect
• Listar todos os clientes que realizaram pedidos
  com mais de 5 itens e contendo algum
  produto de preço>R$30,00
   (Select c.nome
    From Cliente as c, Pedido as p, Produto as pr
    Where c.ccodifgo=p.cliente and
         p.pedcodigo=i.pedido and
         i.quantidade>5)

   INTERSECT

   (Select c.nome
    From Cliente as c, Pedido as p, Produto as pr
    Where c.ccodifgo=p.cliente and
         p.pedcodigo=i.pedido and
         i.produto=pr.procodigo and
         i.preço>30)
Operações com Conjuntos - Except
• Listar todos os clientes que realizaram pedidos
  com mais de 5 itens mas não contendo algum
  produto de preço>R$30,00
   (Select c.nome
    From Cliente as c, Pedido as p, Produto as pr
    Where c.ccodifgo=p.cliente and
         p.pedcodigo=i.pedido and
         i.quantidade>5)

   EXCEPT

   (Select c.nome
    From Cliente as c, Pedido as p, Produto as pr
    Where c.ccodifgo=p.cliente and
         p.pedcodigo=i.pedido and
         i.produto=pr.procodigo and
         i.preço>30)
Exercício de Fixação
EMPREGADOS (E)
   enome     CPF     salário    CPF_Supervisor     dnumero



DEPARTAMENTOS (D)
                   dnome       dnúmero     CPF_gerente


TRABALHA (T)                        PROJETOS (P)

   CPF_Emp         pnumero          pnome pnúmero        dnúmero
Exercício de Fixação
• Atividades:
   – 1. Fazer o esquema relacional acima;
   – 2.Inserir o empregado André que trabalham no projeto
     chamado CID do departamento de computação;
   – 3.Inserir o empregado Suzana que trabalha no projeto
     chamado CID do departamento de computação;
   – 4. Inserir o empregado Lívia que é gerente dos
     empregados André e Suzana;
   – 5. Inserir o departamento de estatística e seus projetos:
     KDE, SUDO, MQRO, ACLT.
Ora, a fé é a certeza daquilo que
esperamos e a prova das coisas que
não vemos.
                    Hebreus 11:1




           Até a próxima aula!

More Related Content

What's hot

Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
Rafael Barbolo
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
Roberto Grande
 

What's hot (20)

Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Caso De Uso
Caso De UsoCaso De Uso
Caso De Uso
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 
UML
UMLUML
UML
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Javascript Orientado a Objeto
Javascript Orientado a ObjetoJavascript Orientado a Objeto
Javascript Orientado a Objeto
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Conceitos e arquitetura do sistema de banco de dados
Conceitos e arquitetura do sistema de banco de dadosConceitos e arquitetura do sistema de banco de dados
Conceitos e arquitetura do sistema de banco de dados
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
Banco de Dados - Conceitos Básicos
Banco de Dados - Conceitos BásicosBanco de Dados - Conceitos Básicos
Banco de Dados - Conceitos Básicos
 
Mapeamento do modelo conceitual para o lógico - Banco de Dados
Mapeamento do modelo conceitual  para o lógico - Banco de DadosMapeamento do modelo conceitual  para o lógico - Banco de Dados
Mapeamento do modelo conceitual para o lógico - Banco de Dados
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
SQL Joins and Query Optimization
SQL Joins and Query OptimizationSQL Joins and Query Optimization
SQL Joins and Query Optimization
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 
Análise e Modelagem com UML
Análise e Modelagem com UMLAnálise e Modelagem com UML
Análise e Modelagem com UML
 

Viewers also liked

Bdm aula 4 - modelagem de dados com modelo er
Bdm   aula 4 - modelagem de dados com modelo erBdm   aula 4 - modelagem de dados com modelo er
Bdm aula 4 - modelagem de dados com modelo er
Ticianne Darin
 
Bdm aula 3 - modelo relacional e restrições de integridade
Bdm   aula 3 - modelo relacional e restrições de integridadeBdm   aula 3 - modelo relacional e restrições de integridade
Bdm aula 3 - modelo relacional e restrições de integridade
Ticianne Darin
 
Bdm aula 5 - construindo modelos er e mapeamento er-relacional
Bdm   aula 5 - construindo modelos er e mapeamento er-relacionalBdm   aula 5 - construindo modelos er e mapeamento er-relacional
Bdm aula 5 - construindo modelos er e mapeamento er-relacional
Ticianne Darin
 
Bdm aula 6 - normalização - ticianne darin
Bdm   aula 6 - normalização - ticianne darinBdm   aula 6 - normalização - ticianne darin
Bdm aula 6 - normalização - ticianne darin
Ticianne Darin
 
Aula De Projeto De Bd E Mer
Aula De Projeto De Bd E MerAula De Projeto De Bd E Mer
Aula De Projeto De Bd E Mer
linux.certifield
 
08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er
Walter Alves Pereira
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darin
Ticianne Darin
 
Bdm aula 7 - normalização parte2 - ticianne darin
Bdm   aula 7 - normalização parte2 - ticianne darinBdm   aula 7 - normalização parte2 - ticianne darin
Bdm aula 7 - normalização parte2 - ticianne darin
Ticianne Darin
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamento
Carlos Melo
 
Isc aula 5 - estrutura e organização da informação
Isc   aula 5 - estrutura e organização da informaçãoIsc   aula 5 - estrutura e organização da informação
Isc aula 5 - estrutura e organização da informação
Fábio Andrade
 

Viewers also liked (20)

Bdm aula 4 - modelagem de dados com modelo er
Bdm   aula 4 - modelagem de dados com modelo erBdm   aula 4 - modelagem de dados com modelo er
Bdm aula 4 - modelagem de dados com modelo er
 
Bdm aula 3 - modelo relacional e restrições de integridade
Bdm   aula 3 - modelo relacional e restrições de integridadeBdm   aula 3 - modelo relacional e restrições de integridade
Bdm aula 3 - modelo relacional e restrições de integridade
 
Bdm aula 5 - construindo modelos er e mapeamento er-relacional
Bdm   aula 5 - construindo modelos er e mapeamento er-relacionalBdm   aula 5 - construindo modelos er e mapeamento er-relacional
Bdm aula 5 - construindo modelos er e mapeamento er-relacional
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Bdm aula 6 - normalização - ticianne darin
Bdm   aula 6 - normalização - ticianne darinBdm   aula 6 - normalização - ticianne darin
Bdm aula 6 - normalização - ticianne darin
 
Aula calculo relacional
Aula calculo relacionalAula calculo relacional
Aula calculo relacional
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dados
 
Aula De Projeto De Bd E Mer
Aula De Projeto De Bd E MerAula De Projeto De Bd E Mer
Aula De Projeto De Bd E Mer
 
08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er
 
Bdm aula 9 - operações sql - ticianne darin
Bdm   aula 9 - operações sql - ticianne darinBdm   aula 9 - operações sql - ticianne darin
Bdm aula 9 - operações sql - ticianne darin
 
Bdm aula 7 - normalização parte2 - ticianne darin
Bdm   aula 7 - normalização parte2 - ticianne darinBdm   aula 7 - normalização parte2 - ticianne darin
Bdm aula 7 - normalização parte2 - ticianne darin
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Algebra Relacional
Algebra RelacionalAlgebra Relacional
Algebra Relacional
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamento
 
Isc aula 5 - estrutura e organização da informação
Isc   aula 5 - estrutura e organização da informaçãoIsc   aula 5 - estrutura e organização da informação
Isc aula 5 - estrutura e organização da informação
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitual
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DERBanco de Dados - Introdução - Projeto de Banco de Dados - DER
Banco de Dados - Introdução - Projeto de Banco de Dados - DER
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 

More from Ticianne Darin

More from Ticianne Darin (20)

Ihc2016.2 aula. 13 Avaliação em IHC
Ihc2016.2 aula. 13  Avaliação em IHCIhc2016.2 aula. 13  Avaliação em IHC
Ihc2016.2 aula. 13 Avaliação em IHC
 
Ihc2016.2 aula. 12 construindo versões interativas dos designs
Ihc2016.2 aula. 12   construindo versões interativas dos designsIhc2016.2 aula. 12   construindo versões interativas dos designs
Ihc2016.2 aula. 12 construindo versões interativas dos designs
 
Ihc2016.2 aula. 11 projetando a interação
Ihc2016.2 aula. 11   projetando a interaçãoIhc2016.2 aula. 11   projetando a interação
Ihc2016.2 aula. 11 projetando a interação
 
Hd 2016.1 aula.16 - panorama do design no brasil
Hd 2016.1 aula.16 - panorama do design no brasilHd 2016.1 aula.16 - panorama do design no brasil
Hd 2016.1 aula.16 - panorama do design no brasil
 
Ihc2016.2 aula. 10 coleta e análise de dados
Ihc2016.2 aula. 10  coleta e análise de dadosIhc2016.2 aula. 10  coleta e análise de dados
Ihc2016.2 aula. 10 coleta e análise de dados
 
Hd 2016.1 aula.15 - design pós-moderno
Hd 2016.1 aula.15 - design pós-modernoHd 2016.1 aula.15 - design pós-moderno
Hd 2016.1 aula.15 - design pós-moderno
 
Ihc2016.2 aula 9 engenharia cognitiva e teoria da ação
Ihc2016.2 aula 9    engenharia cognitiva e teoria da açãoIhc2016.2 aula 9    engenharia cognitiva e teoria da ação
Ihc2016.2 aula 9 engenharia cognitiva e teoria da ação
 
Ihc2016.2 aula 7 critérios de qualidade de uso
Ihc2016.2 aula 7   critérios de qualidade de usoIhc2016.2 aula 7   critérios de qualidade de uso
Ihc2016.2 aula 7 critérios de qualidade de uso
 
Hd 2016.1 aula.14 - art deco e streamline
Hd 2016.1 aula.14 - art deco e streamlineHd 2016.1 aula.14 - art deco e streamline
Hd 2016.1 aula.14 - art deco e streamline
 
Ihc2016.2 aula 6 interface e modelo de interação
Ihc2016.2 aula 6   interface e modelo de interaçãoIhc2016.2 aula 6   interface e modelo de interação
Ihc2016.2 aula 6 interface e modelo de interação
 
Hd 2016.1 aula.13 - estilo internacional
Hd 2016.1 aula.13 - estilo internacionalHd 2016.1 aula.13 - estilo internacional
Hd 2016.1 aula.13 - estilo internacional
 
Ihc2016.2 aula 5 contexto de uso e interação
Ihc2016.2 aula 5   contexto de uso e interaçãoIhc2016.2 aula 5   contexto de uso e interação
Ihc2016.2 aula 5 contexto de uso e interação
 
Hd 2016.1 aula.12 - de stijl
Hd 2016.1 aula.12 - de stijlHd 2016.1 aula.12 - de stijl
Hd 2016.1 aula.12 - de stijl
 
Ihc2016.2 aula 4 design conceitual
Ihc2016.2 aula 4   design conceitualIhc2016.2 aula 4   design conceitual
Ihc2016.2 aula 4 design conceitual
 
Hd 2016.1 aula.11_bauhaus
Hd 2016.1 aula.11_bauhausHd 2016.1 aula.11_bauhaus
Hd 2016.1 aula.11_bauhaus
 
Hd 2016.1 aula.10_construtivismo russo
Hd 2016.1 aula.10_construtivismo russoHd 2016.1 aula.10_construtivismo russo
Hd 2016.1 aula.10_construtivismo russo
 
Hd 2016.1 aula 9_influências das vanguardas europeias - surrealismo
Hd 2016.1 aula 9_influências das vanguardas europeias - surrealismoHd 2016.1 aula 9_influências das vanguardas europeias - surrealismo
Hd 2016.1 aula 9_influências das vanguardas europeias - surrealismo
 
Hd 2016.1 aula 8_influências das vanguardas europeias - dadaísmo
Hd 2016.1 aula 8_influências das vanguardas europeias - dadaísmoHd 2016.1 aula 8_influências das vanguardas europeias - dadaísmo
Hd 2016.1 aula 8_influências das vanguardas europeias - dadaísmo
 
Hd 2016.1 aula 7_influências das vanguardas europeias - futurismo
Hd 2016.1 aula 7_influências das vanguardas europeias - futurismoHd 2016.1 aula 7_influências das vanguardas europeias - futurismo
Hd 2016.1 aula 7_influências das vanguardas europeias - futurismo
 
Ihc2016.2 aula 3 introdução ao design de interação
Ihc2016.2 aula 3   introdução ao design de interaçãoIhc2016.2 aula 3   introdução ao design de interação
Ihc2016.2 aula 3 introdução ao design de interação
 

Bdm aula 8 - algebra relacional básica e consultas sql - ticianne darin

  • 3. Álgebra Relacional • Álgebra relacional é uma linguagem de consulta téorica – usuários não a usam diretamente. É muito complicada para ser usada diretamente. • Porém, a álgebra relacional é usada internamente em todos os SGBDs – outras linguagens de consulta são traduzidas em álgebra relacional.
  • 4. Operações da Álgebra Relacional • Operações derivadas da teoria dos conjuntos – União – Interseção – Diferença – Produto Cartesiano • Operações relacionais especiais – Seleção – Projeção – Junção (natural)
  • 5. Operações da Álgebra Relacional União: R U S: Obtém a união das tuplas em R e S. Ilegal se R e S têm números diferentes de atributos. R S R A B A B a1 b1 a2 b2 S a2 b2 a3 b3 A B R  S a1 b1 a2 b2 a3 b3
  • 6. Operações da Álgebra Relacional Diferença R-S: obtém as tuplas em R que não estão em S. Ilegal se R e S têm números diferentes de atributos R R A B S A B S a1 b1 a2 b2 a2 b2 a3 b3 S R - S A B a1 b1
  • 7. Operações da Álgebra Relacional Interseção R  S: Obtém a interseção das tuplas de R e S. Ilegal se R e S têm números diferentes de atributos. R R A B S A B S a1 b1 a2 b2 a2 b2 a3 b3 R  S A B a2 b2
  • 8. Operações da Álgebra Relacional Seleção: Seleciona todas as tuplas que satisfazem à condição de seleção de uma relação R. R R A B a1 b1 a2 b2 R [A = ‘a1’] A B a1 b1 R [expressão de seleção]
  • 9. Operações da Álgebra Relacional Projeção: Produz uma nova relação com apenas alguns atributos de R, removendo tuplas duplicadas. R R A B a1 b1 a2 b2 R [B] B b1 b2 R [A1, ... , An]
  • 10. Operações da Álgebra Relacional Produto Cartesiano: A relação resultante consiste de todas as possíveis tuplas resultantes da combinação de duas tuplas, uma de cada relação envolvida na operação. R A B R x S A B C D a1 b1 a1 b1 c2 d2 a2 b2 a1 b1 c3 d3 a2 b2 c2 d2 S C D a2 b2 c3 d3 c2 d2 c3 d3
  • 11. Operações da Álgebra Relacional Junção: A junção de R com S = (R x S) [ expressão de seleção] R R x S [ B = C] A B a1 b1 A B C D a2 b2 a1 b1 b1 d3 a2 b2 b2 d2 S C D b2 d2 b1 d3
  • 12. Operações da Álgebra Relacional Junção Natural: Quando a condição de junção for a igualdade do valor de um atributo comum e o atributo comum aparecer só uma vez no resultado. R A B R * S a1 b1 a2 b2 A B D a1 b1 d3 a2 b2 d2 S C D b2 d2 b1 d3
  • 14. Estrutura Básica de consultas SQL • SQL é baseada em operações de conjuntos e de álgebra relacional com algumas modificações e extensões • Uma consulta SQL básica tem a forma: Select A1, A2, ..., Na From r1, r2, ..., rm Where P – Ai’s representam atributos – Ri’s representam relações – P é um predicado. • O resultado de uma consulta SQL é uma relação.
  • 15. A cláusula SELECT • A cláusula select corresponde à operação de projeção • É utilizada para listar os atributos pretendidos no resultado da consulta. • NOTA: – O SQL não permite o caracter ‘-’ nos nomes, portanto deverá utilizar, por exemplo, nome_cliente em vez de nome-cliente num sistema existente. • NOTE: – As maiúsculas e minúsculas não são distinguidas em nomes da linguagem SQL.
  • 16. A cláusula SELECT • Exemplos – Listar os nomes de todos os clientes – Um asterisco na cláusula select denota “todos os atributos” Select nome Select * From Cliente From Cliente
  • 17. A cláusula SELECT • O SQL permite duplicações nas relações e nos resultados de consultas. • Para forçar a eliminação de duplicações, inserir a palavra-chave distinct após select. – Apresentar os endereços de todos clientes, sem repetições Select distinct endereço From Cliente • A palavra-chave all indica que os duplicados não devem ser removidos. Select all endereço From Cliente
  • 18. A cláusula SELECT • A cláusula select pode conter expressões aritméticas envolvendo as operações, +, –, *, e /, com argumentos constantes ou atributos • Dependendo das implementações, encontram-se normalmente definidas uma biblioteca de funções. • A consulta: Select procodigo, preço, taxa*100 From Produto • Devolve uma relação idêntica à relação Produto, exceto que o atributo taxa é multiplicado por 100.
  • 19. A cláusula FROM • A cláusula from corresponde à operação de produto cartesiano • Indica as relações a consultar na avaliação da expressão. – Encontrar o produto cartesiano Cliente x Pedido Select * From Cliente, Pedido
  • 20. A cláusula WHERE • A cláusula where corresponde ao predicado de seleção • É formada por um predicado envolvendo atributos de relações que aparecem na cláusula from. – Encontrar telefone dos clientes que se chamam ‘João da Silva’ Select telefone From Cliente Where nome=‘João da Silva’
  • 21. A cláusula WHERE • Os resultados de comparações podem ser combinados por intermédio dos conectivos lógicos and, or, e not. • Podem-se aplicar comparações ao resultado de expressões aritméticas. – Encontrar os códigos dos produtos do pedido número 203, cujas quantidades são superiores a dois itens Select produto From Itens Where pedido=203 and quantidade>2
  • 22. A cláusula WHERE • Operador de comparação between para especificar condições em que um valor deve estar contido num intervalo de valores (incluindo os seus extremos). • Para negar a condição pode-se colocar o conectivo not antes de between.
  • 23. A cláusula WHERE • Apresentar os códigos dos produtos cujos preços estão entre R$5,00 e R$30,00 Select procodigo From Produto Where preço between 5 and 30 • Para negar a condição pode-se colocar o conectivo not antes de between. Select procodigo From Produto Where taxa not between 0,2 and 0,35
  • 24. Operações com cadeias de Caracteres • SQL inclui um mecanismo de concordância de padrões para comparações envolvendo cadeias de caracteres. • Os padrões são descritos recorrendo a dois caracteres especiais: – percentagem(%): concorda com qualquer subcadeia. – sublinhado (_): concorda com qualquer carácter. • A SQL suporta uma variedade de operações com cadeias de caracteres, tais como: – concatenação (utilizando “||”), conversão de maiúsculas para minúsculas (e vice versa), calcular o comprimento, extração de subcadeias, etc.
  • 25. Operações com cadeias de Caracteres • Listar todos os clientes cujo endereço inclua “Rua Nélio Rodrigues” . Select nome From Cliente Where endereço like ‘% Rua Nélio Rodrigues %’ • Encontrar uma cadeia de caracteres que de fato contenha o símbolo de porcentagem – Ex.: 10% like ‘10%’
  • 26. A operação de renomeação AS • A linguagem SQL permite a renomeação de relações e atributos recorrendo à cláusula as : old_name as new_name • Listar os nome e códigos dos pedidos de cada cliente, renomeando a coluna pedcodigo para codPedido Select c.nome, p.pedcodigo as codPedido From Cliente as c, Pedido as p Where c.ccodigo = p.pedcodigo
  • 27. A operação de renomeação AS • Caso se pretenda utilizar um nome com espaços, esse nome deverá ser colocado entre aspas. Select c.nome, p.pedcodigo as “codigo do Pedido” From Cliente as c, Pedido as p Where c.ccodigo = p.pedcodigo
  • 28. A operação de ordenação ORDER BY • Listar em ordem alfabética os nomes de todos os clientes que possuem algum pedido Select distinct nome From Cliente as c, Pedido as p Where c.ccodigo = p.pedcodigo Order by nome; • Pode-se especificar desc para ordenação descrescente ou asc para ordenação ascendente, para cada atributo; por omissão, assume-se ordem ascendente. Order by nome desc; • Pode-se ter mais do que uma chave de ordenação, separando-as com vírgulas
  • 29. Funções de Agregação • Estas funções aplicam-se a multiconjuntos de valores de uma coluna de uma relação, devolvendo um único valor como resultado – avg: valor médio – min: valor mínimo – max: valor máximo – sum: soma dos valores – count: número de valores
  • 30. Funções de Agregação • Determinar o preço médio dos produtos comprados no dia 16/03/2008. Select AVG(preço) From Pedido as p, Itens as i, Produto as pr Where p.data=’16/03/2008’ and p.pedcodigo=i.produto and i.produto=pr.procodigo • Calcular a quantidade de clientes Select COUNT(ccodigo) From Cliente • Encontrar o número de clientes com nomes diferentes Select COUNT(distinct nome) From Cliente
  • 31. Funções de agregação – GROUP BY • Listar o número de pedidos por cliente. Select c.nome, COUNT(p.pedcodigo) From Cliente as c, Pedido as p Where c.ccodifgo=p.cliente Group By c.nome; • Atenção: – Atributos na cláusula select fora de funções de agregação têm de aparecer na lista group by – Se aparecer mais do que um atributo em group by, então cada grupo é formado pelas tuplas com valores iguais em todos esses os atributos
  • 32. Funções de agregação – Having • Listar o número de pedidos por cliente, para clientes que tiverem mais de 5 pedidos Select c.nome, COUNT(p.pedcodigo) as numeroPedidos From Cliente as c, Pedido as p Where c.ccodifgo=p.cliente Group By c.nome Having numeroPedidos > 5 • Nota: – predicados na cláusula having são aplicados depois da formação dos grupos, enquanto que os predicados na cláusula where são aplicados antes da formação dos grupos.
  • 33. Operações com Conjuntos • As operações com conjuntos union, intersect, e except (minus no Oracle9i) operam sobre relações e correspondem aos operadores  • Cada uma das operações anteriores elimina as duplicações automaticamente. • Para reter duplicados deve-se utilizar as respectivas versões multiconjunto union all, intersect all e except all • Suponha que uma tupla ocorre m vezes em R e n vezes em S, então ele ocorre: – m + n vezes em R union all S – min(m,n) vezes em R intersect all S – max(0, m – n) vezes em R except all S
  • 34. Operações com Conjuntos - Union • Listar todos os clientes que realizaram pedidos com mais de 5 itens ou contendo algum produto de preço>R$30,00 (Select c.nome From Cliente as c, Pedido as p, Produto as pr Where c.ccodifgo=p.cliente and p.pedcodigo=i.pedido and i.quantidade>5) UNION (Select c.nome From Cliente as c, Pedido as p, Produto as pr Where c.ccodifgo=p.cliente and p.pedcodigo=i.pedido and i.produto=pr.procodigo and i.preço>30)
  • 35. Operações com Conjuntos - Intersect • Listar todos os clientes que realizaram pedidos com mais de 5 itens e contendo algum produto de preço>R$30,00 (Select c.nome From Cliente as c, Pedido as p, Produto as pr Where c.ccodifgo=p.cliente and p.pedcodigo=i.pedido and i.quantidade>5) INTERSECT (Select c.nome From Cliente as c, Pedido as p, Produto as pr Where c.ccodifgo=p.cliente and p.pedcodigo=i.pedido and i.produto=pr.procodigo and i.preço>30)
  • 36. Operações com Conjuntos - Except • Listar todos os clientes que realizaram pedidos com mais de 5 itens mas não contendo algum produto de preço>R$30,00 (Select c.nome From Cliente as c, Pedido as p, Produto as pr Where c.ccodifgo=p.cliente and p.pedcodigo=i.pedido and i.quantidade>5) EXCEPT (Select c.nome From Cliente as c, Pedido as p, Produto as pr Where c.ccodifgo=p.cliente and p.pedcodigo=i.pedido and i.produto=pr.procodigo and i.preço>30)
  • 37. Exercício de Fixação EMPREGADOS (E) enome CPF salário CPF_Supervisor dnumero DEPARTAMENTOS (D) dnome dnúmero CPF_gerente TRABALHA (T) PROJETOS (P) CPF_Emp pnumero pnome pnúmero dnúmero
  • 38. Exercício de Fixação • Atividades: – 1. Fazer o esquema relacional acima; – 2.Inserir o empregado André que trabalham no projeto chamado CID do departamento de computação; – 3.Inserir o empregado Suzana que trabalha no projeto chamado CID do departamento de computação; – 4. Inserir o empregado Lívia que é gerente dos empregados André e Suzana; – 5. Inserir o departamento de estatística e seus projetos: KDE, SUDO, MQRO, ACLT.
  • 39. Ora, a fé é a certeza daquilo que esperamos e a prova das coisas que não vemos. Hebreus 11:1 Até a próxima aula!