Banco de Dados
Introdução a BD
Prof. Marcelo Iury de Sousa Oliveira
marcelo@ci.ufpb.br
http://sites.google.com/site/marceloiury
Banco de Dados
Aula 7 – SQL: Consultas Simples
Banco de Dados
Introdução a BD
Consultas Básicas
Exemplo
Banco de Dados de Exemplo
Insert into Ministra values ('16710', 'IF971', '2020.1');
Insert into Ministra values ('16710', 'IF971', '2020.2');
Insert into Ministra values ('16730', 'IF972', '2020.1');
Insert into Ministra values ('16730', 'IF972', '2020.2');
Insert into Ministra values ('16720', 'IF973', '2020.1');
Insert into Ministra values ('16720', 'IF973', '2020.2');
Insert into Ministra values ('16740', 'IF974', '2020.1');
Insert into Ministra values ('16760', 'IF975', '2020.2');
Insert into Ministra values ('16760', 'IF975', '2021.1');
Insert into Disciplina values ('Artes das Trevas', 'IF971', '60h') ;
Insert into Disciplina values ('Trato de Criaturas Mágicas', 'IF972', '60h');
Insert into Disciplina values ('Defesa Contra Artes das Trevas', 'IF973', '75h');
Insert into Disciplina values ('Poções', 'IF974', '75h');
Insert into Disciplina values ('Herbologia', 'IF975', '60h');
Insert into Professor values ('Severo Snape', '16710', 'Adjunto 1', 1000.00, 'D003') ;
Insert into Professor values ('Remo Lupin', '16720', 'Adjunto 2', 2000.00, 'D003');
Insert into Professor values ('Rúbeo Hagrid', '16730', 'Adjunto 1', 1500.00, 'D001');
Insert into Professor values ('Horácio Slughorn', '16740', 'Adjunto 1', 1500.00, 'D003');
Insert into Professor values ('Pomona Sprout', '16750', 'Adjunto 1', 1500.00, 'D002');
Insert into Professor values ('Guilhermina Grubbly-Plank', '16760', 'Adjunto 1', 1500.00, 'D001’);
Insert into Departamento values ('Magia', 'D003');
Insert into Departamento values ('Ervas e Plantas', 'D001');
Insert into Departamento values ('Criaturas Mágicas', 'D001');
Banco de Dados de Exemplo
https://docs.google.com/document/d/1V_8KfV0HjSR8epXMxdJIGHe-oZKC2UPiM4mxQtQPhZ0/edit?usp=sharing
Insert into Disciplina values ('Artes das Trevas', 'IF971', '60h') ;
Insert into Disciplina values ('Trato de Criaturas Mágicas', 'IF972', '60h');
Insert into Disciplina values ('Defesa Contra Artes das Trevas', 'IF973', '75h');
Insert into Disciplina values ('Poções', 'IF974', '75h');
Insert into Disciplina values ('Herbologia', 'IF975', '60h');
Insert into Departamento values ('Magia', 'D003');
Insert into Departamento values ('Ervas e Plantas', 'D001');
Insert into Departamento values ('Criaturas Mágicas', 'D001');
Insert into Professor values ('Severo Snape', '16710', 'Adjunto 1', 1000.00, 'D003') ;
Insert into Professor values ('Remo Lupin', '16720', 'Adjunto 2', 2000.00, 'D003');
Insert into Professor values ('Rúbeo Hagrid', '16730', 'Adjunto 1', 1500.00, 'D001');
Insert into Professor values ('Horácio Slughorn', '16740', 'Adjunto 1', 1500.00, 'D003');
Insert into Professor values ('Pomona Sprout', '16750', 'Adjunto 1', 1500.00, 'D002');
Insert into Professor values ('Guilhermina Grubbly-Plank', '16760', 'Adjunto 1', 1500.00, 'D001');
Insert into Ministra values ('16710', 'IF971', '2020.1');
Insert into Ministra values ('16710', 'IF971', '2020.2');
Insert into Ministra values ('16730', 'IF972', '2020.1');
Insert into Ministra values ('16730', 'IF972', '2020.2');
Insert into Ministra values ('16720', 'IF973', '2020.1');
Insert into Ministra values ('16720', 'IF973', '2020.2');
Insert into Ministra values ('16740', 'IF974', '2020.1');
Insert into Ministra values ('16760', 'IF975', '2020.2');
Insert into Ministra values ('16760', 'IF975', '2021.1');
Banco de Dados de Exemplo
https://docs.google.com/document/d/1V_8KfV0HjSR8epXMxdJIGHe-oZKC2UPiM4mxQtQPhZ0/edit?usp=sharing
Versão corrigida ;)
Consultas em SQL
Select
SELECT <lista de colunas>
FROM <lista de tabelas>
WHERE <condição>
Consultas em SQL
Select - Exemplos
SELECT * FROM Professor
SELECT * FROM Professor WHERE siape = ‘16710’
SELECT * FROM Professor WHERE salario > 1200 and categoria = ‘Adjunto 1’
O que essa consulta retorna?
Seleção de Atributos
SELECT nome, salario FROM Professor
WHERE siape = ‘16710’
Uso de alias (apelidos)
Equivalente, a operação Renomear na Álgebra Relacional
Uso de Alias na Seleção
SELECT nome, salario FROM Professor P
WHERE P.siape = ‘16710’
Resultados duplicados
(‘Adjunto 1’)
(‘Adjunto 2’)
(‘Adjunto 1’)
(‘Adjunto 1’)
(‘Adjunto 2’)
SELECT categoria
FROM Professor
SELECT DISTINCT categoria
FROM Professor
Eliminando Resultados Duplicados
Ordenando valores
Ordenando Valores
SELECT * FROM Professor ORDER BY nome DESC
SELECT * FROM Professor ORDER BY salario ASC
Junção de Tabelas
Junção de Tabelas
SELECT nome, nome_depto FROM Professor, Departamento WHERE cod_depto = numero_depto
Junção de Tabelas
SELECT P.nome, D.nome, M.periodo
FROM Professor P, Disciplina D, Ministra M
WHERE P.siape = M.siape AND D.cod_disciplina = M.cod_disciplina
Renomeação e Junção de Tabelas
Erro ao usar colunas
com mesmo nome
Junção de Tabelas
Junção de Tabelas e Seleção de Tuplas
SELECT *
FROM Professor P, Disciplina D, Ministra M
WHERE P.siape = M.siape AND D.cod_disciplina = M.cod_disciplina AND salario = 1000
Comparação de Cadeias de Caracteres
Em alguns SGBDS, o operador LIKE pode vir como função. Exemplo
SELECT * FROM Disciplina
WHERE nome LIKE ‘IF_ _ _’
SELECT * FROM Disciplina
WHERE nome LIKE %magia%
“ %“ : Substitui um número qualquer de caracteres
“_“: Substitui um único caracter
Comparação de Caracteres
SELECT * FROM Disciplina WHERE nome LIKE(‘IF%')
Operador IN: filtro a partir de conjunto de valores
SELECT * FROM Professor
WHERE salario BETWEEN 1200 AND 3000
Comparação de Valores e Conjuntos
SELECT * FROM Professor
WHERE categoria IN (‘Adjunto 1’, ‘Assistente 1’)
SELECT * FROM Professor
WHERE salario NOT BETWEEN 1200 AND 3000
Operador NOT
SELECT * FROM Professor
WHERE categoria NOT IN
(‘Adjunto 1’, ‘Assistente 1’)
SELECT nome,
(1.1*salario) as salario_aumentado
FROM Professor WHERE categoria = ‘Adjunto 1’
SELECT * FROM Professor
WHERE salario+(salario*0.3)
BETWEEN 1200 AND 3000
Operações Matemáticas
SELECT * FROM Professor
WHERE categoria IS NULL
SELECT * FROM Professor
WHERE salario+(salario*0.3)
BETWEEN 1200 AND 3000
Outros Operadores
Exercícios