Free CSS Button Css3Menu.com

Tutoriais » SQL » Produto Cartesiano »
Definindo:
ANTES de Definir... A Sintaxe do SQL passou por uma evolução ao longo do tempo.
Foram apresentados os Padrões da SQL nos anos 1986 (reconhecido pela ISO em 1987, por isso alguns citam ANSI/87), 1989, 1992, 1999, 2003, 2006.
Por esta questão da evolução da SQL é possível encontrar SGBDs 'aderindo' aos diferentes padrões da ANSI.
Entretanto, A ANSI/92 foi adotada como linguagem DML para vários SGBDs ao longo da década de 1990.
A versão ANSI/92 apresentou o OPERADOR JOIN que permita a implementação de junções Abertas e a Junção completa, juntamente com uma nova sintaxe para a Junção, entretanto o CROSS JOIN foi apresentado em 99 (SQL:1999) para unificar o modo de empralhamento de linhas com o operador JOIN.
Por isso, neste tutorial quando for apresentado um novo comando, apresentaremos no lado direito do comando, entre '[ ]' a citação da versão do padrão ANSI.
Agora sim,
Definindo:
Este comando coloca lado-a-lado cada tupla de uma tabela com todas as tuplas de outra tabela.
Em livros o termo 'lado-a-lado' pode ser escrito: EMPARELHAR.
Simbologia AR:
A X B
Sintaxe:
Citam-se a sintaxe de 87 e a de 99
SELECT * FROM funcionarios, departamentos [ANSI/87]
SELECT * FROM funcionarios CROSS JOIN departamentos [ANSI/99]

O comando vai colocar as estruturas das tabelas uma ao lado da outra.
Na hora de construir as tuplas os SGBDs usam modos diferentes:
A primeira tupla da tabela da esquerda ao lado de cada tupla da tabela da direita.
Ou
A primeira tupla da tabela da direita ao lado de cada tupla da tabela da esquerda.
TANTO FAZ! Sabemos que o Produto Cartesiano é comutativo.

Notas:
  • Em Álgebra Relacional (na notação extendida) a operação de Produto Cartesiano é escrita assim:
    <Tabela1> X <Tabela1>
    Exemplificando com o segundo comando de exemplo apresentado
    funcionarios X departamentos
  • CUIDADO!
    O SQL permite fazer em um comando o Produto Cartesiano de três ou mais tabelas.
    Por exemplo.
    SELECT * FROM funcionarios, departamentos, acoes; [ANSI/87]
    Em SQL ANSI/99
    SELECT * FROM funcionarios CROSS JOIN departamentos CROSS JOIN acoes; [ANSI/99]

Tutoriais » SQL » Produto Cartesiano »