Resumo e Exercícios
Resumo
Neste capítulo, cobrimos os fundamentos da linguagem SQL, da definição de dados à consulta e modificação:
| Comando / Recurso | Finalidade |
|---|---|
CREATE TABLE |
Cria uma tabela com colunas, tipos e restrições |
ALTER TABLE |
Modifica a estrutura de uma tabela existente |
DROP TABLE |
Remove uma tabela permanentemente |
SELECT ... FROM ... WHERE |
Consulta básica: projeção, filtragem e produto cartesiano |
DISTINCT |
Elimina linhas duplicadas no resultado |
ORDER BY |
Ordena o resultado (ASC ou DESC) |
BETWEEN |
Filtra valores dentro de um intervalo fechado |
LIKE |
Filtra strings por padrões (% e _) |
UNION |
Une resultados de duas consultas (elimina duplicatas) |
UNION ALL |
Une resultados mantendo duplicatas |
INTERSECT |
Retorna apenas linhas presentes nas duas consultas |
EXCEPT |
Retorna linhas da primeira consulta ausentes na segunda |
NULL / IS NULL |
Valor ausente; comparações com IS NULL ou IS NOT NULL |
AVG, SUM, MIN, MAX, COUNT |
Funções de agregação sobre conjuntos de linhas |
GROUP BY |
Agrupa linhas por valores iguais de uma ou mais colunas |
HAVING |
Filtra grupos após a agregação |
IN / NOT IN |
Verifica pertencimento a um conjunto (subconsulta ou lista) |
SOME / ALL |
Compara com ao menos um ou com todos os elementos de um conjunto |
EXISTS / NOT EXISTS |
Verifica existência de linhas em uma subconsulta correlacionada |
Subconsulta no FROM |
Subconsulta usada como tabela derivada |
WITH (CTE) |
Define expressões de tabela nomeadas e reutilizáveis |
INSERT INTO |
Insere novas linhas em uma tabela |
DELETE FROM |
Remove linhas de uma tabela |
UPDATE ... SET |
Atualiza valores de colunas em linhas existentes |
CASE |
Expressão condicional usada em SELECT e UPDATE |
Exercícios
Os exercícios abaixo usam as tabelas escola, curso, professor, disciplina, aluno e matricula_disciplina da UnDF com os dados apresentados ao longo deste capítulo.
Exercício 1. Liste os nomes de todos os alunos do curso de Pedagogia (PED) em ordem alfabética.
Use WHERE id_curso = 211 e ORDER BY nome ASC.
Exercício 2. Qual é a carga horária total e a carga horária média das disciplinas oferecidas pelo curso de Engenharia de Software (ENS)?
Use SUM(carga_horaria) e AVG(carga_horaria) com WHERE id_curso = 311.
Exercício 3. Quais cursos têm carga horária média por disciplina acima da média geral de todas as disciplinas? Exiba a sigla do curso e a média, em ordem decrescente.
A média geral pode ser calculada com uma subconsulta: HAVING AVG(carga_horaria) > (SELECT AVG(carga_horaria) FROM disciplina).
Exercício 4. Liste os professores que pertencem à mesma escola que pelo menos uma disciplina com carga horária superior a 150 horas. Exiba o nome do professor e a escola.
Use IN com uma subconsulta que seleciona id_escola das disciplinas via a relação curso para encontrar as escolas relevantes. Ou junte professor com curso e disciplina usando JOIN.
Exercício 5. Para cada escola, retorne o nome do professor com maior carga horária semanal (ch_semanal). Exiba o nome da escola, o nome do professor e a carga horária semanal.
Use uma CTE com WITH para calcular MAX(ch_semanal) por escola, depois junte com professor para obter o nome.