SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
DCC011
Introdução a Banco de Dados
SQL select
Mirella M. Moro
Departamento de Ciência da Computação
Universidade Federal de Minas Gerais
mirella@dcc.ufmg.br
Programa
•Introdução
• Conceitos básicos, características da abordagem de banco
de dados, modelos de dados, esquemas e instâncias,
arquitetura de um sistema de banco de dados,
componentes de um sistema de gerência de banco de
dados.
•Modelos de dados e linguagens
• Modelo entidade-relacionamento (ER), modelo relacional,
álgebra relacional, SQL.
•Projeto de bancos de dados
• Fases do projeto de bancos de dados, projeto lógico de
bancos de dados relacionais, normalização.
•Novas Tecnologias e Aplicações de Banco de Dados
2
DCC011 - profa. Mirella M. Moro
SQL: Consultas
Exemplos
1. Consultas Básicas
2. Facilidades Adicionais
3. Consultas Complexas
Problema
•Dado um conjunto de
tabelas e seus dados
•Como recuperar os
dados?
•Como realizar consultas a
esses dados?
•“Me diz aí os nomes das
alunas do curso de
Ciência da Computação
ordenados
alfabeticamente”
Matr Nome Sexo Cr
1 A F CC
2 B M CC
3 C M CC
4 D F MC
5 E M MC
6 F M SI
7 G F SI
8 H F SI
9 I M SI
10 J M ECA
ALUNOS
4
DCC011 - profa. Mirella M. Moro
SQL select-from
1. SELECT Matr
FROM ALUNOS;
2. SELECT Cr
FROM ALUNOS;
3. SELECT Matr, Cr
FROM ALUNOS;
4. SELECT Matr, Nome, Sexo, Cr
FROM ALUNOS;
5. SELECT *
FROM ALUNOS;
5
DCC011 - profa. Mirella M. Moro
Matr Nome Sexo Cr
1 A F CC
2 B M CC
3 C M CC
4 D F MC
5 E M MC
6 F M SI
7 G F SI
8 H F SI
9 I M SI
10 J M ECA
ALUNOS
SQL select-from-where
1. SELECT Matr
FROM ALUNOS
WHERE Sexo = ‘F’;
2. SELECT Nome
FROM ALUNOS
WHERE Sexo = ‘F’
AND Cr = ‘SI’;
3. SELECT Matr
FROM ALUNOS
WHERE Sexo = ‘F’
AND Cr <> “CC”;
6
DCC011 - profa. Mirella M. Moro
Solução: SQL select-from-where
“Me diz aí os nomes das
alunas do curso de Ciência
da Computação ordenados
alfabeticamente”
7
DCC011 - profa. Mirella M. Moro
SELECT Nome
FROM ALUNOS
WHERE Sexo = ‘F’
AND Cr = ‘CC’
ORDER BY Nome;
Mais Problemas
1. Nomes de todos os
alunos acompanhados
dos nomes de seus
cursos
2. Nomes de todos os
alunos acompanhados
das disciplinas
matriculadas em 20162
8
DCC011 - profa. Mirella M. Moro
Matr Nome Sexo Cr
1 A F CC
2 B M CC
3 C M CC
4 D F MC
5 E M MC
6 F M SI
7 G F SI
8 H F SI
9 I M SI
10 J M ECA
ALUNOS
ALUNOS
Matr Nome Sexo Cr
1 A F CC
2 B M CC
3 C M CC
4 D F MC
5 E M MC
6 F M SI
7 G F SI
8 H F SI
9 I M SI
10 J M ECA
Cr Nome Depto Coord
CC
Ciência da
Computação DCC RG
MC
Matemática
Computacional DCC TN
SI
Sistemas de
Informação DCC CDJ
ECA
Engenharia de
Controle e
Automação
ENG XYZ
CURSOS
Matr Disc T Sem
1 DCC011 Z 20162
1 DCC851 A 20162
1 DCC834 A 20161
2 DCC011 Z 20161
... ... ... ...
MATRICULAS
9
DCC011 - profa. Mirella M. Moro
Em formato texto
ALUNOS (Matr, Nome, Sexo, Cr)
Cr referencia CURSOS
CURSOS (Cr, Nome, Depto, Coord)
Depto referencia DEPARTAMENTOS
Coord referencia PROFESSORES
MATRICULAS (Matr, Disc, T, Sem)
Matr referencia ALUNOS
Disc referencia DISCIPLINAS
DEPARTAMENTOS (...)
PROFESSORES (...)
DISCIPLINAS (...)
10
DCC011 - profa. Mirella M. Moro
Mais Problemas
1. Nomes de todos os alunos
acompanhados dos nomes de
seus cursos
11
DCC011 - profa. Mirella M. Moro
Mais Problemas
1. Nomes de todos os alunos acompanhados
dos nomes de seus cursos
SOLUÇÃO A
SELECT Nome, Nome
FROM ALUNOS, CURSOS;
SOLUÇÃO B
SELECT ALUNOS.Nome, CURSOS.Nome
FROM ALUNOS, CURSOS;
SOLUÇÃO C
SELECT A.Nome, C.Nome
FROM ALUNOS as A, CURSOS as C;
SOLUÇÃO D
SELECT A.Nome, C.Nome
FROM ALUNOS A, CURSOS C
WHERE A.Cr = C.Cr;
12
DCC011 - profa. Mirella M. Moro
Mais Problemas
2. Nomes de todos os alunos
acompanhados das disciplinas
matriculadas em 20162
13
DCC011 - profa. Mirella M. Moro
Mais Problemas
2. Nomes de todos os alunos
acompanhados das disciplinas
matriculadas em 20162
SOLUÇÃO A
SELECT Nome, Disc
FROM ALUNOS, MATRICULAS;
SOLUÇÃO B
SELECT Nome, Disc
FROM ALUNOS, MATRICULAS
WHERE Sem=“20162”;
SOLUÇÃO C
SELECT Nome, Disc
FROM ALUNOS, MATRICULAS
WHERE Sem=“20162” AND
ALUNOS.Matr = MATRICULAS.Matr;
14
DCC011 - profa. Mirella M. Moro
Organizando as Ideias
1. Consultas Básicas em SQL
•Formato básico do comando SELECT:
SELECT <lista de atributos>
FROM <lista de tabelas>
[ WHERE <condição>; ]
•Exemplo:
SELECT datanast, endereco
FROM EMPREGADO
WHERE pnome=‘John’ AND
minicial=‘B’ AND
unome=‘Smith’;
π Bdate,AddressσFname=‘John’ AND Minit=‘B’ AND Lname=‘Smith’ (EMPLOYEE)
EM PORTUGUÊS
EMPREGADO (ssn, pnome, minicial, unome,
datanasc, endereco, sexo, salario, superssn, dno)
superssn REFERENCIA EMPREGADO
dno REFERENCIA DEPARTAMENTO
DEPARTAMENTO (dnumero, dnome, gerssn,
gerdatainicio)
gerssn REFERENCIA EMPREGADO.ssn
16
DCC011 - profa. Mirella M. Moro
Consultas Básicas em SQL
B. Atributos Ambíguos e Pseudônimos (alias)
SELECT dname, dlocation
FROM DEPARTMENT, DEPT_LOCATIONS
WHERE DEPARTMENT.dnumber =
DEPT_LOCATIONS.dnumber;
SELECT e.fname, e.lname, s.fname, s.lname
FROM EMPLOYEE AS E, EMPLOYEE AS S
WHERE e.superssn=s.ssn;
EM INGLÊS
EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno)
superssn REFERENCIA EMPLOYEE
dno REFERENCIA DEPARTMENT
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
PROJECT (pnumber, pname, plocation, dnum)
dnum REFERENCIA DEPARTAMENT
DEPT_LOCATIONS (dnumber,dlocation)
dnumber REFERENCIA DEPARTAMENT
(Q8)
17
DCC011 - profa. Mirella M. Moro
Consultas Básicas em SQL
B. Atributos Ambíguos e Pseudônimos (alias)
• SELECT pnumber, dnum, lname, address, bdate
FROM PROJECT P, DEPARTMENT D, EMPLOYEE E
WHERE plocation=‘Stafford’ AND
D.dnum=P.dnum AND D.mgrssn=E.ssn;
π pnumber,dnum,lname,address,bdate σplocation=‘Stafford’
(EMPLOYEE ⋈ ssn=mgrssn (DEPARTMENT ⋈ PROJECT))
condição de seleção
condição de junção
EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno)
superssn REFERENCIA EMPLOYEE
dno REFERENCIA DEPARTMENT
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
PROJECT (pnumber, pname, plocation, dnum)
dnum REFERENCIA DEPARTAMENT
(Q2)
18
DCC011 - profa. Mirella M. Moro
Consultas Básicas em SQL
C. SELECT FROM sem o WHERE
SELECT ssn, lname, salary
FROM EMPLOYEE;
SELECT lname, dname
FROM EMPLOYEE, DEPARTMENT
Atenção! A consulta em vermelho corresponde a um produto
cartesiano das tabelas EMPLOYEE e DEPARTMENT :
π lname,dname (EMPLOYEE x DEPARTMENT)
WHERE dno=dnumber;  com a junção
EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno)
superssn REFERENCIA EMPLOYEE
dno REFERENCIA DEPARTMENT
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
(Q10)
19
DCC011 - profa. Mirella M. Moro
Consultas Básicas em SQL
D. TODOS OS ATRIBUTOS
•Consultas a todos os atributos
SELECT *
FROM EMPLOYEE
WHERE Dno=5;
SELECT *
FROM EMPLOYEE, DEPARTMENT
WHERE Dname=‘Research’ AND Dno=Dnumber;
EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno)
superssn REFERENCIA EMPLOYEE
dno REFERENCIA DEPARTMENT
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
(Q1C)
(Q1D)
20
DCC011 - profa. Mirella M. Moro
Consultas Básicas em SQL
E. TABELAS COMO CONJUNTOS
• SQL trata uma tabela como um multi-conjunto
• Tuplas duplicadas PODEM aparecer em uma tabela
• E no resultado de uma consulta
• SQL não elimina automaticamente as duplicatas porque…
• Eliminação de duplicatas é uma operação cara (ordenar)
• O usuário pode estar interessado nelas
• Funções de agregação utilizam duplicatas (funções de agregação serão
explicadas a seguir)
• Operações
• SELECT DISTINCT, SELECT ALL
• ∪: UNION, : EXCEPT, ∩: INTERSECT
21
DCC011 - profa. Mirella M. Moro
Tabelas como Conjuntos
SELECT salary
FROM EMPLOYEE;
SELECT DISTINCT salary
FROM EMPLOYEE;
(SELECT pnumber
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE dnum=dnumber AND mgrssn=ssn AND
lname=‘Smith’)
UNION
(SELECT pnumber
FROM PROJECT, WORKS_ON, EMPLOYEE
WHERE pnumber=pno AND essn=ssn AND
lname=‘Smith’);
Não elimina linhas (tuplas) duplicatas
Para eliminar precisa usar DISTINCT, por exemplo:
(Q4)
(Q11)
EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno)
superssn REFERENCIA EMPLOYEE
dno REFERENCIA DEPARTMENT
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
PROJECT (pnumber, pname, plocation, dnum)
dnum REFERENCIA DEPARTAMENT
22
DCC011 - profa. Mirella M. Moro
PORÉM: union, intersect, except eliminam duplicatas!
UNION ALL
2. Facilidades Adicionais
A. JOINS
•Uso do operador JOIN, na cláusula FROM
•SELECT FNAME, LNAME, ADDRESS
FROM (EMPLOYEE JOIN DEPARTMENT
ON DNO=DNUMEBR)
WHERE DNAME=‘Research’;
•A cláusula FROM contém então uma única tabela
resultante da junção de Empregado e Departamento
EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno)
superssn REFERENCIA EMPLOYEE
dno REFERENCIA DEPARTMENT
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
23
DCC011 - profa. Mirella M. Moro
Facilidades Adicionais
A. JOINS
•Pode-se especificar outros tipos de junção na cláusula
FROM
•Junção natural: equijoin em cada par de atributos com
o mesmo nome
•SELECT DNAME, DLOCATION
FROM (DEPARTMENT NATURAL JOIN
DEPT_LOCATIONS);
DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate)
mgrssn REFERENCIA EMPLOYEE.ssn
DEPT_LOCATIONS (dnum, dlocal)
dnum REFERENCIA DEPARTAMENT
24
DCC011 - profa. Mirella M. Moro
Facilidades Adicionais
A. JOINS
Renomeando atributos para o natural join:
•SELECT pnome, unome, dnome
FROM (EMPREGADO NATURAL JOIN
(DEPARTMENTO AS DEPT (dno, dnome,
gerssn, gerdatainicio)))
WHERE dnome = ‘Pesquisa’;
EMPREGADO (ssn, pnome, minicial, unome, …superssn, dno)
superssn REFERENCIA EMPREGADO
dno REFERENCIA DEPARTAMENTO
DEPARTAMENTO (dnumero, dnome, gerssn, gerdatainicio)
gerssn REFERENCIA EMPREGADO.ssn
25
DCC011 - profa. Mirella M. Moro
Facilidades Adicionais
A. JOINS
•SELECT fname, lname, dependent_name
FROM (EMPLOYEE JOIN DEPENDENT ON ssn=essn);
•[INNER] JOIN..ON: pares empregado/dependente
•OUTER JOIN..ON: pares + empregados que não têm
dependente
 [NATURAL] LEFT/RIGHT/FULL OUTER JOIN .. ON
•SELECT fname, lname, dependent_name
FROM (EMPLOYEE LEFT OUTER JOIN
DEPENDENT ON ssn=essn);
26
DCC011 - profa. Mirella M. Moro
Outer Join
INSERE dois cursos {ENF,MED}
•select A.Matr, C.Cr from ALUNOS A
RIGHT OUTER JOIN CURSOS C
ON A.Cr=C.Cr
• SE a única coluna em comum fosse Cr:
select A.Matr, C.Cr from ALUNOS A
NATURAL RIGHT OUTER JOIN CURSOS C
DCC011 - profa. Mirella M. Moro 27
Matr Cr
1 CC
2 CC
3 CC
4 MC
5 MC
6 SI
7 SI
8 SI
9 SI
10 ECA
null ENF
null MED
Cuidado com o número de colunas do
resultado quando se realiza
junção natural
NATURAL JOIN
NATURAL LEFT OUTER JOIN
NATURAL RIGHT OUTER JOIN
A palavra OUTER é opcional
DCC011 - profa. Mirella M. Moro 28
PraticandoSQL
DCC011 - profa. Mirella M. Moro 29
Item(Cod_Item, Descricao, Preco_Unit)
Pedido(Num_Pedido, Data, Cod_Cliente, Valor_Total),
Cod_Cliente --> Cliente
Item_Pedido(Num_Pedido, Cod_Item, Quantidade)
Num_Pedido --> Pedido, Cod_Item --> Item
SQL #Colunas #Linhas
select * from Item, Item_Pedido 6 234
select * from Item I, Item_Pedido IP
where I.Cod_Item=IP.Cod_Item
6 18
select * from Item NATURAL JOIN Item_Pedido 5 18
select * from Item I JOIN Item_Pedido IP
ON I.Cod_Item=IP.Cod_Item
6 18
select * from (Item I LEFT OUTER JOIN Item_Pedido IP
ON I.Cod_Item=IP.Cod_Item)
6 19
select * from (Item NATURAL LEFT OUTER JOIN Item_Pedido) 5 19
?
A B B
A
A B
B
A
A B
A B
A B
SQL JOINS
SELECT …
FROM A LEFT JOIN B
ON A.key = B.key
SELECT …
FROM A RIGHT JOIN B
ON A.key = B.key
SELECT …
FROM A LEFT JOIN B
ON A.key = B.key
WHERE B.key IS NULL
SELECT …
FROM A RIGHT JOIN B
ON A.key = B.key
WHERE A.key IS NULL
SELECT …
FROM A INNER JOIN B
ON A.key = B.key
SELECT …
FROM A FULL OUTER JOIN B
ON A.key = B.key
SELECT …
FROM A FULL OUTER JOIN B
ON A.key = B.key
WHERE A.key IS NULL
OR B.key IS NULL
30
DCC011 - profa. Mirella M. Moro
Facilidades Adicionais
B. FUNÇÕES DE AGREGAÇÃO
• Funções de agregação: COUNT, SUM, MAX, MIN, AVG
• Sempre aparecem na cláusula SELECT ou HAVING
• Ou seja, não existe “where max(salario)=5000”
• COUNT, duas possibilidades
• count(*) : retorna quantas linhas existe no resultado da consulta
• count(coluna): retorna quantas linhas possuem valores válidos para coluna
• SUM(coluna): retorna a soma de todos os valores válidos para a
coluna especificada
• AVG(coluna): retorna o valor médio de todos os valores válidos
para a coluna especificada
• MAX(coluna) e MIN(coluna): retornam os valores máximo e
mínimo (respectivamente) da coluna especificada
• NULL não conta como mínimo, pois não é valor válido
31
DCC011 - profa. Mirella M. Moro
Exemplos funções agregação
• select count(*) from ALUNOS;
• select count(*) as Qtde
from ALUNOS
where sexo = ‘F’;
• select max(Matr) as max,
min(Matr) as min
from ALUNOS;
• select sum(Matr) as sum,
avg(Matr) as avg
from ALUNOS
where sexo = ‘F’;
DCC011 - profa. Mirella M. Moro 32
count(*)
10
Qtde
4
max min
10 1
sum avg
20 5
FUNÇÕES DE AGREGAÇÃO – exemplos do livro
• SELECT SUM(SALARY), MAX(SALARY), MIN(SALARY), AVG(SALARY)
FROM EMPLOYEE;
• SELECT SUM(SALARY), MAX(SALARY), MIN(SALARY), AVG(SALARY)
FROM EMPLOYEE, DEPARTMENT
WHERE DNO=DNUMBER AND DNAME=‘Research’;
• SELECT COUNT(*)
FROM EMPLOYEE, DEPARTMENT
WHERE DNO=DNUMBER AND DNAME=‘Research’;
33
DCC011 - profa. Mirella M. Moro
Exercícios
podem ser executados no site www.lbd.dcc.ufmg.br/praticandosql
selecionar o banco de dados COMPANY
1. Retorne o SSN dos empregados:
a. que trabalham no departamento 4;
b. que trabalham no departamento 4 ou 5;
c. que trabalham no departamento gerenciado pelo empregado 987654321;
d. que trabalham mais de 9 horas no projeto 10;
2. Retorne o total de horas que o empregado 333445555 trabalha em projetos;
3. Retorne o máximo, mínimo e média de horas que os empregados trabalham no projeto 30;
4. Retorne todos os projetos (incluindo os sem empregados) seguidos do ssn dos seus
empregados;
DEPARTMENT(DNAME, DNUMBER, MGRSSN, MGRSTARTDATE) mgrssn é o gerente
MGRSSN referencia EMPLOYEE
DEPENDENT(ESSN, DEPENDENT_NAME, SEX, BDATE, RELATIONSHIP)
ESSN referencia EMPLOYEE
DEPT_LOCATIONS(DNUMBER, DLOCATION)
DNUMBER referencia DEPARTMENT
EMPLOYEE(FNAME, MINIT, LNAME,SSN, BDATE, ADDRESS, SEX, SALARY, SUPERSSN, DNO)
SUPERSSN referencia EMPLOYEE; DNO referencia DEPARTMENT
PROJECT(PNAME, PNUMBER, PLOCATION, DNUM)
DNUM referencia DEPARTMENT
WORKS_ON(ESSN, PNO, HOURS) ESSN referencia EMPLOYEE ; PNO referencia PROJECT
34
DCC011 - profa. Mirella M. Moro
SSN dos empregados:
a. que trabalham no
departamento 4;
b. que trabalham no
departamento 4 ou 5;
35
DCC011 - profa. Mirella M. Moro
SSN dos empregados:
c. que trabalham no
departamento
gerenciado pelo
empregado 987654321;
d. que trabalham mais de 9
horas no projeto 10;
36
DCC011 - profa. Mirella M. Moro
2. Retorne o total de horas
que o empregado
333445555 trabalha
em projetos;
3. Retorne o máximo,
mínimo e média de
horas que os
empregados
trabalham no projeto
30;
4. Retorne todos os
projetos (incluindo os
sem empregados)
seguidos do ssn dos
seus empregados;
37
DCC011 - profa. Mirella M. Moro
Exercícios: BD Universidade-simplificado
ALUNOS (Matr, Nome, Sexo, Cr)
Cr referencia CURSOS
CURSOS (Cr, Nome, Depto, Coord)
Depto referencia DEPARTAMENTOS
Coord referencia PROFESSORES
MATRICULAS (Matr, Disc, T, Sem)
Matr referencia ALUNOS
Disc referencia DISCIPLINAS
DEPARTAMENTOS (Dep, NomeDep, Localização, Chefe)
Chefe referencia PROFESSORES
PROFS (CPF, NomeProf, DataAdm, Nível)
DISCIP (Disc, NomeDisc, Creditos, CH)
PROF-DISC (CPFprof, Disc, T, Sem)
CPFprof referencia PROFS
Disc referencia DISCIP
DCC011 - profa. Mirella M. Moro 38
Escrever o comando SQL para as consultas
1. Obter todos os dados de Disciplinas
2. Obter os nomes das Disciplinas e o respectivo número de créditos
3. Obter os nomes das Disciplinas para as quais existem alunos
matriculados SEM utilizar o operador de junção
4. Refazer a consulta 3 utilizando o operador de junção
5. Obter os nomes dos professores e os nomes das disciplinas que
ensinam
6. Obter os nomes dos professores e os nomes das disciplinas que
ensinam no semestre atual
7. Obter os nomes dos professores e os nomes das disciplinas que
ensinam no semestre atual e no anterior
8. Obter os nomes dos professores que são chefes de departamento e
as disciplinas que ensinam no semestre atual
9. Obter os nomes cursos do Departamento DCC ordenados
alfabeticamente
10. Obter os nomes cursos que começam com Engenharia
DCC011 - profa. Mirella M. Moro 39

Contenu connexe

Dernier

Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdflucassilva721057
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESEduardaReis50
 
Atividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxAtividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxDianaSheila2
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptMaiteFerreira4
 

Dernier (20)

Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
Noções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdfNoções de Farmacologia - Flávia Soares.pdf
Noções de Farmacologia - Flávia Soares.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕESCOMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
COMPETÊNCIA 4 NO ENEM: O TEXTO E SUAS AMARRACÕES
 
Atividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptxAtividade sobre os Pronomes Pessoais.pptx
Atividade sobre os Pronomes Pessoais.pptx
 
Literatura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.pptLiteratura Brasileira - escolas literárias.ppt
Literatura Brasileira - escolas literárias.ppt
 

En vedette

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

En vedette (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

aula14 UFMG bd sql server testes e comandos

  • 1. DCC011 Introdução a Banco de Dados SQL select Mirella M. Moro Departamento de Ciência da Computação Universidade Federal de Minas Gerais mirella@dcc.ufmg.br
  • 2. Programa •Introdução • Conceitos básicos, características da abordagem de banco de dados, modelos de dados, esquemas e instâncias, arquitetura de um sistema de banco de dados, componentes de um sistema de gerência de banco de dados. •Modelos de dados e linguagens • Modelo entidade-relacionamento (ER), modelo relacional, álgebra relacional, SQL. •Projeto de bancos de dados • Fases do projeto de bancos de dados, projeto lógico de bancos de dados relacionais, normalização. •Novas Tecnologias e Aplicações de Banco de Dados 2 DCC011 - profa. Mirella M. Moro
  • 3. SQL: Consultas Exemplos 1. Consultas Básicas 2. Facilidades Adicionais 3. Consultas Complexas
  • 4. Problema •Dado um conjunto de tabelas e seus dados •Como recuperar os dados? •Como realizar consultas a esses dados? •“Me diz aí os nomes das alunas do curso de Ciência da Computação ordenados alfabeticamente” Matr Nome Sexo Cr 1 A F CC 2 B M CC 3 C M CC 4 D F MC 5 E M MC 6 F M SI 7 G F SI 8 H F SI 9 I M SI 10 J M ECA ALUNOS 4 DCC011 - profa. Mirella M. Moro
  • 5. SQL select-from 1. SELECT Matr FROM ALUNOS; 2. SELECT Cr FROM ALUNOS; 3. SELECT Matr, Cr FROM ALUNOS; 4. SELECT Matr, Nome, Sexo, Cr FROM ALUNOS; 5. SELECT * FROM ALUNOS; 5 DCC011 - profa. Mirella M. Moro Matr Nome Sexo Cr 1 A F CC 2 B M CC 3 C M CC 4 D F MC 5 E M MC 6 F M SI 7 G F SI 8 H F SI 9 I M SI 10 J M ECA ALUNOS
  • 6. SQL select-from-where 1. SELECT Matr FROM ALUNOS WHERE Sexo = ‘F’; 2. SELECT Nome FROM ALUNOS WHERE Sexo = ‘F’ AND Cr = ‘SI’; 3. SELECT Matr FROM ALUNOS WHERE Sexo = ‘F’ AND Cr <> “CC”; 6 DCC011 - profa. Mirella M. Moro
  • 7. Solução: SQL select-from-where “Me diz aí os nomes das alunas do curso de Ciência da Computação ordenados alfabeticamente” 7 DCC011 - profa. Mirella M. Moro SELECT Nome FROM ALUNOS WHERE Sexo = ‘F’ AND Cr = ‘CC’ ORDER BY Nome;
  • 8. Mais Problemas 1. Nomes de todos os alunos acompanhados dos nomes de seus cursos 2. Nomes de todos os alunos acompanhados das disciplinas matriculadas em 20162 8 DCC011 - profa. Mirella M. Moro Matr Nome Sexo Cr 1 A F CC 2 B M CC 3 C M CC 4 D F MC 5 E M MC 6 F M SI 7 G F SI 8 H F SI 9 I M SI 10 J M ECA ALUNOS
  • 9. ALUNOS Matr Nome Sexo Cr 1 A F CC 2 B M CC 3 C M CC 4 D F MC 5 E M MC 6 F M SI 7 G F SI 8 H F SI 9 I M SI 10 J M ECA Cr Nome Depto Coord CC Ciência da Computação DCC RG MC Matemática Computacional DCC TN SI Sistemas de Informação DCC CDJ ECA Engenharia de Controle e Automação ENG XYZ CURSOS Matr Disc T Sem 1 DCC011 Z 20162 1 DCC851 A 20162 1 DCC834 A 20161 2 DCC011 Z 20161 ... ... ... ... MATRICULAS 9 DCC011 - profa. Mirella M. Moro
  • 10. Em formato texto ALUNOS (Matr, Nome, Sexo, Cr) Cr referencia CURSOS CURSOS (Cr, Nome, Depto, Coord) Depto referencia DEPARTAMENTOS Coord referencia PROFESSORES MATRICULAS (Matr, Disc, T, Sem) Matr referencia ALUNOS Disc referencia DISCIPLINAS DEPARTAMENTOS (...) PROFESSORES (...) DISCIPLINAS (...) 10 DCC011 - profa. Mirella M. Moro
  • 11. Mais Problemas 1. Nomes de todos os alunos acompanhados dos nomes de seus cursos 11 DCC011 - profa. Mirella M. Moro
  • 12. Mais Problemas 1. Nomes de todos os alunos acompanhados dos nomes de seus cursos SOLUÇÃO A SELECT Nome, Nome FROM ALUNOS, CURSOS; SOLUÇÃO B SELECT ALUNOS.Nome, CURSOS.Nome FROM ALUNOS, CURSOS; SOLUÇÃO C SELECT A.Nome, C.Nome FROM ALUNOS as A, CURSOS as C; SOLUÇÃO D SELECT A.Nome, C.Nome FROM ALUNOS A, CURSOS C WHERE A.Cr = C.Cr; 12 DCC011 - profa. Mirella M. Moro
  • 13. Mais Problemas 2. Nomes de todos os alunos acompanhados das disciplinas matriculadas em 20162 13 DCC011 - profa. Mirella M. Moro
  • 14. Mais Problemas 2. Nomes de todos os alunos acompanhados das disciplinas matriculadas em 20162 SOLUÇÃO A SELECT Nome, Disc FROM ALUNOS, MATRICULAS; SOLUÇÃO B SELECT Nome, Disc FROM ALUNOS, MATRICULAS WHERE Sem=“20162”; SOLUÇÃO C SELECT Nome, Disc FROM ALUNOS, MATRICULAS WHERE Sem=“20162” AND ALUNOS.Matr = MATRICULAS.Matr; 14 DCC011 - profa. Mirella M. Moro
  • 16. 1. Consultas Básicas em SQL •Formato básico do comando SELECT: SELECT <lista de atributos> FROM <lista de tabelas> [ WHERE <condição>; ] •Exemplo: SELECT datanast, endereco FROM EMPREGADO WHERE pnome=‘John’ AND minicial=‘B’ AND unome=‘Smith’; π Bdate,AddressσFname=‘John’ AND Minit=‘B’ AND Lname=‘Smith’ (EMPLOYEE) EM PORTUGUÊS EMPREGADO (ssn, pnome, minicial, unome, datanasc, endereco, sexo, salario, superssn, dno) superssn REFERENCIA EMPREGADO dno REFERENCIA DEPARTAMENTO DEPARTAMENTO (dnumero, dnome, gerssn, gerdatainicio) gerssn REFERENCIA EMPREGADO.ssn 16 DCC011 - profa. Mirella M. Moro
  • 17. Consultas Básicas em SQL B. Atributos Ambíguos e Pseudônimos (alias) SELECT dname, dlocation FROM DEPARTMENT, DEPT_LOCATIONS WHERE DEPARTMENT.dnumber = DEPT_LOCATIONS.dnumber; SELECT e.fname, e.lname, s.fname, s.lname FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE e.superssn=s.ssn; EM INGLÊS EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno) superssn REFERENCIA EMPLOYEE dno REFERENCIA DEPARTMENT DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn PROJECT (pnumber, pname, plocation, dnum) dnum REFERENCIA DEPARTAMENT DEPT_LOCATIONS (dnumber,dlocation) dnumber REFERENCIA DEPARTAMENT (Q8) 17 DCC011 - profa. Mirella M. Moro
  • 18. Consultas Básicas em SQL B. Atributos Ambíguos e Pseudônimos (alias) • SELECT pnumber, dnum, lname, address, bdate FROM PROJECT P, DEPARTMENT D, EMPLOYEE E WHERE plocation=‘Stafford’ AND D.dnum=P.dnum AND D.mgrssn=E.ssn; π pnumber,dnum,lname,address,bdate σplocation=‘Stafford’ (EMPLOYEE ⋈ ssn=mgrssn (DEPARTMENT ⋈ PROJECT)) condição de seleção condição de junção EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno) superssn REFERENCIA EMPLOYEE dno REFERENCIA DEPARTMENT DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn PROJECT (pnumber, pname, plocation, dnum) dnum REFERENCIA DEPARTAMENT (Q2) 18 DCC011 - profa. Mirella M. Moro
  • 19. Consultas Básicas em SQL C. SELECT FROM sem o WHERE SELECT ssn, lname, salary FROM EMPLOYEE; SELECT lname, dname FROM EMPLOYEE, DEPARTMENT Atenção! A consulta em vermelho corresponde a um produto cartesiano das tabelas EMPLOYEE e DEPARTMENT : π lname,dname (EMPLOYEE x DEPARTMENT) WHERE dno=dnumber;  com a junção EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno) superssn REFERENCIA EMPLOYEE dno REFERENCIA DEPARTMENT DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn (Q10) 19 DCC011 - profa. Mirella M. Moro
  • 20. Consultas Básicas em SQL D. TODOS OS ATRIBUTOS •Consultas a todos os atributos SELECT * FROM EMPLOYEE WHERE Dno=5; SELECT * FROM EMPLOYEE, DEPARTMENT WHERE Dname=‘Research’ AND Dno=Dnumber; EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno) superssn REFERENCIA EMPLOYEE dno REFERENCIA DEPARTMENT DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn (Q1C) (Q1D) 20 DCC011 - profa. Mirella M. Moro
  • 21. Consultas Básicas em SQL E. TABELAS COMO CONJUNTOS • SQL trata uma tabela como um multi-conjunto • Tuplas duplicadas PODEM aparecer em uma tabela • E no resultado de uma consulta • SQL não elimina automaticamente as duplicatas porque… • Eliminação de duplicatas é uma operação cara (ordenar) • O usuário pode estar interessado nelas • Funções de agregação utilizam duplicatas (funções de agregação serão explicadas a seguir) • Operações • SELECT DISTINCT, SELECT ALL • ∪: UNION, : EXCEPT, ∩: INTERSECT 21 DCC011 - profa. Mirella M. Moro
  • 22. Tabelas como Conjuntos SELECT salary FROM EMPLOYEE; SELECT DISTINCT salary FROM EMPLOYEE; (SELECT pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE dnum=dnumber AND mgrssn=ssn AND lname=‘Smith’) UNION (SELECT pnumber FROM PROJECT, WORKS_ON, EMPLOYEE WHERE pnumber=pno AND essn=ssn AND lname=‘Smith’); Não elimina linhas (tuplas) duplicatas Para eliminar precisa usar DISTINCT, por exemplo: (Q4) (Q11) EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno) superssn REFERENCIA EMPLOYEE dno REFERENCIA DEPARTMENT DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn PROJECT (pnumber, pname, plocation, dnum) dnum REFERENCIA DEPARTAMENT 22 DCC011 - profa. Mirella M. Moro PORÉM: union, intersect, except eliminam duplicatas! UNION ALL
  • 23. 2. Facilidades Adicionais A. JOINS •Uso do operador JOIN, na cláusula FROM •SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT ON DNO=DNUMEBR) WHERE DNAME=‘Research’; •A cláusula FROM contém então uma única tabela resultante da junção de Empregado e Departamento EMPLOYEE(ssn, fname, lname, address,bdate, superssn, dno) superssn REFERENCIA EMPLOYEE dno REFERENCIA DEPARTMENT DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn 23 DCC011 - profa. Mirella M. Moro
  • 24. Facilidades Adicionais A. JOINS •Pode-se especificar outros tipos de junção na cláusula FROM •Junção natural: equijoin em cada par de atributos com o mesmo nome •SELECT DNAME, DLOCATION FROM (DEPARTMENT NATURAL JOIN DEPT_LOCATIONS); DEPARTAMENT (dnum, dname, mgrssn, mgrinitialdate) mgrssn REFERENCIA EMPLOYEE.ssn DEPT_LOCATIONS (dnum, dlocal) dnum REFERENCIA DEPARTAMENT 24 DCC011 - profa. Mirella M. Moro
  • 25. Facilidades Adicionais A. JOINS Renomeando atributos para o natural join: •SELECT pnome, unome, dnome FROM (EMPREGADO NATURAL JOIN (DEPARTMENTO AS DEPT (dno, dnome, gerssn, gerdatainicio))) WHERE dnome = ‘Pesquisa’; EMPREGADO (ssn, pnome, minicial, unome, …superssn, dno) superssn REFERENCIA EMPREGADO dno REFERENCIA DEPARTAMENTO DEPARTAMENTO (dnumero, dnome, gerssn, gerdatainicio) gerssn REFERENCIA EMPREGADO.ssn 25 DCC011 - profa. Mirella M. Moro
  • 26. Facilidades Adicionais A. JOINS •SELECT fname, lname, dependent_name FROM (EMPLOYEE JOIN DEPENDENT ON ssn=essn); •[INNER] JOIN..ON: pares empregado/dependente •OUTER JOIN..ON: pares + empregados que não têm dependente  [NATURAL] LEFT/RIGHT/FULL OUTER JOIN .. ON •SELECT fname, lname, dependent_name FROM (EMPLOYEE LEFT OUTER JOIN DEPENDENT ON ssn=essn); 26 DCC011 - profa. Mirella M. Moro
  • 27. Outer Join INSERE dois cursos {ENF,MED} •select A.Matr, C.Cr from ALUNOS A RIGHT OUTER JOIN CURSOS C ON A.Cr=C.Cr • SE a única coluna em comum fosse Cr: select A.Matr, C.Cr from ALUNOS A NATURAL RIGHT OUTER JOIN CURSOS C DCC011 - profa. Mirella M. Moro 27 Matr Cr 1 CC 2 CC 3 CC 4 MC 5 MC 6 SI 7 SI 8 SI 9 SI 10 ECA null ENF null MED
  • 28. Cuidado com o número de colunas do resultado quando se realiza junção natural NATURAL JOIN NATURAL LEFT OUTER JOIN NATURAL RIGHT OUTER JOIN A palavra OUTER é opcional DCC011 - profa. Mirella M. Moro 28
  • 29. PraticandoSQL DCC011 - profa. Mirella M. Moro 29 Item(Cod_Item, Descricao, Preco_Unit) Pedido(Num_Pedido, Data, Cod_Cliente, Valor_Total), Cod_Cliente --> Cliente Item_Pedido(Num_Pedido, Cod_Item, Quantidade) Num_Pedido --> Pedido, Cod_Item --> Item SQL #Colunas #Linhas select * from Item, Item_Pedido 6 234 select * from Item I, Item_Pedido IP where I.Cod_Item=IP.Cod_Item 6 18 select * from Item NATURAL JOIN Item_Pedido 5 18 select * from Item I JOIN Item_Pedido IP ON I.Cod_Item=IP.Cod_Item 6 18 select * from (Item I LEFT OUTER JOIN Item_Pedido IP ON I.Cod_Item=IP.Cod_Item) 6 19 select * from (Item NATURAL LEFT OUTER JOIN Item_Pedido) 5 19 ?
  • 30. A B B A A B B A A B A B A B SQL JOINS SELECT … FROM A LEFT JOIN B ON A.key = B.key SELECT … FROM A RIGHT JOIN B ON A.key = B.key SELECT … FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL SELECT … FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL SELECT … FROM A INNER JOIN B ON A.key = B.key SELECT … FROM A FULL OUTER JOIN B ON A.key = B.key SELECT … FROM A FULL OUTER JOIN B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL 30 DCC011 - profa. Mirella M. Moro
  • 31. Facilidades Adicionais B. FUNÇÕES DE AGREGAÇÃO • Funções de agregação: COUNT, SUM, MAX, MIN, AVG • Sempre aparecem na cláusula SELECT ou HAVING • Ou seja, não existe “where max(salario)=5000” • COUNT, duas possibilidades • count(*) : retorna quantas linhas existe no resultado da consulta • count(coluna): retorna quantas linhas possuem valores válidos para coluna • SUM(coluna): retorna a soma de todos os valores válidos para a coluna especificada • AVG(coluna): retorna o valor médio de todos os valores válidos para a coluna especificada • MAX(coluna) e MIN(coluna): retornam os valores máximo e mínimo (respectivamente) da coluna especificada • NULL não conta como mínimo, pois não é valor válido 31 DCC011 - profa. Mirella M. Moro
  • 32. Exemplos funções agregação • select count(*) from ALUNOS; • select count(*) as Qtde from ALUNOS where sexo = ‘F’; • select max(Matr) as max, min(Matr) as min from ALUNOS; • select sum(Matr) as sum, avg(Matr) as avg from ALUNOS where sexo = ‘F’; DCC011 - profa. Mirella M. Moro 32 count(*) 10 Qtde 4 max min 10 1 sum avg 20 5
  • 33. FUNÇÕES DE AGREGAÇÃO – exemplos do livro • SELECT SUM(SALARY), MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE; • SELECT SUM(SALARY), MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME=‘Research’; • SELECT COUNT(*) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME=‘Research’; 33 DCC011 - profa. Mirella M. Moro
  • 34. Exercícios podem ser executados no site www.lbd.dcc.ufmg.br/praticandosql selecionar o banco de dados COMPANY 1. Retorne o SSN dos empregados: a. que trabalham no departamento 4; b. que trabalham no departamento 4 ou 5; c. que trabalham no departamento gerenciado pelo empregado 987654321; d. que trabalham mais de 9 horas no projeto 10; 2. Retorne o total de horas que o empregado 333445555 trabalha em projetos; 3. Retorne o máximo, mínimo e média de horas que os empregados trabalham no projeto 30; 4. Retorne todos os projetos (incluindo os sem empregados) seguidos do ssn dos seus empregados; DEPARTMENT(DNAME, DNUMBER, MGRSSN, MGRSTARTDATE) mgrssn é o gerente MGRSSN referencia EMPLOYEE DEPENDENT(ESSN, DEPENDENT_NAME, SEX, BDATE, RELATIONSHIP) ESSN referencia EMPLOYEE DEPT_LOCATIONS(DNUMBER, DLOCATION) DNUMBER referencia DEPARTMENT EMPLOYEE(FNAME, MINIT, LNAME,SSN, BDATE, ADDRESS, SEX, SALARY, SUPERSSN, DNO) SUPERSSN referencia EMPLOYEE; DNO referencia DEPARTMENT PROJECT(PNAME, PNUMBER, PLOCATION, DNUM) DNUM referencia DEPARTMENT WORKS_ON(ESSN, PNO, HOURS) ESSN referencia EMPLOYEE ; PNO referencia PROJECT 34 DCC011 - profa. Mirella M. Moro
  • 35. SSN dos empregados: a. que trabalham no departamento 4; b. que trabalham no departamento 4 ou 5; 35 DCC011 - profa. Mirella M. Moro
  • 36. SSN dos empregados: c. que trabalham no departamento gerenciado pelo empregado 987654321; d. que trabalham mais de 9 horas no projeto 10; 36 DCC011 - profa. Mirella M. Moro
  • 37. 2. Retorne o total de horas que o empregado 333445555 trabalha em projetos; 3. Retorne o máximo, mínimo e média de horas que os empregados trabalham no projeto 30; 4. Retorne todos os projetos (incluindo os sem empregados) seguidos do ssn dos seus empregados; 37 DCC011 - profa. Mirella M. Moro
  • 38. Exercícios: BD Universidade-simplificado ALUNOS (Matr, Nome, Sexo, Cr) Cr referencia CURSOS CURSOS (Cr, Nome, Depto, Coord) Depto referencia DEPARTAMENTOS Coord referencia PROFESSORES MATRICULAS (Matr, Disc, T, Sem) Matr referencia ALUNOS Disc referencia DISCIPLINAS DEPARTAMENTOS (Dep, NomeDep, Localização, Chefe) Chefe referencia PROFESSORES PROFS (CPF, NomeProf, DataAdm, Nível) DISCIP (Disc, NomeDisc, Creditos, CH) PROF-DISC (CPFprof, Disc, T, Sem) CPFprof referencia PROFS Disc referencia DISCIP DCC011 - profa. Mirella M. Moro 38
  • 39. Escrever o comando SQL para as consultas 1. Obter todos os dados de Disciplinas 2. Obter os nomes das Disciplinas e o respectivo número de créditos 3. Obter os nomes das Disciplinas para as quais existem alunos matriculados SEM utilizar o operador de junção 4. Refazer a consulta 3 utilizando o operador de junção 5. Obter os nomes dos professores e os nomes das disciplinas que ensinam 6. Obter os nomes dos professores e os nomes das disciplinas que ensinam no semestre atual 7. Obter os nomes dos professores e os nomes das disciplinas que ensinam no semestre atual e no anterior 8. Obter os nomes dos professores que são chefes de departamento e as disciplinas que ensinam no semestre atual 9. Obter os nomes cursos do Departamento DCC ordenados alfabeticamente 10. Obter os nomes cursos que começam com Engenharia DCC011 - profa. Mirella M. Moro 39