3. Datas
Para se trabalhar com datas usa-se o # para delimitar
as datas.
SELECT *
FROM Registo
WHERE data > #12/13/2013#;
4. BETWEEN
O operador between deve ser utilizado quando se
esta a fazer uma pesquisa entre dois valores.
SELECT * FROM Pessoa
WHERE idade >= 10 and idade =< 20
SELECT * FROM Pessoa
WHERE idade between 10 and 20
5. Funções de Agregação
Também designadas por funções estatísticas, têm por
objectivo obter informação sobre conjuntos de linhas
especificados na cláusula WHERE ou sobre grupos
de linhas indicados na cláusula GROUP BY.
Função
Descrição
COUNT
Devolve o número de linhas
MAX
Devolve o maior valor da coluna
MIN
Devolve o menor valor da coluna
SUM
Devolve a soma de todos os valores da coluna
AVG
Devolve a média de todos os valores da coluna
6. COUNT
A função de agregação COUNT devolve o número
de linhas que resultam num SELECT. Pode ser
utilizada de três formas distintas:
Forma
Descrição
COUNT(*)
Devolve o número de linhas que resulta de um SELECT
COUNT(coluna)
Devolve o número de ocorrências da coluna diferentes de NULL
COUNT(DISTINCT COLUNA)
Devolve o número de ocorrências (sem repetições) na coluna
7. COUNT-Exemplos
Quantas pessoas existem na tabela?
SELECT COUNT(*)
FROM Pessoa
Quantos pessoas com idade = 18 existem?
SELECT COUNT(idade)
FROM Pessoa
WHERE idade = 18
8. MIN-MAX
Permitem obter o menor e o maior valor de uma determinada
coluna.
Problema: Qual é o valor do maior salário pago nesta empresa?
SELECT MAX(Salário) as Maior_Salário
FROM Pessoa
Problema: Qual a idade do empregado mais novo?
SELECT MIN(Idade) as Menor_Idade
FROM Pessoa
Nota: As funções MIN e MAX podem ser aplicadas a colunas que
não contenham valores numéricos. No caso de serem aplicadas a
campos do tipo String, são devolvidos os menores e maiores
valores alfabeticamente.
9. SUM-AVG
A função SUM devolve a soma de uma determinada
coluna.
A função AVG devolve a média
Problema: Selecionar o salário médio das pessoas com
mais de 30 anos.
SELECT AVG(salário)
FROM Pessoa WHERE idade > 30
Nota: As funções SUM e AVG apenas podem ser
aplicadas a campos numéricos.
10. Agrupando Informação
Para agrupar informação utilizamos as Clausulas
GROUP BY e HAVING
SELECT campo1, campo2,…, campon
FROM tabela1, …, tabela n
[WHERE condição]
[GROUP BY …]
[HAVING …]
[ORDER BY …]
11. GROUP BY
Está intimamente ligada às funções de agregação,
pois é do nosso interesse agrupar informação,
obtendo em seguida valores estatísticos sobre os
grupos formados.
A cláusula GROUP BY divide o resultado de um
SELECT em grupos de resultados que irão ser
tratados com as funções de agregação
12. WHERE VS HAVING
Por vezes surge a dúvida sobre quando utilizar a cláusula
WHERE ou a cláusula HAVING para restringir o
conjunto de registos a apresentar.
Utiliza-se a cláusula WHERE sempre que se pretenda
restringir os registos a considerar na seleção.
A cláusula HAVING serve para restringir os grupos que
foram formados depois de aplicada a restrição na cláusula
WHERE.
Se se utilizar a cláusula WHERE num SELECT contendo
GROUP BY, o conjunto dos registos agrupados é apenas
aquele que resulta da restrição imposta pela cláusula
WHERE.
13. HAVING
Serve para fazer restrições ao nível dos grupos que
são processados.
Se pretendermos mostrar os grupos que apresentam
uma característica em particular, não utilizamos a
cláusula WHERE, pois esta destina-se à restrição de
linhas. Utiliza-se a cláusula HAVING, que atua
unicamente sobre o resultado dos grupos.
14. SubQueries
É o conceito de termos queries dentro de queries
Ora, sendo o resultado de qualquer comando
SELECT uma tabela, podemos então utilizar os
resultados devolvidos nessa tabela e incorporá-los
noutro comando SELECT que deles necessite.
15. SubQuery - Exemplo
Problema: Qual o nome da pessoa com menor
salário?
Resolução: Temos aqui dois problemas para
resolver:
P1: Qual o valor do menor salário?
P2: Qual o nome da pessoa a quem esse salário
pertence?
16. SubQuery - Exemplo
SELECT MIN(salário)AS menorSalário
FROM Pessoa
Supondo que devolve 1000
SELECT nome
FROM pessoa
WHERE salário = 86000
No entanto podemos simplificar
a solução apresentada.
SELECT nome
FROM pessoa
WHERE salário = (SELECT MIN(salário)
FROM Pessoa)
17. Operador Exists
SELECT …
FROM …
WHERE [NOT]EXISTS(SubQuery)
O operador EXISTS é um operador unário que
verifica se, da execução de uma subquery, resultou
alguma linha
18. Operador ALL
SELECT nome, idade
FROM pessoa
WHERE códigoLocal <> ALL(SELECT código FROM
localidade WHERE ilha = ”Santiago”)
Selecionar o nome e idade de todas as pessoas que
não vive na ilha de Santiago.
19. Operador ANY
SELECT Nome, Idade
FROM Pessoa WHERE códigoLocal = ANY (SELECT
código FROM postal WHERE ilha <> ”Santiago”)
Seleccionar o nome e idade de todas as pessoas que
não vive na ilha de Santiago
20. Operador IN
O operador IN serve para se especificar multiplos
valores na clausula WHERE
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
Exemplo:
SELECT * FROM Customers
WHERE City IN ('Paris','London');
21. Operador Like
O operador like é utilizado para procurar um padrão
especifico numa coluna utilizando WILDCARDS
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
SELECT * FROM Customers
WHERE City LIKE 's%';