Академический Документы
Профессиональный Документы
Культура Документы
Eliminao de repeties
Para eliminar as repeties existentes nas linhas resultantes de um SELECT podemos utilizar a clusula DISTINCT, imediatamente depois da palavra inicial do comando SELECT. Ex.: Select localidade from postal; Select distinct localidade from postal;
O comando HAVING.
O comando having tem finalidade semelhante ao comando where, que ser o elemento de declarao da juno entre resultados agrupados, portanto uma condio aplicada sobre grupo.
O comando HAVING
Exemplo : Vamos selecionar apenas os dados que apresentem salrios superiores a 2000 agrupados por cidade.
select cidade, sum(salario) soma from funcionarios group by (cidade) having sum(salario) > 2000
Juntando tabelas.
O join entre tabelas permite extrair, atravs de um nico
select, informaes contidas em vrias tabelas. O modelo relacional estabelece claramente as regras para a diviso da informao entre vrias tabelas, de forma a evitar a duplicao de informao. A ligao entre as tabelas realizada atravs da ligao entre as chaves estrangeiras e as respectivas chaves primrias de onde so originrias.
Produto cartesiano
Para juntar os dados das duas tabelas temos: Select * from funcionrios, cargos; O produto cartesiano entre as tabelas funcionrios e cargos associa a cada
O nmero total de registros da tabela cargos so 15 e o nmero de registros da tabela funcionrios so 30. Logo cada registro de cargos ligado a tabela funcionrios resultar em 450 registros.
CROSS JOIN.
O produto cartesiano entre tabelas tambm conhecido como CROSS JOIN.
Todas as colunas pertencentes a ambas as tabelas, sero apresentadas no resultado do comando. Como a ligao entre tabelas realizada atravs da igualdade entre duas colunas, este tipo particular de join chama-se Equi-join.
Equi-Join
Quando todas as colunas das tabelas so apresentadas e a ligao entre as tabelas feita atravs de uma igualdade, dando origem assim a duas colunas de contedo exatamente iguais.
INNER Join
O inner join corresponde a uma outra designao para o tipo de Join habitual em que se junta duas ou mais tabelas, ligando-se atravs da chave primria de uma e da chave estrangeira da outra. Em um inner join, apenas so representados os registros que exista ligao entre as tabelas.
Dado duas tabelas comisso e pessoa apresente o cdigo do cliente, o se u nome e o valor da comisso.
Select p.codcli, p.nome, c.valor From pessoa p, comisso c Where c.codigocomissao=p.codigocomissao;
Select p.codcli, p.nome, c.valor From pessoa p INNER JOIN comisso c ON c.codigocomissao=p.codigocomissao;
OUTER JOIN
Este tipo particular de Juno permite
OUTER JOIN
O OUTER JOIN pode ser realizado esquerda ou direita, isto , quando se faz a ligao entre duas tabelas ser mostrado respectivamente, todo o comando da tabela da esquerda e a respectiva ligao tabela da direita, ou ser mostrado todo o contedo da tabela direita e a respectiva ligao tabela da esquerda.
Left Join
Quando o Outer Join realizado a esquerda, so considerados todos os registros da tabela da esquerda e apenas os registros correspondentes da tabela a direita.
Right join
Quando o Outer Join realizado a direita, so considerados todos os
Left Join
Union
UNION
Em uma UNION o nmero de campos a serem
selecionados
em
cada um
dos
comandos
SELECT tem de ser igual. O nome dos campos no relevante, mas o tipo de dados que
Self Join
O Self Join uma variante do INNER JOIN, no qual se comparam duas colunas da mesma tabela. Quando se coloca duas ou mais vezes a mesma tabela em um select, deve-se obrigatoriamente utilizar um alis para evitar a inevitvel ambigidade que vai existir em todas as referncias aos campos dessa tabela. Este tipo de join utilizado quando uma tabela est relacionada com ela prpria.
Self Join
Ex: Se cada empregado tiver um chefe associado, existe uma relao recursiva, pois id do seu chefe ir aparecer na
tabela
associado
a cada
registro.
Mas no podemos
SELECT p1.codfuncionario, p1.nomefuncionario AS gerente, p2.codfuncionario, p2.nomefuncionario FROM funcionario p1, funcionario p2 WHERE p1.codfuncionario = p2.codgerente;
INTERSECT
O operador INTERSECT permite juntar o resultado de
Ex2.: Selecione todas as linhas da tabela postal cujo cdigo seja maior ou igual a 5; SELECT codpostal, localidade FROM postal WHERE codpostal >=5
Exerccio: Selecione todas as linhas da tabela postal que resultem da interseo entre as duas consultas.
SELECT codpostal, localidade FROM postal WHERE codpostal <=5 INTERSECT SELECT codpostal, localidade FROM postal WHERE codpostal >=5
MINUS
O operador MINUS devolve os registros que resultam do primeiro SELECT e que no aparecem no segundo. Ex.: Selecionar todas as linhas da tabela POSTAL cujo cdigo seja menor ou igual a 8, ignorando todos os elementos cujo cdigo esteja entre 2 e 6. Select * from postal where codpostal <=8 Minus Select * from postal where codpostal between 2 and 6;