SQL: consultas básicas
Luiz Henrique Zambom Santana
15/09/2016
Agenda
● SELECT-FROM-WHERE básico sobre uma única tabela
● Explorando as cláusulas
○ SELECT
■ Projeção
■ Distinct
■ COUNT, MIN, MAX, AVG, SUM
○ WHERE
■ Intervalos
■ LIKE
■ IS NULL
■ IN
Relembrando...
SQL versus Álgebra relacional
SQL Álgebra relacional
SELECT projeção
FROM produto cartesiano
WHERE seleção
SELECT-FROM-WHERE
SELECT <projeção e funções>
FROM <lista de tabelas>
[ WHERE predicado ]
[ GROUP BY <atributos de agrupamento> ]
[ HAVING <condição para agrupamento> ]
[ ORDER BY <lista de atributos> ] ;
Comandos
básicos
SELECT (Álgebra relacional)
πlista_atributos
(relação)
● atributos separados por vírgula ● relação
● resultado de alguma operação da
álgebra relacional
πnome, idade
(Medicos)
SELECT
● O comando equivalente a operação de projeção da álgebra relacional
● Operador * equivale a retornar todos atributos da relação
SELECT *
FROM Medicos
SELECT (Projeções)
● Produz um subconjunto vertical com as colunas solicitadas
● Define uma lista de atributos (colunas) das tabelas consultadas
● Exemplo:
SELECT nome,idade
FROM Medicos
SELECT (Projeções)
● Podemos recuperar valores únicos usando o operador DISTINCT
SELECT distinct especialidade FROM Medicos
Exercícios
1. Recuperar os nomes de todos pacientes
2. Recuperar os nomes de todos médicos
3. Recuperar os nomes de todos funcionários
4. Recuperar todos atributos de todos pacientes
5. Recuperar todos atributos de todas consultas
6. Recuperar sem repetições todas cidades dos pacientes
Funções (COUNT, MIN, MAX, AVG)
● O comando SELECT também pode receber funções sobre a sua lista de
atributos
SELECT count(*) FROM Medicos
SELECT MIN(idade) FROM Medicos
SELECT MAX(idade) FROM Medicos
SELECT AVG(idade) FROM Medicos
SELECT SUM(capacidade) FROM Ambulatorios
Exercícios
7. Recuperar a maior idade entre os pacientes
8. Recuperar a menor idade entre os pacientes
9. Recuperar a média de idade entre os pacientes
10. Contar o número de consultas
11. Recuperar a maior idade, a menor idade e a média de idade entre os
funcionários
12. Recuperar o valor total da folha de pagamento dos funcionários
WHERE (Álgebra relacional)
σcondição_seleção
(relação)
● pode envolver operadores de
comparação (=, >, ≥, <, ≤, ≠)
● pode combinar condições
usando-se ∧, ∨, ㄱ
● relação
● resultado de alguma operação da
álgebra relacional
σidade> 40
(Medicos)
WHERE
● O comando equivalente a operação de seleção da álgebra relacional
SELECT *
FROM Medicos
WHERE idade > 40
WHERE
● Deve conter pelo menos um operador de comparação (=, >, >=, <, <=, <>)
● Os operadores de comparação podem ser combinados com lógica booleana
(AND, OR e NOT)
SELECT especialidade
FROM Medicos
WHERE
(idade > 40 AND
idade <= 52) OR
cidade = ‘Blumenau’ AND
nome <> ‘Marcia’
SELECT e WHERE (Álgebra relacional)
πespecialidade
(σ(idade> 40 ∧ idade ≤ 52) ∨ cidade = ‘Blumenau’ ∧ nome ≠ ‘Marcia’
(Medicos))
WHERE
● Podemos usar o operador BETWEEN para definir um intervalo de valores
SELECT data
FROM Consultas
WHERE
data BETWEEN ‘2010/10/11’
AND ‘2010/10/13’
Exercícios
13. Recuperar os médicos com idade maior que 50
14. Recuperar os pacientes com idade maior que 30 e menor que 50
15. Recuperar os médicos de São José
16. Recuperar os ambulatórios com capacidade maior que 30
17. Recuperar os pacientes com gripe
18. Recuperar os traumatologistas de Blumenau
19. Recuperar os pacientes de Florianópolis com gripe e idade maior que 30
20. Recuperar as datas das consultas entre entre as 15 e as 18 horas
WHERE
● Podemos usar o operador LIKE para definir um padrão de busca
SELECT nome
FROM Medicos
WHERE especialidade
LIKE ‘%dia%’
WHERE
● Podemos verificar se um valor é NULO
SELECT nome
FROM Medicos
WHERE nroa
IS NOT NULL
WHERE
● Podemos também verificar uma enumeração de valores com o operador IN
SELECT nome
FROM Medicos
WHERE especialidade
IN (‘ortopedia’,
‘pediatria’);
Exercícios
21. Recuperar os médicos cujo nome comece com ‘Ma’
22. Recuperar os funcionários cujo nome comece com ‘Ca’
23. Recuperar pacientes cujo CPF é nulo
24. Recuperar pacientes cuja cidade seja Joinville ou Blumenau

Consultas básicas em SQL

  • 1.
    SQL: consultas básicas LuizHenrique Zambom Santana 15/09/2016
  • 2.
    Agenda ● SELECT-FROM-WHERE básicosobre uma única tabela ● Explorando as cláusulas ○ SELECT ■ Projeção ■ Distinct ■ COUNT, MIN, MAX, AVG, SUM ○ WHERE ■ Intervalos ■ LIKE ■ IS NULL ■ IN
  • 3.
  • 4.
    SQL versus Álgebrarelacional SQL Álgebra relacional SELECT projeção FROM produto cartesiano WHERE seleção
  • 5.
    SELECT-FROM-WHERE SELECT <projeção efunções> FROM <lista de tabelas> [ WHERE predicado ] [ GROUP BY <atributos de agrupamento> ] [ HAVING <condição para agrupamento> ] [ ORDER BY <lista de atributos> ] ; Comandos básicos
  • 6.
    SELECT (Álgebra relacional) πlista_atributos (relação) ●atributos separados por vírgula ● relação ● resultado de alguma operação da álgebra relacional πnome, idade (Medicos)
  • 7.
    SELECT ● O comandoequivalente a operação de projeção da álgebra relacional ● Operador * equivale a retornar todos atributos da relação SELECT * FROM Medicos
  • 8.
    SELECT (Projeções) ● Produzum subconjunto vertical com as colunas solicitadas ● Define uma lista de atributos (colunas) das tabelas consultadas ● Exemplo: SELECT nome,idade FROM Medicos
  • 9.
    SELECT (Projeções) ● Podemosrecuperar valores únicos usando o operador DISTINCT SELECT distinct especialidade FROM Medicos
  • 10.
    Exercícios 1. Recuperar osnomes de todos pacientes 2. Recuperar os nomes de todos médicos 3. Recuperar os nomes de todos funcionários 4. Recuperar todos atributos de todos pacientes 5. Recuperar todos atributos de todas consultas 6. Recuperar sem repetições todas cidades dos pacientes
  • 11.
    Funções (COUNT, MIN,MAX, AVG) ● O comando SELECT também pode receber funções sobre a sua lista de atributos SELECT count(*) FROM Medicos SELECT MIN(idade) FROM Medicos SELECT MAX(idade) FROM Medicos SELECT AVG(idade) FROM Medicos SELECT SUM(capacidade) FROM Ambulatorios
  • 12.
    Exercícios 7. Recuperar amaior idade entre os pacientes 8. Recuperar a menor idade entre os pacientes 9. Recuperar a média de idade entre os pacientes 10. Contar o número de consultas 11. Recuperar a maior idade, a menor idade e a média de idade entre os funcionários 12. Recuperar o valor total da folha de pagamento dos funcionários
  • 13.
    WHERE (Álgebra relacional) σcondição_seleção (relação) ●pode envolver operadores de comparação (=, >, ≥, <, ≤, ≠) ● pode combinar condições usando-se ∧, ∨, ㄱ ● relação ● resultado de alguma operação da álgebra relacional σidade> 40 (Medicos)
  • 14.
    WHERE ● O comandoequivalente a operação de seleção da álgebra relacional SELECT * FROM Medicos WHERE idade > 40
  • 15.
    WHERE ● Deve conterpelo menos um operador de comparação (=, >, >=, <, <=, <>) ● Os operadores de comparação podem ser combinados com lógica booleana (AND, OR e NOT) SELECT especialidade FROM Medicos WHERE (idade > 40 AND idade <= 52) OR cidade = ‘Blumenau’ AND nome <> ‘Marcia’
  • 16.
    SELECT e WHERE(Álgebra relacional) πespecialidade (σ(idade> 40 ∧ idade ≤ 52) ∨ cidade = ‘Blumenau’ ∧ nome ≠ ‘Marcia’ (Medicos))
  • 17.
    WHERE ● Podemos usaro operador BETWEEN para definir um intervalo de valores SELECT data FROM Consultas WHERE data BETWEEN ‘2010/10/11’ AND ‘2010/10/13’
  • 18.
    Exercícios 13. Recuperar osmédicos com idade maior que 50 14. Recuperar os pacientes com idade maior que 30 e menor que 50 15. Recuperar os médicos de São José 16. Recuperar os ambulatórios com capacidade maior que 30 17. Recuperar os pacientes com gripe 18. Recuperar os traumatologistas de Blumenau 19. Recuperar os pacientes de Florianópolis com gripe e idade maior que 30 20. Recuperar as datas das consultas entre entre as 15 e as 18 horas
  • 19.
    WHERE ● Podemos usaro operador LIKE para definir um padrão de busca SELECT nome FROM Medicos WHERE especialidade LIKE ‘%dia%’
  • 20.
    WHERE ● Podemos verificarse um valor é NULO SELECT nome FROM Medicos WHERE nroa IS NOT NULL
  • 21.
    WHERE ● Podemos tambémverificar uma enumeração de valores com o operador IN SELECT nome FROM Medicos WHERE especialidade IN (‘ortopedia’, ‘pediatria’);
  • 22.
    Exercícios 21. Recuperar osmédicos cujo nome comece com ‘Ma’ 22. Recuperar os funcionários cujo nome comece com ‘Ca’ 23. Recuperar pacientes cujo CPF é nulo 24. Recuperar pacientes cuja cidade seja Joinville ou Blumenau