Buscar

Produto cartesiano em SQL - Banco de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Produto cartesiano em SQL	
APRESENTAÇÃO
Em uma sociedade movida pela informação, há uma crescente demanda pela manipulação de 
dados nos mais variados domínios de negócio. Para auxiliar nesse propósito, pode-se fazer uso 
de Sistemas de Gerenciamento de Banco de Dados (SGBD), para criar estratégias de 
armazenamento e recuperação de dados. Para implementação de consultas em banco de dados 
(escritas na linguagem SQL), precisa-se conhecer os fundamentos das operações da álgebra 
relacional.
Nesta Unidade de Aprendizagem, você aprenderá a formalização teórica para a operação 
produto cartesiano em álgebra relacional. Além disso, compreenderá como essa operação é 
utilizada em banco de dados relacionais. Por fim, verá alguns exemplos práticos de como a 
operação de produto cartesiano pode ser implementada no SGBD PostgreSQL.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever a operação de produto cartesiano em álgebra relacional.•
Exemplificar a operação de produto cartesiano em banco de dados relacional.•
Demonstrar a operação de produto cartesiano em SQL.•
DESAFIO
Muitos sistemas comerciais utilizam banco de dados relacionais para gerenciarem seus dados. 
Quando é necessário recuperar esses dados, pode-se fazer uso dos recursos da linguagem SQL, 
fundamentada nas operações da álgebra relacional.
A partir dos dados expostos, Tiago precisa que você retorne as seguintes relações:
I - Lista com a combinação de todas as vendas e clientes.
II - Lista com a combinação de todas as vendas e produtos onde a categoria Esporte é igual a 
“Basquete”.
III - Lista com a combinação de vendas e produtos, apresentando somente o código identificador 
do vendedor, nome do produto e quando a categoria Esporte é igual a “Tênis”.
IV - Lista com a combinação de vendas e produtos, apresentando todas as colunas de vendas e 
quando a categoria Esporte é igual a “Atletismo”.
Para cada item, você deve informar também quantas linhas e colunas serão geradas.
Observações: Utilize a sintaxe válida de SQL, ou seja, que sua consulta possa ser executada no 
SGBD PostgreSQL sem erros de interpretação. Considerando aqui as prévias criações das 
tabelas, inserção dos dados, e tudo que fosse necessário para operacionalizar as consultas reais.
INFOGRÁFICO
Há muitas operações relacionais da álgebra relacional em uso para o desenvolvimento de 
consultas em banco de dados relacionais. Conforme você for avançando nos estudos deste tema, 
verá que há muitas possibilidades de aplicação. Logo, a complexidade dessas consultas também 
pode aumentar, conforme as demandas forem exigindo mais condições e combinações entre 
essas operações. 
No Infográfico a seguir, você verá a comparação entre as operações de projeção, seleção e 
produto cartesiano e entenderá como pode combiná-las.
CONTEÚDO DO LIVRO
A álgebra relacional é composta por um conjunto de operações utilizadas para manipular 
relações como um todo. Uma dessas operações é o produto cartesiano. Trata-se de uma operação 
binária, que possibilita combinar informações a partir de duas ou mais relações. Sendo assim, 
esta é uma operação de suma importância para o desenvolvimento de consultas em banco de 
dados relacionais.
No capítulo Produto cartesiano em SQL, da obra Consultas em banco de dados, base teórica 
desta Unidade de Aprendizagem, você conhecerá a operação de produto cartesiano em álgebra 
relacional e sua relação com consultas em banco de dados relacionais. Além disso, alguns casos 
serão apresentados, para melhor ilustrar as possibilidades de uso com o SGBD PostgreSQL.
Boa leitura. 
CONSULTAS EM 
BANCO DE DADOS
Alessandra Maciel Paz Milani
Produto cartesiano em SQL
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Descrever a operação de produto cartesiano em álgebra relacional.
 � Exemplificar a operação de produto cartesiano em um banco de 
dados relacional.
 � Demonstrar a operação de produto cartesiano em SQL.
Introdução
Vivemos em uma sociedade cada dia mais orientada a dados, e aqueles 
indivíduos ou empresas que conseguirem extrair informação desses 
dados poderão exercer suas atividades de maneira mais eficaz, o que 
pode ampliar suas capacidades para tomadas de decisão mais assertivas. 
Por conseguinte, há uma grande demanda por sistemas que permitem 
o armazenamento e a recuperação desses dados. Atendendo a esse 
propósito, existem muitas soluções para sistemas de gerenciamento de 
banco de dados (SGBD), que possibilitam a realização de consultas por 
meio da linguagem padrão SQL (Structured Query Language). E, uma 
vez que os conceitos da álgebra relacional fazem parte dos fundamentos 
da SQL e de como os SGBD comerciais processarão as consultas que 
desenvolvemos, torna-se imprescindível entendermos o funcionamento 
das operações da álgebra relacional.
Neste capítulo, você conhecerá a operação de produto cartesiano 
em álgebra relacional, conseguirá identificar a operação de produto car-
tesiano em bancos de dados relacionais por meio de diversos exemplos 
conceituais e, por fim, compreenderá como implementar essa operação 
em SQL no SGBD PostgreSQL.
1 Produto cartesiano em álgebra relacional
Pelo fato de a álgebra relacional oferecer fundamentos para manipular con-
juntos de dados em bancos de dados relacionais, quando necessitamos buscar 
informações contidas em duas ou mais tabelas, podemos utilizar sua operação 
produto cartesiano, que resultará, por sua vez, em uma relação composta pela 
combinação de todas as tuplas das relações informadas como entrada. Assim, 
essa operação produzirá novas tuplas ao concatenar todas as combinações de 
tuplas possíveis de n relações básicas (ELMASRI; NAVATHE, 2011).
A operação produto cartesiano faz parte da lista de operações de conjuntos 
e é classificada como uma operação binária. Logo, também pode ser explicada 
como a operação que produz um novo conjunto resultante da multiplicação 
de conjuntos. E, seguindo uma definição mais formal, como em Date (2016), 
o produto cartesiano de dois conjuntos s1 e s2 (s1 × s2) é o conjunto de todos 
os pares ordenados de elementos <x1, x2>, de modo que o primeiro elemento 
do par (x1) seja um elemento de s1 e o segundo elemento do par (x2) seja 
um elemento de s2. Note que essa definição pode ser aplicada para qualquer 
número de conjuntos.
Outra maneira de formalizar a operação de produto cartesiano, representada 
pelo ×, seria utilizando a seguinte expressão:
<Relação A> × <Relação B>
Então, por exemplo, considerando uma relação de Funcionários com essa 
estrutura e esses elementos:
Funcionários = {matrícula, nome, endereço, data nascimento, 
estado civil}
Funcionários = {< 101, Ana, Rua Florida, 12/05/1970, Casado >,
 < 102, Carlos, Rua Tulipa, 22/06/1990, Solteiro >,
 < 103, João, Avenida Flor, 01/02/1975, Casado >,
 < 104, Rubens, Rua Violeta, 02/10/1980, Casado >}
Produto cartesiano em SQL2
E outra relação de Departamentos, contendo estes elementos:
Departamentos = {código, descrição}
Departamentos = {< 1, RH >,
 < 2, Vendas >}
Suponha que seja necessário realizar uma consulta que apresente todas 
as informações combinadas para Funcionários e Departamentos. 
A formalização dessa operação de produto cartesiano poderá será representada 
pela expressão:
Funcionários × Departamentos
Por conseguinte, o retorno dessa operação será uma nova relação, que iden-
tificaremos como Func_Depto e que terá a seguinte estrutura e elementos:
Func _ Depto = {matrícula, nome, endereço, data nascimento, 
estado civil, código, descrição}
Func _ Depto = {< 101, Ana, Rua Florida, 12/05/1970, Casado, 1, 
RH >,
 < 101, Ana, Rua Florida, 12/05/1970, Casado, 2, Vendas >,
 < 102, Carlos, Rua Tulipa, 22/06/1990, Solteiro, 1, RH >,
 < 102, Carlos, Rua Tulipa, 22/06/1990, Solteiro, 2, 
Vendas >,
 < 103, João, Avenida Flor, 01/02/1975, Casado, 1, RH >,< 103, João, Avenida Flor, 01/02/1975, Casado, 2, Vendas >,
 < 104, Rubens, Rua Violeta, 02/10/1980, Casado, 1, RH >,
 < 104, Rubens, Rua Violeta, 02/10/1980, Casado, 2, 
Vendas >}
Na Figura 1, você pode encontrar uma representação visual desse processo 
da operação produto cartesiano aplicada ao nosso exemplo de Funcioná-
rios e Departamentos: no lado esquerdo, são apresentadas as relações 
de funcionários e departamentos, utilizadas como entrada na operação; e, 
à direita, são apresentadas a saída, a relação resultante Func_Depto, e 
suas respectivas tuplas geradas de acordo com a combinação entre as tuplas 
existentes nas relações de entrada.
3Produto cartesiano em SQL
Figura 1. Representação visual para a operação produto cartesiano utilizando como exem-
plos as relações (entrada) Funcionários e Departamentos e a nova relação (saída) 
Func_Depto.
Ainda, segundo Elmasri e Navathe (2011), a operação produto cartesiano 
pode ser encontrada com outros termos, como “produto cruzado” e “junção 
cruzada”, devendo, portanto, ser entendidos como sinônimos. Além disso, 
cabe lembrar, que nesse contexto de estudo, você pode entender os seguintes 
grupos de palavras como sinônimos:
 � relação, conjunto e tabela;
 � tuplas, registros e linhas;
 � atributos, colunas ou campos.
Por fim, considerando uma representação de relações em formato tabular, 
o conceito que vimos aqui para operação do produto cartesiano pode ser ilus-
trado da seguinte maneira: a quantidade de linhas resultantes corresponderá 
à multiplicação da quantidade de linhas em cada tabela informada como 
entrada. Já o número resultante de colunas será a soma da quantidade de 
colunas existentes em cada tabela. A seguir, continuaremos a explorar essa 
operação apresentando novos exemplos em formato tabular, como o utilizado 
em bancos de dados relacionais.
Produto cartesiano em SQL4
Exemplos da operação produto cartesiano 
em tabelas relacionais
A partir de agora, você verá alguns exemplos da operação produto carte-
siano aplicada em tabelas de bancos de dados relacionais. Iniciaremos com 
um caso simples: uma loja com duas tabelas, uma para armazenar dados de 
clientes (cliente) e outra para o registro de pedidos realizados (pedido). 
Na Figura 2, é mostrado o efeito da aplicação da operação produto cartesiano 
considerando essas duas tabelas de entrada (cliente × pedido) e a nova 
relação produzida (cliente_pedido).
Figura 2. Exemplo da operação produto cartesiano aplicada nas tabelas cliente e 
pedido. 
Agora, considere outro caso, o de uma instituição de ensino com três 
tabelas: uma que contém dados de alunos (Quadro 1), com 5 linhas e 
6 colunas; outra para armazenar dados de disciplinas (Quadro 2), com 
3 linhas e 4 colunas; e uma terceira para armazenar dados de professores 
(Quadro 3), com 2 linhas e 4 colunas.
Tendo em conta a necessidade da aplicação da operação do produto car-
tesiano para essas tabelas na expressão disciplinas × alunos, pense 
nas seguintes questões: como os registros são apresentados na nova relação? 
Quais colunas aparecem primeiro? Qual o total de linhas geradas? Depois, 
confira no Quadro 4 o resultado esperado e veja se conseguiu realizar essa 
mesma operação mentalmente.
5Produto cartesiano em SQL
ID_
ALUNO
NOME
DATA_
NASC
EMAIL
SIT_
MATR
ID_
DISCIPLINA
10001 João 
Gustavo Rico
12/04/1990 jg_rico@
mail.com
0 1002
10002 Luís Tadeu 
Marciano
26/08/1999 tadeum@
mail.com
1 1001
10003 Otávio 
Nunes 
Santos
05/05/1998 o_nunes@
mail.com
1 1002
10004 Marta 
Azevedo
10/06/1992 m.azevedo@
mail.com
1 1003
10005 Michele 
Lima Toledo
22/12/1995 mi_lt@
mail.com
0 1001
Quadro 1. Tabela para representação da relação de alunos
ID_DISCIPLINA DESC_DISC ID_PROFESSOR PERÍODO
1001 Estatística I 101 2020/1
1002 Cálculo Básico 102 2020/1
1003 Cálculo 
Avançado
102 2020/2
Quadro 2. Tabela para representação da relação de disciplinas
ID_PROFESSOR NOME TÍTULO DEPARTAMENTO
101 Jose Borges Mestrado Estatística
102 Mariana Tedesco Doutorado Matemática
Quadro 3. Tabela para representação da relação de professores
Produto cartesiano em SQL6
ID
_
D
IS
CI
PL
IN
A
D
ES
C
_
D
IS
C
ID
_
PR
O
FE
SS
O
R
PE
RÍ
O
D
O
ID
_
A
LU
N
O
N
O
M
E
D
AT
A
_
N
A
SC
EM
A
IL
SI
T_
M
AT
R
ID
_
D
IS
CI
PL
IN
A
10
01
Es
ta
tís
-
tic
a 
I
10
1
20
20
/1
10
00
1
Jo
ão
 G
us
-
ta
vo
 R
ic
o
19
90
-
04
-1
2
Jg
_r
ic
o@
m
ai
l.c
om
0
10
02
10
01
Es
ta
tís
-
tic
a 
I
10
1
20
20
/1
10
00
2
Lu
ís 
Ta
de
u 
M
ar
ci
an
o
19
99
-
08
-2
6
ta
de
um
@
m
ai
l.c
om
1
10
01
10
01
Es
ta
tís
-
tic
a 
I
10
1
20
20
/1
10
00
3
O
tá
vi
o 
N
u-
ne
s S
an
to
s
19
98
-
05
-0
5
o_
nu
ne
s@
m
ai
l.c
om
1
10
02
10
01
Es
ta
tís
-
tic
a 
I
10
1
20
20
/1
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
01
Es
ta
tís
-
tic
a 
I
10
1
20
20
/1
10
00
4
M
ic
he
le
 
Li
m
a 
To
le
do
19
95
-
12
-2
2
m
i_
lt@
m
ai
l.c
om
0
10
01
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
1
Jo
ão
 G
us
-
ta
vo
 R
ic
o
19
90
-
04
-1
2
Jg
_r
ic
o@
m
ai
l.c
om
0
10
02
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
2
Lu
ís 
Ta
de
u 
M
ar
ci
an
o
19
99
-
08
-2
6
ta
de
um
@
m
ai
l.c
om
1
10
01
Q
ua
dr
o 
4.
 T
ab
el
a 
pa
ra
 re
pr
es
en
ta
çã
o 
da
 n
ov
a 
re
la
çã
o 
di
sc
_a
lu
n,
 re
su
lta
nt
e 
da
 o
pe
ra
çã
o 
pr
od
ut
o 
ca
rt
es
ia
no
 d
isc
ip
lin
as
 ×
 a
lu
no
s
(C
on
tin
ua
)
7Produto cartesiano em SQL
ID
_
D
IS
CI
PL
IN
A
D
ES
C
_
D
IS
C
ID
_
PR
O
FE
SS
O
R
PE
RÍ
O
D
O
ID
_
A
LU
N
O
N
O
M
E
D
AT
A
_
N
A
SC
EM
A
IL
SI
T_
M
AT
R
ID
_
D
IS
CI
PL
IN
A
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
3
O
tá
vi
o 
N
u-
ne
s S
an
to
s
19
98
-
05
-0
5
o_
nu
ne
s@
m
ai
l.c
om
1
10
02
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
4
M
ic
he
le
 
Li
m
a 
To
le
do
19
95
-
12
-2
2
m
i_
lt@
m
ai
l.c
om
0
10
01
10
03
Cá
lc
ul
o 
Av
an
-
ça
do
10
2
20
20
/2
10
00
1
Jo
ão
 G
us
-
ta
vo
 R
ic
o
19
90
-
04
-1
2
Jg
_r
ic
o@
m
ai
l.c
om
0
10
02
10
03
Cá
lc
ul
o 
Av
an
-
ça
do
10
2
20
20
/2
10
00
2
Lu
ís 
Ta
de
u 
M
ar
ci
an
o
19
99
-
08
-2
6
ta
de
um
@
m
ai
l.c
om
1
10
01
10
03
Cá
lc
ul
o 
Av
an
-
ça
do
10
2
20
20
/2
10
00
3
O
tá
vi
o 
N
u-
ne
s S
an
to
s
19
98
-
05
-0
5
o_
nu
ne
s@
m
ai
l.c
om
1
10
02
Q
ua
dr
o 
4.
 T
ab
el
a 
pa
ra
 re
pr
es
en
ta
çã
o 
da
 n
ov
a 
re
la
çã
o 
di
sc
_a
lu
n,
 re
su
lta
nt
e 
da
 o
pe
ra
çã
o 
pr
od
ut
o 
ca
rt
es
ia
no
 d
isc
ip
lin
as
 ×
 a
lu
no
s
(C
on
tin
ua
)
(C
on
tin
ua
çã
o)
Produto cartesiano em SQL8
ID
_
D
IS
CI
PL
IN
A
D
ES
C
_
D
IS
C
ID
_
PR
O
FE
SS
O
R
PE
RÍ
O
D
O
ID
_
A
LU
N
O
N
O
M
E
D
AT
A
_
N
A
SC
EM
A
IL
SI
T_
M
AT
R
ID
_
D
IS
CI
PL
IN
A
10
03
Cá
lc
ul
o 
Av
an
-
ça
do
10
2
20
20
/2
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
Q
ua
dr
o 
4.
 T
ab
el
a 
pa
ra
 re
pr
es
en
ta
çã
o 
da
 n
ov
a 
re
la
çã
o 
di
sc
_a
lu
n,
 re
su
lta
nt
e 
da
 o
pe
ra
çã
o 
pr
od
ut
o 
ca
rt
es
ia
no
 d
isc
ip
lin
as
 ×
 a
lu
no
s
(C
on
tin
ua
çã
o)
9Produto cartesiano em SQL
Como você pôde observar no Quadro 4, a apresentação seguiu a mesma 
ordem indicada na expressão, ou seja, primeiro todas as colunas da tabela 
disciplinas e, depois, as colunas correspondentes para a tabela alunos. 
Para a ordem dos registros (tuplas combinadas), primeiro considerou-se a 
primeira tupla da tabela disciplinas para combinar com as 5 tuplas da 
tabela alunos. Apenas depois disso, a segunda tupla de disciplinas foi 
também combinada com as mesmas tuplas da tabelaalunos.
A partir da atualização da demanda, agora é necessário também trazer 
informações combinadas com a tabela professores. Para isso, uma nova 
expressão para representar essa operação de produto cartesiano é formulada: 
disciplinas × alunos × professores. Você consegue prever 
qual será o resultado? 
A nova relação resultante dessa operação produto cartesiano (discipli-
nas × alunos × professores) retornará uma nova relação contendo 
30 registros e 14 colunas. No Quadro 5, está uma amostra das combinações 
projetadas considerando somente a aluna de nome “Marta Azevedo”. 
A seguir, apresentamos como seria a expressão em álgebra relacional ao 
compormos essa operação de seleção:
σ alunos.nome = Marta Azevedo (disciplinas × alunos 
× professores)
Com esses exemplos, foi possível verificar a aplicação da operação produto 
cartesiano em tabelas, de maneira a combinar o máximo de informações possí-
veis para as tabelas envolvidas. No próximo tópico, você continuará explorando 
a operação produto cartesiano, mas por meio de exemplos implementados na 
linguagem SQL, além de observar como ela pode ser combinada com outras 
operações de álgebra relacional.
Produto cartesiano em SQL10
ID_DISCIPLINA
DESC_DISC
ID_PROFESSOR
PERIODO
ID_ALUNO
NOME
DATA_NASC
EMAIL
SIT_MATR
ID_DISCIPLINA
ID_PROFESSOR
NOME
TITULO
DEPARTAMENTO
10
01
Es
ta
tís
tic
a 
I
10
1
20
20
/1
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
1
Jo
se
 
Bo
rg
es
M
es
tr
ad
o
Es
ta
tís
tic
a
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
1
Jo
se
 
Bo
rg
es
M
es
tr
ad
o
Es
ta
tís
tic
a
10
03
Cá
lc
ul
o 
Av
an
ça
do
10
2
20
20
/2
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
1
Jo
se
 
Bo
rg
es
M
es
tr
ad
o
Es
ta
tís
tic
a
10
01
Es
ta
tís
tic
a 
I
10
1
20
20
/1
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
2
M
ar
ia
na
 
Te
de
sc
o
D
ou
to
ra
do
M
at
em
át
ic
a
10
02
Cá
lc
ul
o 
Bá
sic
o
10
2
20
20
/1
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
2
M
ar
ia
na
 
Te
de
sc
o
D
ou
to
ra
do
M
at
em
át
ic
a
10
03
Cá
lc
ul
o 
Av
an
ça
do
10
2
20
20
/2
10
00
4
M
ar
ta
 
A
ze
ve
do
19
92
-
06
-1
0
m
.a
ze
ve
do
@
m
ai
l.c
om
1
10
03
10
2
M
ar
ia
na
 
Te
de
sc
o
D
ou
to
ra
do
M
at
em
át
ic
a
Q
ua
dr
o 
5.
 T
ab
el
a 
pa
ra
 re
pr
es
en
ta
çã
o 
da
 re
la
çã
o 
re
su
lta
nt
e 
pa
ra
 o
pe
ra
çã
o 
pr
od
ut
o 
ca
rt
es
ia
no
 d
e 
di
sc
ip
lin
as
 ×
 a
lu
no
s 
×
 p
ro
fe
ss
or
es
 c
om
bi
na
da
 c
om
 a
 o
pe
-
ra
çã
o 
se
le
çã
o,
 o
nd
e 
co
lu
na
 n
om
e 
da
 ta
be
la
 a
lu
no
s é
 ig
ua
l a
 M
ar
ta
 A
ze
ve
do
.
11Produto cartesiano em SQL
Implementação da operação produto 
cartesiano em SQL
Agora que já está familiarizado com a operação de produto cartesiano, veremos 
em mais detalhes como ela pode ser implementada na linguagem prática para 
o modelo relacional. Vale ressaltar que a linguagem SQL (Structured Query 
Language) foi desenvolvida com base em linguagens de consultas formais, 
entre elas a álgebra relacional. Na Figura 3, vemos como seria a implementa-
ção SQL correspondente ao exemplo da nova relação de disciplinas × 
alunos (ver Quadro 4).
Figura 3. Exemplo de problema a ser atendido com a operação produto cartesiano, ex-
pressão para álgebra relacional e esta convertida para SQL. 
A partir desse momento, usaremos em nossos exemplos o sistema de ge-
renciamento de banco de dados (SGBD) PostgreSQL. Para apresentação das 
execuções dos comandos de consulta e dos respectivos resultados, empre-
garemos o software gráfico pgAdmin, disponibilizado gratuitamente com o 
pacote de instalação do PostgreSQL.
Produto cartesiano em SQL12
Note ainda que, para esse exemplo funcionar, precisamos antes termos 
criado as tabelas alunos, disciplinas e professores. Depois disso, 
podemos inserir alguns registros de exemplo em cada uma delas, que seguirão 
a mesma estrutura de dados e tuplas apresentada anteriormente. Para imple-
mentação SQL, você pode considerar os seguintes comandos DDL (Data 
Definition Language) para criação dessas tabelas no banco de dados.
CREATE TABLE alunos (id _ aluno INT, nome VARCHAR(40), dt _ nasc 
DATE, email VARCHAR(20), sit _ matr INT, id _ disciplina INT);
CREATE TABLE disciplinas (id _ disciplina INT, desc _ disc VAR-
CHAR(40), id _ professor INT, periodo VARCHAR(20));
CREATE TABLE professores (id _ professor INT, nome VARCHAR(40), 
titulo VARCHAR(20), departamento VARCHAR(20));
A seguir, você pode conferir o comando SQL DML (Data Manipulation 
Language) utilizado para inserção de registros em cada tabela. No nosso 
exemplo, adicionamos os mesmos registros já apresentados nos Quadros 1 
(alunos), 2 (disciplinas) e 3 (professores), por isso não os repetimos 
integralmente aqui.
INSERT INTO alunos(id _ aluno, nome, dt _ nasc, email, sit _ matr, 
id _ disciplina)
VALUES (10001, 'João Gustavo Rico', TO _ DATE('12/04/1990','DD/MM/
YYYY'), 'jg _ rico@mail.com', 0, 1002);
INSERT INTO disciplinas(id _ disciplina, desc _ disc, id _ pro-
fessor, periodo)
VALUES (1001, 'Estatística I', 101, '2020/1');
INSERT INTO professores(id _ professor, nome, titulo, departamento)
VALUES (101, 'José Borges', 'Mestrado', 'Estatística');
13Produto cartesiano em SQL
Ao final desse processo, se executarmos uma consulta para ver todas as 
informações contidas nessas tabelas, teremos o retorno apresentado na Figura 4.
Figura 4. Exemplo das tabelas com registros de alunos, disciplinas e professores que foram 
implementadas no SGBD PostgreSQL.
Agora, confira na Figura 5 o detalhe da implementação da operação de 
produto cartesiano em SQL para o nosso problema de exemplo (o mesmo 
apresentado na Figura 3): no topo, aparece o comando SQL (linha 1 no Query 
Editor) para que sejam projetadas todas as colunas resultantes da operação 
produto cartesiano para as tabelas disciplinas e alunos; logo abaixo, 
com o título Data Output, consta a informação resultante dessa operação, ao 
todo 15 linhas e 10 colunas.
Produto cartesiano em SQL14
Figura 5. Implementação da operação produto cartesiano em SQL no SGBD PostgreSQL. 
Nesse caso, é realizada uma consulta para apresentar as informações contidas em duas 
tabelas, disciplinas e alunos.
Nessa consulta, estamos incluindo a palavra-chave CROSS JOIN, utilizada 
para especificar a operação produto cartesiano em SQL. Alternativamente, 
poderíamos escrever uma consulta simplesmente informando SELECT * 
FROM disciplinas, alunos. Ambas as opções retornarão o mesmo 
resultado, contudo a diferença reside no fato de que, ao indicar o CROSS 
JOIN, você deixará explícito a sua intenção é realizar a operação produto 
cartesiano para as tabelas envolvidas.
Como diferentes operações relacionais podem ser combinadas com a opera-
ção de produto cartesiano, iniciaremos fazendo a combinação com a operação 
projeção, utilizada para definir quais colunas de interesse devem retornar 
dentro da cláusula SELECT, em vez de trazer todas (“*”). 
Imagine que agora precisamos fazer a projeção das colunas id_disci-
plina, desc_disc para a tabela disciplinas, e nome, sit_matr e 
id_disciplina para a tabela alunos. Podemos criar a seguinte consulta 
SQL para atender a essa necessidade:
SELECT id _ disciplina, desc _ disc, nome, sit _ matr, 
id _ disciplina 
FROM disciplinas CROSS JOIN alunos
15Produto cartesiano em SQL
Porém, note que há colunas que repetem suas descrições nas tabelas, como 
nome para tabela professores e alunos. Então, se executarmos essa 
nova consulta, qual informação será recuperada?
Nenhuma, pois ela retornará um erro indicando que há colunas com refe-
rências ambíguas. Para evitarmos essetipo de conflito, na cláusula SELECT 
devemos adicionar a tabela de interesse antes da coluna, unindo a tabela e a 
coluna com um ponto, dentro de uma estratégia chamada de qualificador de 
nome, cuja implementação é bem simples, como no exemplo a seguir:
SELECT disciplinas.id _ disciplina, disciplinas.desc _ disc, 
alunos.nome, alunos.sit _ matr, alunos.id _ disciplina
FROM disciplinas CROSS JOIN alunos
O SQL tem um recurso que permite criarmos identificadores para as tabelas, 
que você pode entender como apelidos ou variáveis. Esses identificadores 
devem ser colocados na frente do nome da coluna, unificados por um ponto 
(na cláusula SELECT) e, depois, pelo nome da respectiva tabela (na cláusula 
FROM). Na Figura 6, podemos observar como fica a implementação da mesma 
consulta do exemplo anterior, mas agora utilizando esse recurso. Ainda, essa 
mesma declaração poderia ser feita utilizando a palavra reservada AS logo 
após o nome da tabela e antes da nova referência. Note que, na Figura 6, são 
apresentadas somente as 5 primeiras linhas do resultado para exemplificação, 
já que, ao todo, são 15 linhas resultantes para essa consulta.
Figura 6. Implementação da operação produto cartesiano em SQL no SGBD PostgreSQL. 
Nesse caso, está sendo projetada parte das colunas disponíveis para as tabelas disci-
plinas e alunos. Além disso, para evitar conflito na projeção das colunas de mesmo 
nome, foram introduzidas variáveis de intervalo para cada tabela. 
Produto cartesiano em SQL16
Antes, costumava-se referenciar o recurso exemplificado na Figura 6, para identificação 
das tabelas, como pseudônimo (ou alias, em inglês). Embora você possa encontrar 
algumas referências que empregam esse termo, ele está obsoleto (DATE, 2016). 
Então, assim como indicado por Ramarkrishnan e Gehrke (2011), esse recurso é 
definido como a introdução de uma variável de intervalo (ou range variable em inglês), 
sendo útil quando o mesmo nome de tabela aparece mais de uma vez na cláusula 
FROM e para prefixar os nomes das colunas na cláusula SELECT. Você pode conferir 
mais detalhes dessa explicação no Capítulo 5 do livro de Ramarkrishnan e Gehrke (2011).
Por fim, vamos combinar a operação seleção. Para isso, adicionaremos a 
cláusula WHERE ao comando SQL para que a consulta retorne apenas linhas 
que atendam à determinada condição, por exemplo, se quisermos recuperar 
apenas as informações da disciplina Cálculo Básico (que tem o código 
1002). Na Figura 7, aparecem tal implementação e o novo resultado para 
nossa consulta.
Figura 7. Implementação da operação produto cartesiano em SQL no SGBD PostgreSQL. 
Nesse caso, são apresentadas informações para as tabelas disciplinas e alunos. 
Foi adicionada uma condição para retornar somente informações referentes à disciplina 
Cálculo Básico.
17Produto cartesiano em SQL
Ao todo, retornaram 5 linhas para a consulta. Contudo, se precisarmos 
encontrar todos os alunos que estão matriculados nessa disciplina, como 
poderíamos ajustar essa consulta? Primeiro, você precisa saber que a coluna 
sit_matr da tabela alunos representa a situação do aluno, sendo o código 
1 atribuído para os ativos/matriculados, e 2 para os inativos/não matriculados. 
Dessa maneira, uma nova condição deve ser incluída para indicar essa nova 
necessidade (Figura 8, linha 5 do Query Editor).
Figura 8. Implementação da operação produto cartesiano em SQL no SGBD PostgreSQL. 
Nesse caso, são apresentadas informações para as tabelas disciplinas e alunos. 
Foi adicionada uma condição (operação seleção) para retornarem somente informações 
referentes à disciplina Cálculo Básico.
Na Figura 8, você pode observar que o resultado para a nova consulta 
apresenta 3 linhas. Mas esse resultado realmente atende ao nosso problema? 
Ainda não, pois, nessa construção, ao indicarmos a operação produto cartesiano 
com o CROSS JOIN, ainda estamos informando ao SGBD que queremos 
ver a combinação de todos os registros dessas tabelas que atendem às duas 
condições especificadas. Então, para ajustar a consulta de maneira a retornar 
somente os alunos matriculados na disciplina Cálculo Básico, uma al-
ternativa consiste em adicionar uma condição na cláusula WHERE para indicar 
que retorne somente os registros que tiverem o código 1002 para a coluna 
id_disciplina na tabela alunos. Dessa maneira, apenas uma linha 
retornará, correspondente ao aluno “Otávio Nunes Santos” (veja o exemplo da 
Figura 9a). Porém, vale ressaltar que, com isso, essa consulta agora apresenta 
duas condições quase idênticas para o código da disciplina, mas uma para 
tabela disciplinas e outra para alunos. 
Produto cartesiano em SQL18
Então, outra alternativa corresponde a adicionar uma condição que faça uma 
ligação entre os registros das tabelas envolvidas (veja o exemplo da Figura 9b, 
linha 3 no Query Editor). Imagine ainda que só pudesse buscar as informações 
com base no nome da disciplina, ou seja, sem saber o código correspondente, 
como você o faria? Isso porque, na nossa tabela alunos, apenas aparece 
o código da disciplina, e não a sua descrição. Você verá de maneira mais 
aprofundada o conceito de junção em outros capítulos desta disciplina. Para 
concluirmos o caso trabalhado aqui, na Figura 9 são apresentadas diferentes 
construções e resultados para exemplificação do que discutimos até agora.
Figura 9. Implementação da operação produto cartesiano em SQL no SGBD PostgreSQL. 
Nesse caso, são apresentadas diferentes consultas implementadas para as tabelas dis-
ciplinas e alunos. Nas consultas (a) e (b), as condições de seleção foram criadas 
de maneira satisfatória para atenderem a nossa questão, enquanto as consultas (C) e (D) 
retornam combinações dessas tabelas de maneira a não atender a nossa questão.
Nos exemplos da Figura 9, reduzimos as colunas projetadas para simplificar 
a visualização e a comparação entre os resultados. As consultas identificadas 
pelas letras (a) e (b) respondem à nossa pergunta: “Quais alunos estão matri-
culados na disciplina Cálculo Básico?”. Precisamos de uma lista que apresente 
o código da disciplina, sua descrição e o nome dos alunos. 
19Produto cartesiano em SQL
Para a consulta (c), informamos duas condições: (1) que o aluno precisa 
estar matriculado e (2) que o aluno precisa ter uma disciplina de código cor-
respondente a Cálculo Básico. Considerando essas duas condições, 
encontramos o aluno Otávio Nunes Santos na tabela alunos, mas, 
como não temos outra condição específica em relação à tabela disciplina, 
ou algo que faça uma ligação entre os registros dessas tabelas, realiza-se a 
operação produto cartesiano e produzem-se combinações para esse aluno com 
todas as disciplinas disponíveis (Estatística I, Cálculo Básico e 
Cálculo Avançado). Já na consulta (d), nossa questão não é atendida, pois 
foram retornados todos os alunos matriculados, e não apenas os da disciplina 
Cálculo Básico.
Elmasri e Navathe (2011) chamam a atenção para o fato de que a operação produto 
cartesiano deve ser utilizada com cautela, visto que geraremos todas as combinações de 
tuplas possíveis. E, como essa operação pode representar um custo de processamento 
adicional ao SGBD, devemos avaliar sua real necessidade.
Portanto, quando possível, indica-se a combinação de outras operações da álgebra 
relacional, como a projeção, a seleção e, especialmente, a junção. Assim, desenvolve-
remos consultas mais eficazes e que retornem as informações realmente necessárias.
Na prática, a operação de produto cartesiano é raramente utilizada de 
maneira isolada (ELMASRI; NAVATHE, 2011). Contudo, seu entendimento 
é fundamental tanto para avançar na compreensão de outras operações da 
álgebra relacional quanto para evitar implementações inadequadas nas con-
sultas, como esquecimento ou escrita incorreta, de condições que indiquem 
uma seleção válida ou um tipo de junção entre as tabelas.
Encerramos aqui o conteúdo planejado para a introdução à operação pro-
duto cartesiano da álgebra relacional, com exemplos aplicados emtabelas de 
bancos de dados relacionais e implementação de consultas na linguagem SQL.
Produto cartesiano em SQL20
DATE, J. The new relational database dictionary. [S. l.]: O’Reilly, 2016.
ELMASRI R.; NAVATHE, S. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2011.
RAMARKRISHNAM, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. 
Porto Alegre: AMGH, 2011.
Leituras recomendadas
MACHADO, F. N. R. Banco de dados: projeto e implementação. 3. ed. São Paulo: Érica, 2009.
MANNINO, M. V. Projeto, desenvolvimento de aplicações e administração de banco de 
dados. 3.ed. Porto Alegre: AMGH, 2008.
21Produto cartesiano em SQL
DICA DO PROFESSOR
Para realizar consultas em banco de dados relacionais, utiliza-se a linguagem SQL. Essa 
linguagem está fundamentada nos conceitos da álgebra relacional. Portanto, é importante 
entender como essas operações funcionam na teoria.
Nesta Dica do Professor, você verá alguns exemplos de como é computado o retorno das 
informações quando se aplica a operação de produto cartesiano sobre diferentes relações 
(conjuntos de dados).
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) As operações da álgebra relacional estão presentes nos fundamentos das soluções 
para Sistemas de Gerenciamento de Banco de Dados (SGBD) no que se refere à 
realização de consultas em bancos de dados relacionais. Segundo o conteúdo 
apresentado no capítulo Produto cartesiano em SQL, introduzido nessa unidade de 
aprendizagem, a definição da operação de produto cartesiano da álgebra relacional 
pode ser resumida da seguinte maneira:
A) É uma operação relacional que irá unir relações. Seus elementos serão compostos pela 
multiplicação das tuplas contidas nas duas relações de entrada.
B) É uma operação relacional que irá unir relações. Seus elementos serão compostos pela 
combinação de todas as tuplas contidas nas relações de entrada.
C) É uma operação relacional que irá produzir uma nova relação. Seus elementos serão 
compostos pela combinação de todas as tuplas contidas nas relações de entrada.
D) É uma operação relacional que irá produzir uma nova relação. Seus elementos serão 
compostos pela combinação de todas as tuplas contidas em duas relações de entrada.
E) É uma operação relacional que irá produzir uma nova relação. Seus elementos serão 
compostos pela combinação de todas as tuplas contidas em até três relações de entrada.
2) Considere que você é um analista de sistemas que recebeu a demanda para 
desenvolver uma consulta em um banco de dados relacional de uma biblioteca. Antes 
de criar a consulta SQL, você deve pensar na formalização da expressão em álgebra 
relacional para operação de produto cartesiano que recebe como entrada duas 
relações nomeadas Estantes e Livros. Cada relação tem a seguinte estrutura:
Estantes = {Número, Nome, Andar, Área}. 
Livros = {Código, Título, Ano, Autor, Estante}.
Considere ainda que essa consulta deve retornar somente os livros do ano de 2020. 
Além disso, você precisa apresentar a informação do andar e o título do livro.
Baseado nesse enunciado e no conteúdo visto nessa UA, indique a alternativa que 
apresenta a expressão da álgebra relacional formalizada corretamente para o 
problema apresentado.
A) π Estante, Livro (Ano = 2020 (Livros × Estantes)).
B) π (σ (Estantes × Livros)).
C) π Estante, Título (σ Ano = 2020 (Livros × Estantes)).
D) π Andar, Título (σ Ano = 2020 (Estantes × Livros)).
E) π Andar, Título (σ Ano (Estantes × Livros)).
Considere que você é um analista de sistemas que está desenvolvendo uma consulta 
SQL utilizando o SGBD PostgreSQL, onde precisará realizar a operação de produto 
cartesiano em duas tabelas criadas com os nomes “TesteA” e “TesteB”. 
Você informa algumas colunas de interesse para retornar os dados da tabela 
3) 
“TesteA” e outras colunas para “TesteB”, e nenhuma condição específica para 
seleção é informada. Contudo, ao executar a consulta criada utilizando o software 
gráfico pgAdmin do PostgreSQL, nenhum dado é retornado, mas sim uma mensagem 
de erro em referência à existência de ambiguidade nas colunas informadas para sua 
consulta. 
Indique a alternativa com uma explicação do porquê isso acontece e uma 
possibilidade adequada para resolução, conforme discutido em nosso material de 
estudo.
A) Pode ocorrer quando há tabelas com o mesmo nome. Para resolver, é preciso alterar a 
estrutura das colunas dessas tabelas e garantir que tenham nomes únicos.
B) Pode ocorrer quando há colunas com o mesmo nome em diferentes tabelas. Para resolver, 
é preciso identificar na cláusula SELECT a qual tabela cada coluna corresponde. 
C) Pode ocorrer quando há colunas com o mesmo nome em diferentes tabelas. Para resolver, 
é preciso identificar na cláusula FROM a qual tabela cada coluna corresponde. 
D) Pode ocorrer por descuido durante o desenvolvimento da consulta. Para resolver, é preciso 
identificar na cláusula WHERE a qual tabela cada coluna corresponde.
E) Pode ocorrer por descuido durante o desenvolvimento da consulta. Para resolver, é preciso 
renomear cada uma das tabelas conflitantes nas cláusulas SELECT e FROM.
Uma loja de produtos eletrônicos conta com um banco de dados onde há três tabelas. 
Uma delas armazena as informações dos fornecedores (total de 100 registros), outra 
as dos produtos (total de 2500 registros) e a terceira armazena as categorias (total de 
32 registros). Elas foram criadas com a seguinte estrutura:
CREATE TABLE fornecedores (id_fornecedor numeric, cnpj numeric, nome 
varchar(40), email varchar(20), telefone varchar(20), endereco varchar(40));
CREATE TABLE produtos (id_produto numeric, id_fornecedor numeric, 
4) 
id_categoria numeric, nome varchar(40));
CREATE TABLE categorias (id_categoria, setor numeric, nome varchar(40));
Considere que você precisa implementar a operação de produto cartesiano: 
categorias × produtos × fornecedores.
Indique a alternativa que apresenta (respectivamente) a quantidade de linhas e 
colunas esperadas na nova relação produzida.
A) 250.000 e 13.
B) 250.000 e 14.
C) 250.000 e 72.
D) 8.000.000 e 13.
E) 8.000.000 e 72.
Uma loja de produtos eletrônicos conta com um banco de dados onde há duas tabelas 
criadas para armazenar as informações dos fornecedores e produtos. Elas têm a 
seguinte estrutura:
CREATE TABLE fornecedores (id_fornecedor numeric, cnpj numeric, nome 
varchar(40), email varchar(20), endereco varchar(40));
CREATE TABLE produtos (id_produto numeric, id_fornecedor numeric, 
id_categoria numeric, nome varchar(40));
Considere que você é um analista de sistemas que precisa desenvolver uma consulta 
em SQL para essa loja, de maneira a apresentar as informações de nome e e-mail dos 
fornecedores combinadas com o nome do produto.
Indique a alternativa que apresenta uma sintaxe válida para operação de produto 
5) 
cartesiano em SQL que atenda as expectativas descritas no enunciado.
A) SELECT * FROM fornecedores CROSS JOIN produtos;
B) SELECT f.nome, p.nome FROM CROSS JOIN fornecedores AND produtos;
C) SELECT nome, email, nome FROM fornecedores f CROSS JOIN produtos p;
D) SELECT f.nome, f.email, p.nome FROM fornecedores f CROSS JOIN produtos p;
E) SELECT f.nome, f.email, p.nome FROM fornecedores CROSS JOIN produtos;
NA PRÁTICA
Para atender demandas por consultas em casos práticos durante o uso de sistemas comerciais, 
raramente se utiliza a operação de produto cartesiano isoladamente. Ela normalmente precisará 
ser combinada com outras operações básicas, como seleção e projeção.
Nessa Na Prática, você conhecerá um estudo de caso considerando a necessidade de uma 
empreendedora que está expandindo seus negócios para vendas pela Internet. Para planejar e 
executar sua campanha de fidelização dos clientes, ela precisa executar algumas consultas na 
sua base de dados relacional. Entre as operações utilizadas, está a produto cartesiano.
SAIBA MAIS
Para ampliar o seu conhecimento a respeito desse assunto,veja abaixo as sugestões do 
professor:
Álgebra relacional #06 - produto cartesiano
Nesse vídeo, Cláudio Campelo apresenta o conceito da operação produto cartesiano da álgebra 
relacional com exemplos variados. Entre os exemplos, você pode conferir como ficam as 
expressões para álgebra relacional quando concatenada à operação produto cartesiano com 
outras operações.
Conteúdo interativo disponível na plataforma de ensino!
SQL - álgebra relacional - operações fundamentais - conceitos básicos
Nesse site, você poderá ver seis operações da álgebra relacional explicadas de maneira 
resumida, um recurso interessante para comparar ou relembrar quais são essas operações 
fundamentais.
Conteúdo interativo disponível na plataforma de ensino!
Sistemas de gerenciamento de banco de dados
Para aprofundar seu conhecimento no assunto, confira o Capítulo 4, dedicado à álgebra e aos 
cálculos relacionais.
SQL cross join (em inglês)
Apresentação de um tutorial simples para implementação de consultas em SQL utilizando o 
comando CROSS JOIN. São cobertos exemplos, incluindo metáforas visuais, de como a 
operação produto cartesiano funciona. Esse site também apresenta vários outros tutorais dentro 
do escopo de implementação de consultas utilizando SQL.
Conteúdo interativo disponível na plataforma de ensino!

Outros materiais