SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
Módulo 14
Linguagem SQL - Operações Relacionais no SQL
O SQL permite realizar operações relacionais com as tabelas. Estas resumem-se a oito operações.
Restrição ou Selecção
Produz uma tabela com todos os registos de uma outra tabela que satisfazem uma dada condição. É o resultado da aplicação de um SELECT.
select *
from computador
where lucro>50;
Projecção
Produz uma tabela com todos os registos de uma outra tabela, mas só com alguns atributos.
select designacao
from computador;
1 Alexandre Alcobia 2011
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
Produto cartesiano
Produz uma tabela contendo todas as combinações entre os registos de duas tabelas.
select *
from computadores as C, fornecedores as F;
O número de registos é o produto do número de registos da tabela computadores com o número de registos da tabela fornecedores.
2 Alexandre Alcobia 2011
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
União
Produz uma tabela que contém todos os registos que estão em cada uma das tabelas especificadas.
select idC as ID,designacao as Nome
from computadores
union
select idf,fornecedor
from fornecedores;
A união pode surgir, também, com a aplicação do operador OR.
select *
from computadores
where preco>750 or preco<600;
3 Alexandre Alcobia 2011
select *
from computadores
where preco>750;
select *
from computadores
where preco<600;
union
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
Interseção
Produz uma tabela que contém os registos comuns às duas tabelas especificadas.
Esta operação surge da aplicação do operador AND.
select *
from computadores
where preco>=600 and preco<=745;
Neste caso não seria devolvido qualquer registo, pois não há qualquer registo comum às duas condições.
Uma outra maneira de construir a intersecção é usando INTERSECT.
select *
from computadores
where preco>=600
intersect
select *
from computadores
where preco<=745;
4 Alexandre Alcobia 2011
select *
from computadores
where preco between 600 and 745;
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
Diferença
Produz uma tabela com todos os registos da primeira tabela especificada que não estão na segunda tabela especificada.
Usa-se o operador NOT. Em alternativa poderá ser usado o operador EXCEPT.
select *
from computadores
where not preco<600;
Junções
Equi-Join
Produz uma tabela cujos registos são a combinação de registos de duas tabelas especificadas. Os registos origem são combinados por um campo
comum que é chave primária numa tabela e chave estrangeira na outra tabela.
select *
from fornecedores F, computadores C
where F.idF=C.idF;
É originada uma equijunção (equi-join), pois ela é devida ao sinal de igual na condição where.
Não há necessidade de apresentar campos repetidos na tabela produzida, pelo que deveria ser:
select F.idF, F.fornecedor, C.idC, C.designacao, C.preco, C.lucro
from fornecedores F, computadores C where F.idF=C.idF;
5 Alexandre Alcobia 2011
select *
from computadores
except
select *
from computadores
where preco<600;
Chave primária Chave estrangeira
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
Deste modo o campo idF só aparece uma vez. A esta junção dá-se o nome de natural (junção natural).
Inner Join
Dá-se o nome de inner join às junções acima apresentadas. Neste caso só os registos que têm correspondência nas duas tabelas é que são apresentados.
No Access podemos construir esta operação usando:
select F.idF, F.fornecedor, C.idC, C.designacao, C.preco, C.lucro
from fornecedores F inner join computadores C
on F.idF=C.idF;
Outer Join
Esta junção estende o conceito do inner join, permitindo que a totalidade dos registos de uma das tabelas especificadas apareça na tabela final apesar
de haver registos sem correspondência com a outra tabela especificada.
select F.idF, F.fornecedor, C.idC, C.designacao, C.preco, C.lucro
from fornecedores F left join computadores C on F.idF=C.idF;
6 Alexandre Alcobia 2011
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
Neste caso, a tabela que apresenta todos os registos é a fornecedores pois está definido pelo left join – é a tabela especificada à esquerda –. Caso fosse
right join, seria a tabela computadores.
Podemos obter um resultado semelhante usando
select F.idF, F.fornecedor, C.idC as IDC, C.designacao as DESIG, C.preco as PR, C.lucro as LC
from fornecedores as F ,computadores as C
where F.idF=C.idF
union
select idF,fornecedor, null as IDC, null as DESIG, null as PR, null as LC
from fornecedores
where idF <> all (select idF from computadores);
Ou, então
7 Alexandre Alcobia 2011
Programação e Sistemas de Informação – Linguagem de Manipulação de Dados
select F.idF, F.fornecedor, C.idC as IDC, C.designacao as DESIG, C.preco as PR, C.lucro as LC
from fornecedores as F ,computadores as C
where F.idF=C.idF
union
select idF,fornecedor, null as IDC, null as DESIG, null as PR, null as LC
from fornecedores
where idF not in (select idF from computadores);
8 Alexandre Alcobia 2011

Mais conteúdo relacionado

Semelhante a SQL - Operações Relacionais

Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcadaRodrigo Almeida
 
Tema 7 a_dicionario_de_dados_arvore_e_ta
Tema 7 a_dicionario_de_dados_arvore_e_taTema 7 a_dicionario_de_dados_arvore_e_ta
Tema 7 a_dicionario_de_dados_arvore_e_taPedro A. Uamusse
 
Aula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxAula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxjudsonBg3
 
Clp allen bralley aula 04
Clp allen bralley aula 04Clp allen bralley aula 04
Clp allen bralley aula 04MAKILL
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphihildebertomelo
 
Introdução ao c++
Introdução ao c++Introdução ao c++
Introdução ao c++Jonas Silva
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)Armando Daniel
 
LDP mod 14 - Acesso a bases de dados
LDP   mod 14 - Acesso a bases de dadosLDP   mod 14 - Acesso a bases de dados
LDP mod 14 - Acesso a bases de dadosRui Inácio
 
Aula de informatica 02
Aula de informatica 02Aula de informatica 02
Aula de informatica 02Nilberte
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig LatinElen Arantza
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+cThiago Freitas
 

Semelhante a SQL - Operações Relacionais (20)

Rs logix 5000
Rs logix 5000Rs logix 5000
Rs logix 5000
 
Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcada
 
Tema 7 a_dicionario_de_dados_arvore_e_ta
Tema 7 a_dicionario_de_dados_arvore_e_taTema 7 a_dicionario_de_dados_arvore_e_ta
Tema 7 a_dicionario_de_dados_arvore_e_ta
 
Aula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxAula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptx
 
Algoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - RegistrosAlgoritmos - Aula 16 - Registros
Algoritmos - Aula 16 - Registros
 
Aula04
Aula04Aula04
Aula04
 
Clp allen bralley aula 04
Clp allen bralley aula 04Clp allen bralley aula 04
Clp allen bralley aula 04
 
Python 04
Python 04Python 04
Python 04
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Introdução ao c++
Introdução ao c++Introdução ao c++
Introdução ao c++
 
Aula3
Aula3Aula3
Aula3
 
Aula 01
Aula 01Aula 01
Aula 01
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
LDP mod 14 - Acesso a bases de dados
LDP   mod 14 - Acesso a bases de dadosLDP   mod 14 - Acesso a bases de dados
LDP mod 14 - Acesso a bases de dados
 
Aula de informatica 02
Aula de informatica 02Aula de informatica 02
Aula de informatica 02
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 
Plataforma .Net
Plataforma .NetPlataforma .Net
Plataforma .Net
 
Java13
Java13Java13
Java13
 
DB2 Express-C 9.5
DB2 Express-C 9.5DB2 Express-C 9.5
DB2 Express-C 9.5
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 

Mais de Mariana Hiyori

Templo de Zeus Olímpico
Templo de Zeus OlímpicoTemplo de Zeus Olímpico
Templo de Zeus OlímpicoMariana Hiyori
 
Base de Dados - Normalização e Desenho de Base de Dados Relacionais
 Base de Dados - Normalização e Desenho de Base de Dados Relacionais Base de Dados - Normalização e Desenho de Base de Dados Relacionais
Base de Dados - Normalização e Desenho de Base de Dados RelacionaisMariana Hiyori
 
Base de Dados - Álgebra Relacional
Base de Dados - Álgebra RelacionalBase de Dados - Álgebra Relacional
Base de Dados - Álgebra RelacionalMariana Hiyori
 
Base de Dados - Conversão E-A para Esquema Relacional
Base de Dados - Conversão E-A para Esquema RelacionalBase de Dados - Conversão E-A para Esquema Relacional
Base de Dados - Conversão E-A para Esquema RelacionalMariana Hiyori
 
Base de Dados - Diagramas E-A (cont.)
Base de Dados - Diagramas E-A (cont.)Base de Dados - Diagramas E-A (cont.)
Base de Dados - Diagramas E-A (cont.)Mariana Hiyori
 
Base de Dados - Introdução
Base de Dados - IntroduçãoBase de Dados - Introdução
Base de Dados - IntroduçãoMariana Hiyori
 
Base de Dados - Apresentação da Unidade Curricular
Base de Dados - Apresentação da Unidade CurricularBase de Dados - Apresentação da Unidade Curricular
Base de Dados - Apresentação da Unidade CurricularMariana Hiyori
 
Arquitectura de Computadores
Arquitectura de ComputadoresArquitectura de Computadores
Arquitectura de ComputadoresMariana Hiyori
 
Redes e Comunicações 2
Redes e Comunicações 2Redes e Comunicações 2
Redes e Comunicações 2Mariana Hiyori
 
Redes e Comunicações 2 - Resumo
Redes e Comunicações 2 - ResumoRedes e Comunicações 2 - Resumo
Redes e Comunicações 2 - ResumoMariana Hiyori
 
R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)Mariana Hiyori
 
R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)
R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)
R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)Mariana Hiyori
 
R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)
R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)
R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)Mariana Hiyori
 
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)Mariana Hiyori
 
R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)Mariana Hiyori
 
R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)Mariana Hiyori
 
R&c 05 14_1 - Protocolo IP (Parte 1)
R&c 05 14_1 - Protocolo IP (Parte 1)R&c 05 14_1 - Protocolo IP (Parte 1)
R&c 05 14_1 - Protocolo IP (Parte 1)Mariana Hiyori
 
R&c 05 14_2 - Protocolo IP (Parte 2)
R&c 05 14_2 - Protocolo IP (Parte 2)R&c 05 14_2 - Protocolo IP (Parte 2)
R&c 05 14_2 - Protocolo IP (Parte 2)Mariana Hiyori
 
R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)Mariana Hiyori
 
Resumo - Memorial do Convento
Resumo - Memorial do ConventoResumo - Memorial do Convento
Resumo - Memorial do ConventoMariana Hiyori
 

Mais de Mariana Hiyori (20)

Templo de Zeus Olímpico
Templo de Zeus OlímpicoTemplo de Zeus Olímpico
Templo de Zeus Olímpico
 
Base de Dados - Normalização e Desenho de Base de Dados Relacionais
 Base de Dados - Normalização e Desenho de Base de Dados Relacionais Base de Dados - Normalização e Desenho de Base de Dados Relacionais
Base de Dados - Normalização e Desenho de Base de Dados Relacionais
 
Base de Dados - Álgebra Relacional
Base de Dados - Álgebra RelacionalBase de Dados - Álgebra Relacional
Base de Dados - Álgebra Relacional
 
Base de Dados - Conversão E-A para Esquema Relacional
Base de Dados - Conversão E-A para Esquema RelacionalBase de Dados - Conversão E-A para Esquema Relacional
Base de Dados - Conversão E-A para Esquema Relacional
 
Base de Dados - Diagramas E-A (cont.)
Base de Dados - Diagramas E-A (cont.)Base de Dados - Diagramas E-A (cont.)
Base de Dados - Diagramas E-A (cont.)
 
Base de Dados - Introdução
Base de Dados - IntroduçãoBase de Dados - Introdução
Base de Dados - Introdução
 
Base de Dados - Apresentação da Unidade Curricular
Base de Dados - Apresentação da Unidade CurricularBase de Dados - Apresentação da Unidade Curricular
Base de Dados - Apresentação da Unidade Curricular
 
Arquitectura de Computadores
Arquitectura de ComputadoresArquitectura de Computadores
Arquitectura de Computadores
 
Redes e Comunicações 2
Redes e Comunicações 2Redes e Comunicações 2
Redes e Comunicações 2
 
Redes e Comunicações 2 - Resumo
Redes e Comunicações 2 - ResumoRedes e Comunicações 2 - Resumo
Redes e Comunicações 2 - Resumo
 
R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 01 14_1 - A Internet e Conceitos Basicos (Parte 1)
 
R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)
R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)
R&c 01 14_2 - A Internet e Conceitos Basicos (Parte 2)
 
R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)
R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)
R&c 01 14_3 - A Internet e Conceitos Basicos (Parte 3)
 
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
R&c 02 14_1 - A Internet e Conceitos Basicos (Parte 1)
 
R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)
 
R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)
 
R&c 05 14_1 - Protocolo IP (Parte 1)
R&c 05 14_1 - Protocolo IP (Parte 1)R&c 05 14_1 - Protocolo IP (Parte 1)
R&c 05 14_1 - Protocolo IP (Parte 1)
 
R&c 05 14_2 - Protocolo IP (Parte 2)
R&c 05 14_2 - Protocolo IP (Parte 2)R&c 05 14_2 - Protocolo IP (Parte 2)
R&c 05 14_2 - Protocolo IP (Parte 2)
 
R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)R&c 05 14_3 - Protocolo IP (Parte 3)
R&c 05 14_3 - Protocolo IP (Parte 3)
 
Resumo - Memorial do Convento
Resumo - Memorial do ConventoResumo - Memorial do Convento
Resumo - Memorial do Convento
 

SQL - Operações Relacionais

  • 1. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados Módulo 14 Linguagem SQL - Operações Relacionais no SQL O SQL permite realizar operações relacionais com as tabelas. Estas resumem-se a oito operações. Restrição ou Selecção Produz uma tabela com todos os registos de uma outra tabela que satisfazem uma dada condição. É o resultado da aplicação de um SELECT. select * from computador where lucro>50; Projecção Produz uma tabela com todos os registos de uma outra tabela, mas só com alguns atributos. select designacao from computador; 1 Alexandre Alcobia 2011
  • 2. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados Produto cartesiano Produz uma tabela contendo todas as combinações entre os registos de duas tabelas. select * from computadores as C, fornecedores as F; O número de registos é o produto do número de registos da tabela computadores com o número de registos da tabela fornecedores. 2 Alexandre Alcobia 2011
  • 3. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados União Produz uma tabela que contém todos os registos que estão em cada uma das tabelas especificadas. select idC as ID,designacao as Nome from computadores union select idf,fornecedor from fornecedores; A união pode surgir, também, com a aplicação do operador OR. select * from computadores where preco>750 or preco<600; 3 Alexandre Alcobia 2011 select * from computadores where preco>750; select * from computadores where preco<600; union
  • 4. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados Interseção Produz uma tabela que contém os registos comuns às duas tabelas especificadas. Esta operação surge da aplicação do operador AND. select * from computadores where preco>=600 and preco<=745; Neste caso não seria devolvido qualquer registo, pois não há qualquer registo comum às duas condições. Uma outra maneira de construir a intersecção é usando INTERSECT. select * from computadores where preco>=600 intersect select * from computadores where preco<=745; 4 Alexandre Alcobia 2011 select * from computadores where preco between 600 and 745;
  • 5. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados Diferença Produz uma tabela com todos os registos da primeira tabela especificada que não estão na segunda tabela especificada. Usa-se o operador NOT. Em alternativa poderá ser usado o operador EXCEPT. select * from computadores where not preco<600; Junções Equi-Join Produz uma tabela cujos registos são a combinação de registos de duas tabelas especificadas. Os registos origem são combinados por um campo comum que é chave primária numa tabela e chave estrangeira na outra tabela. select * from fornecedores F, computadores C where F.idF=C.idF; É originada uma equijunção (equi-join), pois ela é devida ao sinal de igual na condição where. Não há necessidade de apresentar campos repetidos na tabela produzida, pelo que deveria ser: select F.idF, F.fornecedor, C.idC, C.designacao, C.preco, C.lucro from fornecedores F, computadores C where F.idF=C.idF; 5 Alexandre Alcobia 2011 select * from computadores except select * from computadores where preco<600; Chave primária Chave estrangeira
  • 6. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados Deste modo o campo idF só aparece uma vez. A esta junção dá-se o nome de natural (junção natural). Inner Join Dá-se o nome de inner join às junções acima apresentadas. Neste caso só os registos que têm correspondência nas duas tabelas é que são apresentados. No Access podemos construir esta operação usando: select F.idF, F.fornecedor, C.idC, C.designacao, C.preco, C.lucro from fornecedores F inner join computadores C on F.idF=C.idF; Outer Join Esta junção estende o conceito do inner join, permitindo que a totalidade dos registos de uma das tabelas especificadas apareça na tabela final apesar de haver registos sem correspondência com a outra tabela especificada. select F.idF, F.fornecedor, C.idC, C.designacao, C.preco, C.lucro from fornecedores F left join computadores C on F.idF=C.idF; 6 Alexandre Alcobia 2011
  • 7. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados Neste caso, a tabela que apresenta todos os registos é a fornecedores pois está definido pelo left join – é a tabela especificada à esquerda –. Caso fosse right join, seria a tabela computadores. Podemos obter um resultado semelhante usando select F.idF, F.fornecedor, C.idC as IDC, C.designacao as DESIG, C.preco as PR, C.lucro as LC from fornecedores as F ,computadores as C where F.idF=C.idF union select idF,fornecedor, null as IDC, null as DESIG, null as PR, null as LC from fornecedores where idF <> all (select idF from computadores); Ou, então 7 Alexandre Alcobia 2011
  • 8. Programação e Sistemas de Informação – Linguagem de Manipulação de Dados select F.idF, F.fornecedor, C.idC as IDC, C.designacao as DESIG, C.preco as PR, C.lucro as LC from fornecedores as F ,computadores as C where F.idF=C.idF union select idF,fornecedor, null as IDC, null as DESIG, null as PR, null as LC from fornecedores where idF not in (select idF from computadores); 8 Alexandre Alcobia 2011