English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SQLite 조인구문은 데이터베이스 중 두 개나 많은 테이블의 레코드를 병합하는 데 사용됩니다. JOIN은 각 테이블의 공통 값을 사용하여 두 테이블의 필드를 결합하는 방법입니다.
SQL은 주요 연결 유형이 세 가지입니다-
交叉联接
내부 연결
외부 연결
계속하기 전에, 두 개의 테이블인 COMPANY와 DEPARTMENT를 고려해 보겠습니다. COMPANY 테이블을 채우기 위해 INSERT 문을 보여주었습니다. 따라서 COMPANY 테이블에서 사용할 수 있는 기록 목록을 가정해 보겠습니다-
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 폴 32 캘리포니아 20000.0 2 알렌 25 텍사스 15000.0 3 Teddy 23 노르웨이 20000.0 4 Mark 25 리치-몬드 65000.0 5 David 27 텍사스 85000.0 6 Kim 22 서드-할 45000.0 7 제임스 24 休스턴 10000.0
또 다른 테이블은 DEPARTMENT로, 다음과 같은 정의를 가집니다-
CREATE TABLE DEPARTMENT( ID INT PRIMARY KEY NOT NULL, DEPT CHAR(50) NOT NULL, EMP_ID INT NOT NULL );
这是用于填充DEPARTMENT表的INSERT语句的列表-
INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (1, 'IT Billing', 1 ); INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (2, 'Engineering', 2 ); INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID) VALUES (3, 'Finance', 7 );
最后,我们在DEPARTMENT表中有以下可用的记录列表-
ID DEPT EMP_ID ---------- ---------- ---------- 1 IT Billing 1 2 Engineering 2 3 Finance 7
CROSS JOIN将第一个表的每一行与第二个表的每一行匹配。如果输入表分别具有x和y行,则结果表将具有x * y行。由于CROSS JOINs可能会生成极大的表,因此必须注意仅在适当的时候使用它们。
以下是CROSS JOIN的语法-
SELECT ... FROM table1 CROSS JOIN table2 ...
根据上表,您可以编写CROSS JOIN,如下所示:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT;
위의 조사는 다음과 같은 결과를 생성합니다-
EMP_ID NAME DEPT ---------- ---------- ---------- 1 Paul IT Billing 2 Paul Engineering 7 Paul Finance 1 Allen IT Billing 2 Allen Engineering 7 Allen Finance 1 Teddy IT Billing 2 Teddy Engineering 7 Teddy Finance 1 Mark IT Billing 2 Mark Engineering 7 Mark Finance 1 David IT Billing 2 David Engineering 7 David Finance 1 Kim IT Billing 2 Kim Engineering 7 Kim Finance 1 James IT Billing 2 James Engineering 7 James Finance
INNER JOIN은 연결 조건을 기반으로 두 테이블을 결합하여 (table1과 table2의 열 값으로 새로운 결과 테이블을 생성합니다. 이 쿼리는 table1와의 각 행과 비교하여 join 조건을 만족하는 모든 행 쌍을 찾습니다. join 조건이 만족되면, A와 B의 각 일치하는 행 쌍의 열 값이 결과 행으로 결합됩니다.2의 각 행을 table
INNER JOIN은 가장 일반적인 기본 연결 유형입니다. INNER 키워드를 사용할 수 있습니다.
아래는 INNER JOIN의 문법입니다:-
SELECT ... FROM table1 [INNER] JOIN table2 ON 조건식 ...
중복을 피하고 문장을 단축하기 위해USING표현식을 통해 INNER JOIN 조건을 선언합니다. 이 표현식은 하나나 여러 개의 열 목록을 지정합니다.
SELECT ... FROM table1 JOIN table2 USING ( column1 ,... ) ...
NATURAL JOIN과JOIN...USING자연스럽게, 두 테이블의 각 열 값 간에 같은지 자동으로 테스트합니다-
SELECT ... FROM table1 NATURAL JOIN table2...
위 테이블을 기반으로 INNER JOIN을 작성할 수 있습니다.:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
위의 조사는 다음과 같은 결과를 생성합니다-
EMP_ID NAME DEPT ---------- ---------- ---------- 1 Paul IT Billing 2 Allen Engineering 7 James Finance
OUTER JOIN은 INNER JOIN의 확장입니다. SQL 표준은 LEFT, RIGHT, FULL 세 가지 외부 연결 유형을 정의했지만 SQLite는 단지LEFT OUTER JOIN.
외부 연결 조건은 내부 연결 조건과 동일하며 ON, USING 또는 NATURAL 키워드를 사용하여 표현합니다. 초기 결과 테이블의 계산 방법은 동일합니다. 주 JOIN이 계산되면, OUTER JOIN은 하나나 두 개의 테이블에서 모든 연결되지 않은 행을 가져와 NULL로 채우고 그들을 결과 테이블에 추가합니다.
아래는 LEFT OUTER JOIN의 문법입니다:-
SELECT ... FROM table1 LEFT OUTER JOIN table2 ON 조건식 ...
중복을 피하고 문장을 단축하기 위해 USING 표현식을 통해 OUTER JOIN 조건을 선언할 수 있습니다. 이 표현식은 하나나 여러 개의 열 목록을 지정합니다.
SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,... ) ...
위 테이블을 기반으로 내부 연결을 작성할 수 있습니다.:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID;
위의 조사는 다음과 같은 결과를 생성합니다-
EMP_ID NAME DEPT ---------- ---------- ---------- 1 Paul IT Billing 2 Allen Engineering Teddy Mark David Kim 7 James Finance