Rodrigo Kiyoshi Saito / rodrigok@anchieta.br
BANCO DE DADOS I
Tópicos abordados
• RELACIONANDO SQL COM ALGEBRA
RELACIONAL;
• NOTAÇÃO DA ALGEBRA RELACIONAL;
• NOTAÇÕES EM SQL;
• UNIÃO EM AR E SQL;
• INTERSECÇÃO EM AR E SQL;
• DIFERENÇA EM AR E SQL;
Tópicos abordados
• EXEMPLO PARA ESSAS OPERAÇÕES EM AR E
SQL;
• PROJEÇÃO EM AR E SQL;
• EXEMPLO DE SELEÇÃO EM AR E SQL;
• EXEMPLO DE SELEÇÃO (OU RESTRIÇÃO) E
PROJEÇÃO EM AR E SQL;
• PRODUTO CARTESIANO EM AR E SQL;
Tópicos abordados
• EXEMPLO DE PRODUTO CARTESIANO COM
SELEÇÃO E PROJEÇÃO EM AR E SQL;
• JUNÇÃO EM AR E SQL;
• JUNÇÃO NATURAL EM AR E SQL;
• EXERCICIOS
NOTAÇÃO DA ALGEBRA
RELACIONAL
- Letras do final do alfabeto para denotar
relações (R, S, T etc)
- Letras do inicio do alfabeto para denotar
atributos (A, B, C etc)
- Letra grega (téta) é usada para denotar um
dos seis operadores de comparação:

NOTAÇÕES EM SQL
- Letras do final do alfabeto para denotar
TABELAS (R, S, T etc)
- Letras do inicio do alfabeto para denotar
CAMPOS (A, B, C etc)
- Será utilizado seis operadores de comparação
(=, >, <, >=, <=, <>)
UNIÃO EM AR
• : é uma relação que contém as tuplas que estão em
R, em S ou em ambas; se uma tupla está presente em R e
em S, ela só aparece uma vez na união.
• Esta operação primitiva também requer como operandos
tabelas união-compatíveis. Produz como resultado uma
tabela que contém todas as linhas da primeira tabela
seguidas de todas as linhas da segunda tabela. A tabela
resultante possui a mesma quantidade de colunas que as
tabelas originais, e tem um número de linhas que é no
máximo igual à soma das linhas das tabelas fornecidas
como operandos, já que as linhas que são comuns a ambas
as tabelas aparecem uma única vez no resultado.
SR
UNIÃO EM AR E SQL
SQL> SELECT * FROM A
2 UNION
3 SELECT * FROM B
SR é a relação que
contém as tuplas que
estão em ambas R e S.
INTERSECÇÃO EM AR E
SQL
• :é a relação que
contém as tuplas que estão
em ambas R e S.
SQL> SELECT * FROM A
2 INTERSECT
3 SELECT * FROM B
SR
DIFERENÇA EM AR E SQL
R – S:contém as tuplas que
estão em R porém não estão
em S. Observe que R – S é
diferente de S – R
SQL> SELECT * FROM A
2 MINUS
3 SELECT * FROM B
OBS: FUNCIONA SOMENTE NO
BANCO DE DADOS ORACLE
DIFERENÇA EM AR E SQL
R – S:contém as tuplas que
estão em R porém não estão
em S. Observe que R – S é
diferente de S – R
SELECT * FROM A
WHERE A + B NOT IN
(SELECT A + B FROM B)
OBS: NO SQL SERVER DEVEMOS UTILIZAR O
RECURSO DE CONCATENAÇÃO DE COLUNAS PARA
FAZER ESSA COMPARAÇÃO (SEM TER CHAVES)
EXEMPLO PARA ESSAS
OPERAÇÕES EM AR E SQL
SQL> SELECT * FROM R;
SQL> SELECT * FROM S;
EXEMPLO PARA ESSAS
OPERAÇÕES EM AR E SQL
SQL> SELECT * FROM R
2 UNION
3 SELECT * FROM S;
SQL> SELECT * FROM R
2 INTERSECT
3 SELECT * FROM S;
SQL> SELECT * FROM R
2 MINUS
3 SELECT * FROM S;
OBS: MINUS FUNCIONA
SOMENTE NO BANCO DE DADOS
ORACLE
PROJEÇÃO EM AR E SQL
SQL> SELECT * FROM R;
SQL> SELECT * FROM S;
SQL> SELECT DISTINCT A
2 FROM S;






5
3
)(SA
EXEMPLO DE PROJEÇÃO
EM AR E SQL
Em AR:
NmFunc (funcionário)
Em SQL:
SQL> SELECT NMFUNC
2 FROM FUNCIONARIO;

EXEMPLO DE SELEÇÃO
(letra grega sigma)
SQL> SELECT * FROM R;
SQL> SELECT * FROM S;
SQL> SELECT *
2 FROM S
3 WHERE B >= 6;








85
65
(S)6B
EXEMPLO DE SELEÇÃO
(OU RESTRIÇÃO) E
PROJEÇÃO EM AR E SQL
SQL> SELECT * FROM R;
SQL> SELECT * FROM S;
SQL> SELECT B
2 FROM S
3 WHERE B >= 6;






 8
6
6(S))BσB(
EXEMPLO DE SELEÇÃO
(OU RESTRIÇÃO) EM AR E
SQL
Em AR:
Sexo = ‘M’ (funcionário)
Em SQL:
SQL> SELECT *
2 FROM FUNCIONARIO
3 WHERE SEXO = ‘M’;

EXEMPLO DE SELEÇÃO
(OU RESTRIÇÃO) E
PROJEÇÃO EM AR E SQL
Em AR:
NmFunc, DtAdm ( Sexo = ‘F’ (funcionário))
Em SQL:
SQL> SELECT NMFUNC, DTADM
2 FROM FUNCIONARIO
3 WHERE SEXO = ‘F’;

PRODUTO CARTESIANO
EM AR E SQL
SQL> SELECT * FROM R;
SQL> SELECT * FROM S;
SQL> SELECT *
2 FROM R, S;























8543
6543
4343
8521
6521
4321
S.BS.AR.BR.A
SxR
EXEMPLO DE PRODUTO
CARTESIANO COM
SELEÇÃO E PROJEÇÃO EM
AR E SQL
Em AR:
Ex.: NmFunc, DtAdm, VrSalário ( funcionário.CdCargo =
cargo.CdCargo (funcionário x cargo))
Em SQL:
SQL> SELECT NNFUNC, DTADM, VRSALARIO
2 FROM FUNCIONARIO,CARGO
3 WHERE FUNCIONARIO.CDCARGO = CARGO.CDCARGO

EXEMPLO DE PRODUTO
CARTESIANO COM
SELEÇÃO E PROJEÇÃO EM
AR E SQL
Em AR:
Em SQL:
SQL> SELECT NNFUNC, DTADM, VRSALARIO
2 FROM FUNCIONARIO,CARGO
3 WHERE FUNCIONARIO.CDCARGO = CARGO.CDCARGO
4 AND SEXO = ‘M’;
JUNÇÃO EM AR E SQL
Então,
R | X | T
R.B T.D
Terá o valor:
Em SQL:
SQL> SELECT *
2 FROM R,T
3 WHERE R.B >= T.D;











12343
12321
.. DCBTBRA
JUNÇÃO NATURAL EM AR
E SQL
Exemplo: a junção das tabelas R e T acima, sobre
as colunas R.B e T.B seria expressa por:
Em SQL: SQL> SELECT *
2 FROM R
3 NATURAL JOIN T;











8743
6221
DCBA
T|X|R






















12343
87443
62243
12321
87421
62221
TDTCTBRBA
OBS: FUNCIONA SOMENTE NO
BANCO DE DADOS ORACLE
JUNÇÃO NATURAL EM AR
E SQL
Exemplo: a junção das tabelas R e T acima, sobre as
colunas R.B e T.B seria expressa por:
Em SQL: SELECT R.A, T.B, T.C, T.D
FROM R
INNER JOIN T
ON R.B = T.B











8743
6221
DCBA
T|X|R






















12343
87443
62243
12321
87421
62221
TDTCTBRBA
OBS: No SQL SERVER, não há
reconhecimento de columas
automáticas, sendo necessário
fazer a ligação manual das
chaves e especificação de
colunas;
Exercícios – Parte 1 EM
SQL
1 - Todos os funcionários do departamento ‘D1’.
2 - O nome e a matrícula de todos os funcionários do
departamento ‘D1’.
3 - A matrícula e o nome do respectivo departamento de
todos os funcionários.
Exercícios – Parte 1
4 - O nome dos funcionários que ganham mais de
$500.
5 - O ramal do funcionário ‘ANA SILVEIRA’.
6 - Os nomes de todos os funcionários com cargo
de ‘MECANICO’.
7 - Os nomes de todos os funcionários que
trabalham no mesmo departamento que ‘JOSE
NOGUEIRA’.
8 - Os nomes dos departamentos que possuem
tanto funcionários como funcionárias.
Exercícios – Parte 2 EM
SQL
Considere as Relações F e D que representam os
CEs Funcionários e Dependentes, respectivamente,
com o seguinte esquema simplificado: F(fumf,
nomef) e D(numf, nomef, par), onde numf: número
do funcionário, nomef: nome do funcionário,
nomed: nome do dependnete e par: parentesco,
que pode ser um dentre: “filho”, “filha”, “esposa/o”
etc. Observe que em D, numf é a chave estrangeira
que referencia a chave primária numf de F. Abaixo é
mostrada uma possível instância dessas relações:
Exercícios – Parte 2
Vamos obter agora a junção natural F | x | D (ela
vai usar a coluna numf para junção)
Exercícios – Parte 2
Observe que a junção natural apresenta para
cada funcionário que possui dependentes, os
dados do funcionário e dos seus dependentes.
Como o funcionário 04 não possui dependentes,
ele não aparece no resultado da junção. Vamos
agora obter expressões da álgebra relacional
que respondem as seguintes consultas:
Exercícios – Parte 2
1. Quais os nomes e parentescos de todos os
dependentes?
2. Quais os funcionários(numero de) possuem
dependentes filhas?
3. Quais funcionários não possuem dependentes?
4. De os nomes dos funcionários que possuem algum
dependente.
5. Dê o nome de cada funcionário que possui uma
dependente chamada Alice
6. Quais funcionários possuem mais de um dependente?

BDI - Aula 09 - SQL e Algebra Relacional

  • 1.
    Rodrigo Kiyoshi Saito/ rodrigok@anchieta.br BANCO DE DADOS I
  • 2.
    Tópicos abordados • RELACIONANDOSQL COM ALGEBRA RELACIONAL; • NOTAÇÃO DA ALGEBRA RELACIONAL; • NOTAÇÕES EM SQL; • UNIÃO EM AR E SQL; • INTERSECÇÃO EM AR E SQL; • DIFERENÇA EM AR E SQL;
  • 3.
    Tópicos abordados • EXEMPLOPARA ESSAS OPERAÇÕES EM AR E SQL; • PROJEÇÃO EM AR E SQL; • EXEMPLO DE SELEÇÃO EM AR E SQL; • EXEMPLO DE SELEÇÃO (OU RESTRIÇÃO) E PROJEÇÃO EM AR E SQL; • PRODUTO CARTESIANO EM AR E SQL;
  • 4.
    Tópicos abordados • EXEMPLODE PRODUTO CARTESIANO COM SELEÇÃO E PROJEÇÃO EM AR E SQL; • JUNÇÃO EM AR E SQL; • JUNÇÃO NATURAL EM AR E SQL; • EXERCICIOS
  • 5.
    NOTAÇÃO DA ALGEBRA RELACIONAL -Letras do final do alfabeto para denotar relações (R, S, T etc) - Letras do inicio do alfabeto para denotar atributos (A, B, C etc) - Letra grega (téta) é usada para denotar um dos seis operadores de comparação: 
  • 6.
    NOTAÇÕES EM SQL -Letras do final do alfabeto para denotar TABELAS (R, S, T etc) - Letras do inicio do alfabeto para denotar CAMPOS (A, B, C etc) - Será utilizado seis operadores de comparação (=, >, <, >=, <=, <>)
  • 7.
    UNIÃO EM AR •: é uma relação que contém as tuplas que estão em R, em S ou em ambas; se uma tupla está presente em R e em S, ela só aparece uma vez na união. • Esta operação primitiva também requer como operandos tabelas união-compatíveis. Produz como resultado uma tabela que contém todas as linhas da primeira tabela seguidas de todas as linhas da segunda tabela. A tabela resultante possui a mesma quantidade de colunas que as tabelas originais, e tem um número de linhas que é no máximo igual à soma das linhas das tabelas fornecidas como operandos, já que as linhas que são comuns a ambas as tabelas aparecem uma única vez no resultado. SR
  • 8.
    UNIÃO EM ARE SQL SQL> SELECT * FROM A 2 UNION 3 SELECT * FROM B SR é a relação que contém as tuplas que estão em ambas R e S.
  • 9.
    INTERSECÇÃO EM ARE SQL • :é a relação que contém as tuplas que estão em ambas R e S. SQL> SELECT * FROM A 2 INTERSECT 3 SELECT * FROM B SR
  • 10.
    DIFERENÇA EM ARE SQL R – S:contém as tuplas que estão em R porém não estão em S. Observe que R – S é diferente de S – R SQL> SELECT * FROM A 2 MINUS 3 SELECT * FROM B OBS: FUNCIONA SOMENTE NO BANCO DE DADOS ORACLE
  • 11.
    DIFERENÇA EM ARE SQL R – S:contém as tuplas que estão em R porém não estão em S. Observe que R – S é diferente de S – R SELECT * FROM A WHERE A + B NOT IN (SELECT A + B FROM B) OBS: NO SQL SERVER DEVEMOS UTILIZAR O RECURSO DE CONCATENAÇÃO DE COLUNAS PARA FAZER ESSA COMPARAÇÃO (SEM TER CHAVES)
  • 12.
    EXEMPLO PARA ESSAS OPERAÇÕESEM AR E SQL SQL> SELECT * FROM R; SQL> SELECT * FROM S;
  • 13.
    EXEMPLO PARA ESSAS OPERAÇÕESEM AR E SQL SQL> SELECT * FROM R 2 UNION 3 SELECT * FROM S; SQL> SELECT * FROM R 2 INTERSECT 3 SELECT * FROM S; SQL> SELECT * FROM R 2 MINUS 3 SELECT * FROM S; OBS: MINUS FUNCIONA SOMENTE NO BANCO DE DADOS ORACLE
  • 14.
    PROJEÇÃO EM ARE SQL SQL> SELECT * FROM R; SQL> SELECT * FROM S; SQL> SELECT DISTINCT A 2 FROM S;       5 3 )(SA
  • 15.
    EXEMPLO DE PROJEÇÃO EMAR E SQL Em AR: NmFunc (funcionário) Em SQL: SQL> SELECT NMFUNC 2 FROM FUNCIONARIO; 
  • 16.
    EXEMPLO DE SELEÇÃO (letragrega sigma) SQL> SELECT * FROM R; SQL> SELECT * FROM S; SQL> SELECT * 2 FROM S 3 WHERE B >= 6;         85 65 (S)6B
  • 17.
    EXEMPLO DE SELEÇÃO (OURESTRIÇÃO) E PROJEÇÃO EM AR E SQL SQL> SELECT * FROM R; SQL> SELECT * FROM S; SQL> SELECT B 2 FROM S 3 WHERE B >= 6;        8 6 6(S))BσB(
  • 18.
    EXEMPLO DE SELEÇÃO (OURESTRIÇÃO) EM AR E SQL Em AR: Sexo = ‘M’ (funcionário) Em SQL: SQL> SELECT * 2 FROM FUNCIONARIO 3 WHERE SEXO = ‘M’; 
  • 19.
    EXEMPLO DE SELEÇÃO (OURESTRIÇÃO) E PROJEÇÃO EM AR E SQL Em AR: NmFunc, DtAdm ( Sexo = ‘F’ (funcionário)) Em SQL: SQL> SELECT NMFUNC, DTADM 2 FROM FUNCIONARIO 3 WHERE SEXO = ‘F’; 
  • 20.
    PRODUTO CARTESIANO EM ARE SQL SQL> SELECT * FROM R; SQL> SELECT * FROM S; SQL> SELECT * 2 FROM R, S;                        8543 6543 4343 8521 6521 4321 S.BS.AR.BR.A SxR
  • 21.
    EXEMPLO DE PRODUTO CARTESIANOCOM SELEÇÃO E PROJEÇÃO EM AR E SQL Em AR: Ex.: NmFunc, DtAdm, VrSalário ( funcionário.CdCargo = cargo.CdCargo (funcionário x cargo)) Em SQL: SQL> SELECT NNFUNC, DTADM, VRSALARIO 2 FROM FUNCIONARIO,CARGO 3 WHERE FUNCIONARIO.CDCARGO = CARGO.CDCARGO 
  • 22.
    EXEMPLO DE PRODUTO CARTESIANOCOM SELEÇÃO E PROJEÇÃO EM AR E SQL Em AR: Em SQL: SQL> SELECT NNFUNC, DTADM, VRSALARIO 2 FROM FUNCIONARIO,CARGO 3 WHERE FUNCIONARIO.CDCARGO = CARGO.CDCARGO 4 AND SEXO = ‘M’;
  • 23.
    JUNÇÃO EM ARE SQL Então, R | X | T R.B T.D Terá o valor: Em SQL: SQL> SELECT * 2 FROM R,T 3 WHERE R.B >= T.D;            12343 12321 .. DCBTBRA
  • 24.
    JUNÇÃO NATURAL EMAR E SQL Exemplo: a junção das tabelas R e T acima, sobre as colunas R.B e T.B seria expressa por: Em SQL: SQL> SELECT * 2 FROM R 3 NATURAL JOIN T;            8743 6221 DCBA T|X|R                       12343 87443 62243 12321 87421 62221 TDTCTBRBA OBS: FUNCIONA SOMENTE NO BANCO DE DADOS ORACLE
  • 25.
    JUNÇÃO NATURAL EMAR E SQL Exemplo: a junção das tabelas R e T acima, sobre as colunas R.B e T.B seria expressa por: Em SQL: SELECT R.A, T.B, T.C, T.D FROM R INNER JOIN T ON R.B = T.B            8743 6221 DCBA T|X|R                       12343 87443 62243 12321 87421 62221 TDTCTBRBA OBS: No SQL SERVER, não há reconhecimento de columas automáticas, sendo necessário fazer a ligação manual das chaves e especificação de colunas;
  • 26.
    Exercícios – Parte1 EM SQL 1 - Todos os funcionários do departamento ‘D1’. 2 - O nome e a matrícula de todos os funcionários do departamento ‘D1’. 3 - A matrícula e o nome do respectivo departamento de todos os funcionários.
  • 27.
    Exercícios – Parte1 4 - O nome dos funcionários que ganham mais de $500. 5 - O ramal do funcionário ‘ANA SILVEIRA’. 6 - Os nomes de todos os funcionários com cargo de ‘MECANICO’. 7 - Os nomes de todos os funcionários que trabalham no mesmo departamento que ‘JOSE NOGUEIRA’. 8 - Os nomes dos departamentos que possuem tanto funcionários como funcionárias.
  • 28.
    Exercícios – Parte2 EM SQL Considere as Relações F e D que representam os CEs Funcionários e Dependentes, respectivamente, com o seguinte esquema simplificado: F(fumf, nomef) e D(numf, nomef, par), onde numf: número do funcionário, nomef: nome do funcionário, nomed: nome do dependnete e par: parentesco, que pode ser um dentre: “filho”, “filha”, “esposa/o” etc. Observe que em D, numf é a chave estrangeira que referencia a chave primária numf de F. Abaixo é mostrada uma possível instância dessas relações:
  • 29.
    Exercícios – Parte2 Vamos obter agora a junção natural F | x | D (ela vai usar a coluna numf para junção)
  • 30.
    Exercícios – Parte2 Observe que a junção natural apresenta para cada funcionário que possui dependentes, os dados do funcionário e dos seus dependentes. Como o funcionário 04 não possui dependentes, ele não aparece no resultado da junção. Vamos agora obter expressões da álgebra relacional que respondem as seguintes consultas:
  • 31.
    Exercícios – Parte2 1. Quais os nomes e parentescos de todos os dependentes? 2. Quais os funcionários(numero de) possuem dependentes filhas? 3. Quais funcionários não possuem dependentes? 4. De os nomes dos funcionários que possuem algum dependente. 5. Dê o nome de cada funcionário que possui uma dependente chamada Alice 6. Quais funcionários possuem mais de um dependente?

Notas do Editor

  • #12 TROCAR PARA A VERSAO DO COMANDO EM SQL SERVER
  • #26 ADAPTAR PARA A VERSAO DO SQL SERVER