English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite JunçõesA cláusula é usada para combinar registros de duas ou mais tabelas em um banco de dados. JOIN é um método para combinar campos de duas tabelas usando valores comuns em cada uma
O SQL define três tipos principais de junções-
Juntura cruzada
JOIN interno
conexão externa
Antes de continuar, vamos considerar duas tabelas: COMPANY e DEPARTMENT. Já vimos as instruções INSERT para preencher a tabela COMPANY. Portanto, vamos assumir que a lista de registros disponíveis na tabela COMPANY-
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Outra tabela é DEPARTMENT, com as seguintes definições-
CREATE TABLE DEPARTMENT ID INT PRIMÁRIA CHAVE NOT NULL DEPT CHAR(50) NOT NULL, EMP_ID INT NOT NULL );
Esta é a lista de declarações INSERT usadas para preencher a tabela DEPARTMENT-
INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (1, 'Billing de TI', 1 ); INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (2, 'Engenharia', 2 ); INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (3, 'Finanças', 7 );
Por fim, temos a seguinte lista de registros disponíveis na tabela DEPARTMENT-
ID DEPT EMP_ID ---------- ---------- ---------- 1 Billing de TI 1 2 Engenharia 2 3 Finanças 7
CROSS JOIN combina cada linha da primeira tabela com cada linha da segunda tabela. Se as tabelas de entrada possuírem x e y linhas, a tabela de resultado terá x * y linhas. Devido ao CROSS JOIN poder gerar tabelas muito grandes, deve-se ter atenção para usá-los apenas quando apropriado.
Aqui está a sintaxe do CROSS JOIN:-
SELECT ... FROM tabela1 CROSS JOIN table2 ...
Segundo a tabela acima, você pode escrever CROSS JOIN da seguinte forma:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;
A consulta acima produzirá os seguintes resultados-
EMP_ID NOME DEPT ---------- ---------- ---------- 1 Paul IT Faturamento 2 Paul Engenharia 7 Paul Finanças 1 Allen Billing de TI 2 Allen Engenharia 7 Allen Finanças 1 Teddy Billing de TI 2 Teddy Engenharia 7 Teddy Finanças 1 Mark Billing de TI 2 Mark Engenharia 7 Mark Finanças 1 David Billing de TI 2 David Engenharia 7 David Finanças 1 Kim Billing de TI 2 Kim Engenharia 7 Kim Finanças 1 James Billing de TI 2 James Engenharia 7 James Finance
INNER JOIN combina duas tabelas (tabela1e a tabela2) para criar uma nova tabela de resultado. A consulta preencherá a tabela1de cada linha com a tabela2de cada linha para comparar com a tabela
O INNER JOIN é o tipo mais comum de JOIN padrão. Você pode optar por usar a palavra-chave INNER.
Aqui está a sintaxe do INNER JOIN-
SELECT ... FROM tabela1 [INNER] JOIN tabela2 ON expressão_condicional ...
Para evitar redundância e encurtar a frase, você pode usarUSINGA expressão declara a condição do JOIN interno. Esta expressão especifica uma lista de uma ou mais colunas.
SELECT ... FROM tabela1 JOIN tabela2 USING ( coluna1 ,... ) ...
JOIN NATURAL comJOIN...USINGNaturalmente semelhante, apenas ele testa automaticamente se os valores de cada coluna nas duas tabelas são iguais-
SELECT ... FROM tabela1 JOIN NATURAL tabela2...
Baseado na tabela acima, você pode escrever um INNER JOIN, conforme mostrado a seguir:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
A consulta acima produzirá os seguintes resultados-
EMP_ID NOME DEPT ---------- ---------- ---------- 1 Paul IT Faturamento 2 Allen Engenharia 7 James Finance
O JOIN externo é uma extensão do JOIN interno. Embora o padrão SQL defina três tipos de JOIN externo: LEFT, RIGHT e FULL, o SQLite suporta apenasLEFT OUTER JOIN.
As condições do JOIN externo e do JOIN interno são as mesmas, representadas pelos termos ON, USING ou NATURAL. O cálculo da tabela de resultado inicial é o mesmo. Assim que o JOIN principal é calculado, o JOIN externo obterá todas as linhas não conectadas de uma ou duas tabelas, preencherá-as com NULL e as adicionará à tabela de resultado.
Aqui está a sintaxe do LEFT OUTER JOIN-
SELECT ... FROM tabela1 LEFT OUTER JOIN tabela2 ON expressão_condicional ...
Para evitar redundância e encurtar a frase, você pode usar a expressão USING para declarar a condição do JOIN externo. Esta expressão especifica uma lista de uma ou mais colunas.
SELECT ... FROM tabela1 LEFT OUTER JOIN tabela2 USING ( coluna1 ,... ) ...
Baseado na tabela acima, você pode escrever uma JOIN interna, conforme mostrado a seguir:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
A consulta acima produzirá os seguintes resultados-
EMP_ID NOME DEPT ---------- ---------- ---------- 1 Paul IT Faturamento 2 Allen Engenharia Teddy Mark David Kim 7 James Finance