Buscar

CSI440 Aula 14 - SQL

Prévia do material em texto

CSI440 – Banco de 
Dados I
Bruno Rabello Monteiro
Aula 14
UFOP  ICEA  DECSI
Conteúdo
• Introdução
• Consultas 
• Atributos Ambíguos
• Cláusula e 
• Cláusula 
• Operador 
• Operações da Teoria de Conjuntos
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 3
UFOP  ICEA  DECSI
Introdução
• (Structured Query Language)
• Padrão para bancos de dados relacionais
• 1° versão: 1986 ( )
• Versão mais recente 
• Suportada pelos principais SGBDs comerciais
• Linguagem declarativa com base na álgebra 
relacional
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 4
UFOP  ICEA  DECSI
Introdução
• compreende
• Definição de dados –
• Manipulação/consulta aos dados –
• Geração de visões –
• Regras para uso com linguagens de 
programação ( , ou )
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 5
UFOP  ICEA  DECSI
: Consultas
• Forma básica do comando 
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 6
<lista atributos>
<lista tabelas>
<condições>;
UFOP  ICEA  DECSI
: Consultas
• é ortogonal
• Resultado de uma consulta é uma tabela
• Consultas podem apresentar linhas duplicadas
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 7
UFOP  ICEA  DECSI
Banco de Dados EMPRESA
(ELMASRI & NAVATHE, 2011)
UFOP  ICEA  DECSI
: Consultas
• : Recuperar a data de
nascimento e o endereço dos funcionários
chamados João B. Silva
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 9
UFOP  ICEA  DECSI
: Consultas
• : Recuperar a data de
nascimento e o endereço dos funcionários
chamados João B. Silva
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 10
Datanasc, Endereco
FUNCIONARIO
Pnome = ‘João’ Minicial = ‘B’
Unome = ‘Silva’;
UFOP  ICEA  DECSI
: Consultas
• : Recuperar nome e endereço
dos funcionários que trabalham no
departamento ‘Pesquisa’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 11
UFOP  ICEA  DECSI
: Consultas
• : Recuperar nome e endereço
dos funcionários que trabalham no
departamento ‘Pesquisa’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 12
Pnome, Minicial, Unome, Endereco
FUNCIONARIO, DEPARTAMENTO
Dnome = ‘Pesquisa’ 
Dnr = Dnumero;
UFOP  ICEA  DECSI
: Consultas
• : Liste o número do projeto, o
número do departamento que o controla, o
sobrenome e endereço do gerente desse
departamento. Apenas para projetos
localizados em ‘Mauá’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 13
UFOP  ICEA  DECSI
: Consultas
• : Liste o número do projeto, o
número do departamento que o controla, o
sobrenome e endereço do gerente desse
departamento. Apenas para projetos
localizados em ‘Mauá’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 14
Projnumero, Dnr, Unome, Endereco
PROJETO, DEPARTAMENTO, FUNCIONARIO
Projlocal = ‘Mauá’ Dnum = Dnumero
Cpf_gerente = Cpf;
UFOP  ICEA  DECSI
: Consultas
• : Recuperar o número e nome
dos departamentos localizados em ‘São
Paulo’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 15
UFOP  ICEA  DECSI
: Consultas
• : Recuperar o número e nome
dos departamentos localizados em ‘São
Paulo’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 16
Dnumero, Dnome
DEPARTAMENTO, LOCALIZACAO_DEP
Dnumero = Dnumero
Dlocal = ‘São Paulo’;
UFOP  ICEA  DECSI
: Consultas
• : Recuperar o número e nome
dos departamentos localizados em ‘São
Paulo’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 17
Problema!
Problema!
Dnumero, Dnome
DEPARTAMENTO, LOCALIZACAO_DEP
Dnumero = Dnumero
Dlocal = ‘São Paulo’;
UFOP  ICEA  DECSI
: Atributos Ambíguos
• Em tabelas diferentes podem existir
atributos de mesmo nome
• Algumas consultas envolvem a mesma tabela
mais de uma vez
• Necessário qualificar os atributos
• Usar o próprio nome da tabela
• Criar uma variável de tabela
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 18
UFOP  ICEA  DECSI
: Consultas
• : Recuperar o número e nome
dos departamentos localizados em ‘São
Paulo’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 19
D.Dnumero, D.Dnome
DEPARTAMENTO D, LOCALIZACAO_DEP L
D.Dnumero = L.Dnumero
L.Dlocal = ‘São Paulo’;
UFOP  ICEA  DECSI
: Consultas
• : Para cada funcionário,
recupere o nome e sobrenome mais o nome
e sobrenome do seu supervisor
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 20
UFOP  ICEA  DECSI
: Consultas
• : Para cada funcionário,
recupere o nome e sobrenome mais o nome
e sobrenome do seu supervisor
• ou
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 21
F.Pnome, F.Unome, S.Pnome, S.Unome
FUNCIONARIO F, FUNCIONARIO S
F.supervisor = S.Cpf;
F.Pnome, F.Unome, S.Pnome, S.Unome
FUNCIONARIO F, FUNCIONARIO S
F.supervisor = S.Cpf;
UFOP  ICEA  DECSI
: Consultas
• É possível renomear os atributos dentro de 
uma consulta
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 22
Pn, Mn, Un
FUNCIONARIO F(Pn, Mn, Un, Cpf, Dn, Ende, Sex, Sal, Sup, Dnr)
Sal > 10000;
UFOP  ICEA  DECSI
: Consultas
• : Selecione os números de CPF 
dos funcionários
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 23
UFOP  ICEA  DECSI
: Consultas
• : Selecione os números de CPF 
dos funcionários
• Cláusula não é obrigatória
• Todas as tuplas da(s) tabela(s) especificada(s) 
serão retornadas
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 24
Cpf
FUNCIONARIO;
UFOP  ICEA  DECSI
: Consultas
• : Recupere os funcionários 
lotados no departamento 1
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 25
UFOP  ICEA  DECSI
: Consultas
• : Recupere os funcionários 
lotados no departamento 1
• Asterisco ( ) é usado para retornar todos os 
atributos das tabelas da cláusula 
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 26
*
FUNCIONARIO
Dnr = 1;
UFOP  ICEA  DECSI
: Consultas
• : Recupere os funcionários 
lotados no departamento ‘Pesquisa’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 27
UFOP  ICEA  DECSI
: Consultas
• : Recupere os funcionários 
lotados no departamento ‘Pesquisa’
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 28
F.*
FUNCIONARIO F, DEPARTAMENTO D
D.Dnome = ‘Pesquisa’ 
F.Dnr = D.Dnumero;
UFOP  ICEA  DECSI
: Consultas
• : Recupere os salários pagos 
para cada funcionário
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 29
UFOP  ICEA  DECSI
: Consultas
• : Recupere os salários pagos 
para cada funcionário
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 30
Salario
FUNCIONARIO;
UFOP  ICEA  DECSI
: Consultas
• : Recupere os salários pagos 
para cada funcionário
• A cláusula elimina as tuplas
duplicadas do resultado
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 31
Salario
FUNCIONARIO;
UFOP  ICEA  DECSI
: Consultas
• A é um modelo não-ordenado
• O resultado pode ser mostrado em qualquer 
ordem!
• Cláusula ordena as tuplas do 
resultado
• Ascendente ( ) ou Decrescente ( )
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 32
UFOP  ICEA  DECSI
: Consultas
• : Recupere o nome dos
funcionários, o nome do projeto em que
trabalham e o nome do departamento que
controla o projeto, ordenados pelo nome do
departamento e em seguida pelo sobrenome
do funcionário
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 33
UFOP  ICEA  DECSI
: Consultas
• : Recupere o nome dos
funcionários, o nome do projeto em que
trabalham e o nome do departamento que
controla o projeto, ordenados pelo nome do
departamento e em seguida pelo sobrenome
do funcionário
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 34
D.Dnome, F.Unome, P.Unome, P.Projnome
FUNCIONARIO F, DEPARTAMENTO D,
PROJETO P, TRABALHA_EM T
D.Dnumero = F.Dnr AND F.Cpf = T.Fcpf
AND T.Pnr = P.Projnumero
D.Dnome , F.Unome ;
UFOP  ICEA  DECSI
: Consultas
• Operador é usado para comparar 
cadeias de caracteres
• Faz uso de dois caracteres
• substitui um número qualquer de zero ou mais
caracteres
• substitui um único caractere
• Operador de concatenação pode ser usado
para anexar dois valores de cadeia
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 35
UFOP  ICEA  DECSI
: Consultas
• : Recuperar os funcionáriosque
moram na cidade São Paulo
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 36
UFOP  ICEA  DECSI
: Consultas
• : Recuperar os funcionários que
moram na cidade São Paulo
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 37
Pnome, Unome
FUNCIONARIO
Endereco ‘%São Paulo%’;
UFOP  ICEA  DECSI
: Consultas
• : Recuperar os funcionários que
nasceram na década de 60
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 38
UFOP  ICEA  DECSI
: Consultas
• : Recuperar os funcionários que
nasceram na década de 60
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 39
Pnome, Unome
FUNCIONARIO
(Datanasc ) ‘%196%’;
UFOP  ICEA  DECSI
: Consultas
• Caso os caracteres ou estejam 
presentes
• Necessário usar um caractere de escape
• Qualquer caractere não usado pode ser escolhido 
como caractere de escape
• Ex.: ‘AB _CD %EF’ ‘ ’
• Se a aspas simples ( ) for necessária, ela 
será representado como aspas duplas ( )
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 40
UFOP  ICEA  DECSI
: Consultas
• : Recupere o nome dos
funcionários que trabalham no projeto
‘ProdutoX’, junto do seu salário acrescido
em 10%.
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 41
UFOP  ICEA  DECSI
: Consultas
• : Recupere o nome dos
funcionários que trabalham no projeto
‘ProdutoX’, junto do seu salário acrescido
em 10%.
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 42
F.Pnome, F.Unome, F.Salario * 1.1 Novo_Salario
FUNCIONARIO F, PROJETO P,
TRABALHA_EM T
F.Cpf = T.Fcpf T.Pnr = P.Projnumero
P.Projnome = ‘ProdutoX’;
UFOP  ICEA  DECSI
: Consultas
• É permitido o uso de operadores aritméticos
nas consultas
• , , e podem ser usados nas consultas
• Para tipos de dados , e os
operadores e – servem como incremento e
decremento
• Intervalo é a diferença entre dois valores de
• Operador pode ser usado para
comparar valores
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 43
UFOP  ICEA  DECSI
: Consultas
• : Recuperar os funcionários do
departamento 5 cujo salário esteja entre
R$30.000 e R$40.000
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 44
UFOP  ICEA  DECSI
: Consultas
• : Recuperar os funcionários do
departamento 5 cujo salário esteja entre
R$30.000 e R$40.000
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 45
*
FUNCIONARIO F
(F.Salario 30000 40000) 
Dnr = 5;
UFOP  ICEA  DECSI
: Consultas
• Operações da teoria de conjuntos
•
• ( )
•
• Tabelas precisam ser compatíveis para 
união
• Resultado dessas operações não possuem 
tuplas duplicadas
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 46
UFOP  ICEA  DECSI
: Consultas
• : Liste os projetos que tenham
um funcionário com sobrenome ‘Silva’. Seja
como um trabalhador ou como gerente do
departamento que controla o projeto
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 47
UFOP  ICEA  DECSI
: Consultas
• : Liste os projetos que tenham
um funcionário com sobrenome ‘Silva’. Seja
como um trabalhador ou como gerente do
departamento que controla o projeto
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 48
( Projnumero
PROJETO P, DEPARTAMENTO D,
FUNCIONARIO F
P.Dnum = D.Dnumero F.Unome = ‘Silva’
F.cpf = D.cpf_gerente)
( Pnr
TRABALHA_EM TE, FUNCIONARIO F
F.Cpf = TE.Fcpf F.Unome = ‘Silva’ );
UFOP  ICEA  DECSI
: Consultas
• : Nome dos funcionários sem
dependente
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 49
UFOP  ICEA  DECSI
: Consultas
• : Nome dos funcionários sem
dependente
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 50
( Pnome, Unome
FUNCIONARIO)
( F.Pnome, F.Unome
FUNCIONARIO F, DEPENDENTE D
F.Cpf = D.FCpf);
UFOP  ICEA  DECSI
: Consultas
• Para que o resultado das operações da 
teoria de conjuntos apresentem duplicadas
• Uso de operações de multiconjunto
•
•
•
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 51
UFOP  ICEA  DECSI
: Consultas
• : Cpfs dos funcionários que
trabalham nos projetos de número 10 ou 20
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 52
UFOP  ICEA  DECSI
: Consultas
• : Cpfs dos funcionários que
trabalham nos projetos de número 10 ou 20
PROF. BRUNO R. MONTEIRO CSI440 - BANCO DE DADOS I 53
( F.Cpf
TRABALHA_EM TE, FUNCIONARIO F
F.Cpf = TE.Fcpf TE.Pnr = 20)
( F.cpf
TRABALHA_EM TE, FUNCIONARIO F
F.Cpf = TE.Fcpf TE.Pnr = 10);
UFOP  ICEA  DECSI
Referências
Elmasri, R.; Navathe, S. B. (2011). “SQL básica” In: Elmasri, R.; Navathe, S. B. Sistemas 
de Banco de Dados, 6 ed. São Paulo: Pearson, p. 57-75.

Continue navegando