Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

SQL - Operações Relacionais

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Hier ansehen

1 von 8 Anzeige
Anzeige

Weitere Verwandte Inhalte

Weitere von Mariana Hiyori (20)

Aktuellste (20)

Anzeige

SQL - Operações Relacionais

  1. 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. 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. 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. 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. 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. 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. 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. 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

×