Professional Documents
Culture Documents
Comparao de substrings
O operador LIKE permite a comparao com partes de uma string Recuperar os empregados que moram no endereo iniciado pelo nmero 9.
SELECT FROM WHERE
Operador LIKE
Cujo quinto caracter seja F SELECT * FROM Empregado WHERE ender LIKE '____F%
Consultas aninhadas
Algumas consultas requerem a existncia de valores do BD que devem ser recuperados para depois serem usados na condio de comparao. Estas consultas so escritas atravs de consultas aninhadas, ou seja, uma consulta completa especificada na clusula WHERE de uma consulta mais externa.
Subconsultas
O operador IN
Compara um valor v a um conjunto de valores V e calcula verdadeiro se v um dos elementos de V. Caso contrrio, calcula falso. Deve comparar elementos compatveis
Depen)
SELECT nominic, nomefim FROM Empregado WHERE numat not IN ( SELECT numemp FROM Dependente);
Conjuntos explcitos
SELECT DISTINCT numemp FROM TrabalhaEm WHERE nproj IN (1,2,3);
EXISTS
Usada para saber se o resultado da consulta aninhada correlata vazia Se EXISTS retornar verdadeiro - no vazia Se EXISTS retornar falso - vazia
Subconsultas - EXISTS
EXISTS R se R no vazio Relacione os nomes dos clientes que esto em atraso na devoluo das fitas que locaram. SELECT nomecli FROM Cliente WHERE EXISTS ( SELECT * FROM Locacao WHERE idcli=Cliente.idcli (correlao entre as tabelas) AND dtdevolprev < SYS_DATE() AND dtdevolreal IS NULL );
Depen)
SELECT nominic, nomefim FROM Empregado e WHERE EXISTS ( SELECT * FROM Dependente d WHERE e.numat=d.numemp);
Depen)
SELECT nominic, nomefim FROM Empregado e WHERE NOT EXISTS ( SELECT * FROM Dependente d WHERE e.numat= d.numemp);
Subconsultas ALL
s > ALL R
Encontrar nomes dos clientes com data de admisso mxima SELECT nomecli
FROM WHERE ); Cliente dtadm >= ALL ( SELECT dtadm (correspondncia FROM Cliente
nos elementos)
Nome dos empregados cujo salrio maior do que o salrio de todos os empregados do departamento 5
SELECT nominic, nomint, nomefim FROM Empregado WHERE salario > ALL ( SELECT salario FROM Empregado WHERE ndepto = 5 );
Subconsultas ANY
s > ANY R
Encontrar nomes dos empregados cuja data de nascimento posterior a algum empregado do departamento 5
SELECT nominic, nomint, nomefim FROM Empregado WHERE dtnasc > ANY ( SELECT dtnasc FROM Empregado WHERE ndepto = 5 ); s=ANY R equivale a s IN R
Funes Agregadas
SQL possui as seguintes funes agregadas: SUM, COUNT, MIN, MAX e AVG COUNT Conta o nmero de tuplas resultante da consulta. SUM, MIN, MAX e AVG aplicadas sobre um conjunto de valores
Considerando todos os empregados, selecionar a soma de todos os salrios, o maior e menor salrios e a mdia dos salrios
SELECT SUM(salario), MAX(salario), MIN(salario), AVG(salario) FROM Empregado;
FROM
Agrupamento
Condensa em uma nica linha todas as linhas selecionadas que compartilham os mesmos valores para as colunas agrupadas.
Consulta: Selecionar a mdia salarial e o nmero de empregados para cada departamento
SELECT ndepto, COUNT(*), AVG(salario) FROM Empregado GROUP BY ndepto;
Para cada projeto o seu nmero, o seu nome e a quantidade de empregados que trabalham no projeto
SELECT numproj, nomeproj, COUNT(*) FROM TrabalhaEm, Projeto WHERE nproj = numproj GROUP BY numproj, nomeproj;
Para cada projeto com mais de 2 empregados, buscar o nmero do projeto, o nome do projeto e o nmero de empregados que trabalham nele
SELECT numproj, nomeproj, COUNT(*) FROM Projeto, TrabalhaEm WHERE numproj = nproj GROUP BY numproj, nomeproj HAVING COUNT(*) > 2;
WHERE filtra individualmente as linhas antes da aplicao do GROUP BY . HAVING filtra os grupos de linhas criados pelo GROUP BY.
SELECT nominic, nomint, nomefim FROM Empregado ORDER BY nominic, nomint, nomefim Ou ORDER BY 1, 2, 3
Nmero do projeto em ordem decrescente e o nmero de cada empregado que trabalha no projeto em ordem crescente
SELECT nproj, numemp FROM TrabalhaEm ORDER BY nproj DESC, numemp ASC
SELECT <lista de campos> FROM <lista de tabelas> [WHERE <condio>] [GROUP BY <campos que definem o grupo> [HAVING <condio sobre a funo de grupo>] ] [ORDER BY <campos do resultado da consulta>]