SQLite Join

5835 단어
SQLite Join
SQLite 의 Join 자 구 는 두 개 이상 의 데이터베이스 에 표 시 된 기록 을 결합 하 는 데 사 용 됩 니 다.조인 은 두 표 의 필드 를 공통 값 으로 결합 하 는 수단 이다.
SQL 은 세 가지 주요 유형의 연결 을 정의 합 니 다.
  • 교차 연결 - CROSS JOIN
  • 내부 연결 - INNER JOIN
  • 외부 연결 - OUTER JOIN
  • 우리 가 계속 하기 전에, 우 리 는 두 개의 표 인 컴 퍼 니 와 DEPARTMENT 가 있다 고 가정 합 시다.우 리 는 이미 컴 퍼 니 시 계 를 채 우 는 인 서 트 문 구 를 보 았 다.이제 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
    

    다른 시 계 는 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           Engineerin  2
    3           Finance     7
    

    교차 연결 - 크로스 조인
    교차 연결 (CROSS JOIN) 은 첫 번 째 표 의 줄 마다 두 번 째 표 의 줄 마다 일치 합 니 다.만약 두 입력 표 가 각각 x 와 y 줄 이 있다 면 결과 표 는 x * y 줄 이 있다.교차 연결 (CROSS JOIN) 은 매우 큰 시 계 를 만 들 수 있 기 때문에 사용 할 때 신중 하고 적당 한 시기 에 만 사용 해 야 한다.
    교차 연결 작업 은 연 결 된 두 표 의 모든 데이터 줄 의 피리 칼 적 을 되 돌려 줍 니 다. 되 돌아 오 는 데이터 줄 수 는 첫 번 째 표 에서 조회 조건 에 부합 되 는 데이터 줄 수 를 두 번 째 표 에서 조회 조건 에 부합 되 는 데이터 줄 수 를 곱 합 니 다.
    다음은 교차 연결 (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        Engineerin
    7           Paul        Finance
    1           Allen       IT Billing
    2           Allen       Engineerin
    7           Allen       Finance
    1           Teddy       IT Billing
    2           Teddy       Engineerin
    7           Teddy       Finance
    1           Mark        IT Billing
    2           Mark        Engineerin
    7           Mark        Finance
    1           David       IT Billing
    2           David       Engineerin
    7           David       Finance
    1           Kim         IT Billing
    2           Kim         Engineerin
    7           Kim         Finance
    1           James       IT Billing
    2           James       Engineerin
    7           James       Finance
    

    내부 연결. - INNER JOIN.
    내부 연결 (INNER JOIN) 은 연결 술어 에 따라 두 표 (table 1 과 table 2) 의 열 값 을 결합 하여 새로운 결과 표를 만 듭 니 다.조 회 는 table 1 의 모든 줄 을 table 2 의 모든 줄 과 비교 하여 연결 서술 어 를 만족 시 키 는 모든 줄 의 일치 쌍 을 찾 습 니 다.연결 서술 어 를 만족 시 킬 때 A 와 B 줄 의 모든 짝 짓 기 열 값 은 하나의 결과 줄 로 합 쳐 집 니 다.
    내부 연결 (INNER JOIN) 은 가장 흔 한 연결 유형 으로 기본 연결 유형 입 니 다.INNER 키 워드 는 선택 할 수 있 습 니 다.
    다음은 내부 연결 (INNER JOIN) 의 문법 입 니 다.
    SELECT ... FROM table1 [INNER] JOIN table2 ON conditional_expression ...
    

    번 거 로 움 을 피하 고 짧 은 표현 을 유지 하기 위해 서 는 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       Engineerin
    7           James       Finance
    

    외부 접속 - OUTER JOIN
    외부 연결 (OUTER JOIN) 은 내부 연결 (INNER JOIN) 의 확장 입 니 다.SQL 표준 은 세 가지 유형의 외부 연결: LEFT, Right, FULL 을 정의 하지만 SQLite 는 왼쪽 외부 연결 (LEFT OUTER JOIN) 만 지원 합 니 다.
    외부 연결 (OUTER JOIN) 이 조건 을 설명 하 는 방법 은 내부 연결 (INNER JOIN) 과 같 으 며, ON, USING 또는 NATURAL 키 워드 를 사용 하여 표현 합 니 다.최초의 결과 표 는 같은 방식 으로 계산 된다.주 연결 계산 이 완료 되면 외부 연결 (OUTER JOIN) 은 하나 또는 두 개의 표 에 연결 되 지 않 은 줄 에서 합 쳐 지고 외부 연결 열 은 NULL 값 을 사용 하여 결과 표 에 추가 합 니 다.
    다음은 왼쪽 외부 연결 (LEFT OUTER JOIN) 의 문법 입 니 다.
    SELECT ... FROM table1 LEFT OUTER JOIN table2 ON conditional_expression ...
    

    번 거 로 움 을 피하 고 짧 은 표현 을 유지 하기 위해 서 는 USING 표현 식 으로 외부 연결 (OUTER JOIN) 조건 을 사용 할 수 있 습 니 다.이 표현 식 은 하나 이상 의 열 목록 을 지정 합 니 다:
    SELECT ... FROM table1 LEFT OUTER JOIN table2 USING ( column1 ,... ) ...
    

    위의 표를 바탕 으로 우 리 는 외부 연결 (OUTER JOIN) 을 쓸 수 있 습 니 다. 다음 과 같 습 니 다.
    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       Engineerin
                Teddy
                Mark
                David
                Kim
    7           James       Finance
    

    좋은 웹페이지 즐겨찾기