복붙노트

[SQL] 왼쪽, 오른쪽, 외부 및 내부 조인의 차이점은 무엇입니까?

SQL

왼쪽, 오른쪽, 외부 및 내부 조인의 차이점은 무엇입니까?

나는이 다른 조인 모두를 구별하는 방법을 궁금 ...

해결법

  1. ==============================

    1.간단한 예 : 당신이 학생 테이블이 있다고 가정하고, 금고 테이블 수 있습니다. SQL에서, 당신은에서 지정하는 첫 번째 테이블은, 학생에 가입, 왼쪽 테이블이고, 두 번째, 금고는 오른쪽 테이블입니다.

    간단한 예 : 당신이 학생 테이블이 있다고 가정하고, 금고 테이블 수 있습니다. SQL에서, 당신은에서 지정하는 첫 번째 테이블은, 학생에 가입, 왼쪽 테이블이고, 두 번째, 금고는 오른쪽 테이블입니다.

    각 학생이 사물함에 할당 할 수 있으므로 학생 테이블에 LockerNumber 열이 있습니다. 하나 이상의 학생은 잠재적으로 하나의 사물함에있을 수 있지만, 특히 학년 초에, 당신은 사물함없이 일부 신입생 및 할당 된 학생이없는 일부 사물함이있을 수 있습니다.

    이 예의 경우, 당신은 사물함이 70있는 100 명을 갖고 있다고 할 수 있습니다. 당신은 적어도 1 학생이 10 로커 어떤 학생이없는 40있는 50 개 사물함, 총이있다.

    INNER는 "나에게 사물함 모든 학생들을 표시"와 같습니다 가입하세요. 학생없이 사물함없이 모든 학생, 또는 로커 누락되었습니다. 70 개 행을 반환

    LEFT OUTER가 될 "그들이 일이 있으면 그에 상응하는 사물함, 나에게 모든 학생들을 보여줄 것"이라고 가입하세요. 이것은 일반 학생 목록이 될 수도, 또는 전혀 사물함 학생들을 식별하는 데 사용할 수 있습니다. 100 개의 행을 반환

    RIGHT OUTER은 수 "나에게 모든 사물함,하고있을 경우 그들에게 할당 된 학생을 보여줄 것"이라고 가입하세요. 이것은 너무 많은 학생들이 더 할당 학생, 또는 사물함이없는 사물함을 식별하는 데 사용할 수 있습니다. 반환 80 행 (40 개 사물함 70 명 학생, 플러스 아무 학생 10 로커의 목록)

    FULL OUTER 바보와 아마 많이 사용하는 것 가입하세요. 같은 뭔가가 "나에게 모든 학생과 모든 사물함을 보여주고, 그들을 일치 어디 수"반환 110 행 (사물함없는 사람들을 포함한 모든 100 명. 게다가 어떤 학생 10 개 사물함)

    CROSS는 가입이 시나리오에서 매우 바보도 있습니다. 당신은 기본적으로 실제로 존재 여부에 관계없이 모든 가능한 학생 대 사물함 쌍의 큰 거대한 목록으로 끝낼 그래서, 학생들 테이블에 링크 된 lockernumber 필드를 사용하지 않습니다. 반환 5000 행 (100 명 학생들은 50 개 사물함 X). 빈 사물함 새로운 학생들을 일치하는 시작 지점으로 (필터링) 도움이 될 수 없습니다.

  2. ==============================

    2.참여의 세 가지 기본 유형이 있습니다 :

    참여의 세 가지 기본 유형이 있습니다 :

    종종 당신은 OUTER 키워드 구문에서 생략됩니다 참조하십시오. 대신 그냥 "RIGHT 가입" "왼쪽 가입"또는 "FULL은 가입"입니다. 이것은 내부 및 CROSS이 LEFT, RIGHT, 또는 FULL에 대한 의미가 없습니다 조인 때문에 수행, 이들은 명백하게에 그 자체로 충분 있도록 OUTER 조인을 표시합니다.

    다음은 각 유형을 사용할 수있는 경우의 예입니다 :

  3. ==============================

    3.단지 4 종류가 있습니다 :

    단지 4 종류가 있습니다 :

    A는 "크로스 가입"또는 "가입 데카르트"내측이되는 어떠한 조건 행이 출력되는 모든 쌍의 결과로 지정되어 조인되지 간단하다.

    내가 생략했던 FULL 조인을 지적 RusselH 감사합니다.

  4. ==============================

    4.SQL은 차이를 조인

    SQL은 차이를 조인

    기억하기 매우 간단합니다 :

    INNER에만 가입 두 테이블에 공통 기록을 보여줍니다.

    OUTER은 두 테이블의 모든 콘텐츠 중 하나를 함께 병합가 일치되지 않았거나 가입하세요.

    LEFT JOIN은 LEFT OUTER 같은 조인입니다 - (. 선택 기록을 마우스 오른쪽 테이블 레코드와 일치하는 첫 번째 (가장 왼쪽) 테이블에서)

    RIGHT RIGHT OUTER 동일은 가입되어 가입하기 - (선택 기록을 두 번째 (왼쪽 테이블 레코드와 일치하는 가장 오른쪽) 테이블에서.)

  5. ==============================

    5.확인 위키 백과 (SQL) 가입

    확인 위키 백과 (SQL) 가입

  6. ==============================

    6.그것은 더 눈에 보이는 힘의 도움을 만들기. 하나의 예 :

    그것은 더 눈에 보이는 힘의 도움을 만들기. 하나의 예 :

    1 번 테이블:

    ID_STUDENT STUDENT_NAME

    1               Raony
    2               Diogo
    3               Eduardo
    4               Luiz
    

    표 2 :

    ID_STUDENT 사물함

    3               l1
    4               l2
    5               l3
    

    내가하면 무엇을 얻을 :

    -Inner join of Table 1 and Table 2: 
    
        - Inner join returns both tables merged only when the key 
          (ID_STUDENT) exists in both tables
    
        ID_STUDENT       STUDENT_NAME      LOCKER   
    
            3               Eduardo          l1
            4               Luiz             l2
    
    -Left join of Table 1 and Table 2:
    
        - Left join merges both tables with all records form table 1, in 
          other words, there might be non-populated fields from table 2
    
        ID_ESTUDANTE    NOME_ESTUDANTE     LOCKER   
    
            1               Raony            -
            2               Diogo            -
            3               Eduardo          l1
            4               Luiz             l2
    
    -Right join of table 1 and table 2:
    
        - Right join merges both tables with all records from table 2, in 
          other words, there might be non-populated fields from table 1
    
        ID_STUDENT        STUDENT_NAME     LOCKER   
    
            3               Eduardo          l1
            4               Luiz             l2
            5               -                l3
    
    -Outter join of table 1 and table 2:
    
        - Returns all records from both tables, in other words, there
          might be non-populated fields either from table 1 or 2.
    
        ID_STUDENT        STUDENT_NAME     LOCKER   
            1               Raony            -
            2               Diogo            -
            3               Eduardo          l1
            4               Luiz             l2
            5               -                l3
    
  7. ==============================

    7.왼쪽은 가입과 오른쪽 외부 조인의 종류 가입하세요.

    왼쪽은 가입과 오른쪽 외부 조인의 종류 가입하세요.

    INNER JOIN은 기본입니다 - 두 테이블에서 행이 조인 조건에 일치해야합니다.

  8. ==============================

    8.내부 조인 : 그것을 테이블 모두에서 데이터가있는 경우에만 행을 보여줍니다.

    내부 조인 : 그것을 테이블 모두에서 데이터가있는 경우에만 행을 보여줍니다.

    외부 조인 (왼쪽 / 오른쪽)가 존재하거나하지 않을 경우, 쌍 행 (들)과 왼쪽 / 오른쪽 테이블에서 모든 결과를 표시합니다.

  9. ==============================

    9.처음에는 당신이 할 조인 않는 것을 이해해야한다? 우리는 여러 테이블을 연결하고 조인 된 테이블에서 특정 결과를 얻을. 이 작업을 수행하는 가장 간단한 방법은 크로스 조인입니다.

    처음에는 당신이 할 조인 않는 것을 이해해야한다? 우리는 여러 테이블을 연결하고 조인 된 테이블에서 특정 결과를 얻을. 이 작업을 수행하는 가장 간단한 방법은 크로스 조인입니다.

    발언권의 TABLEA 두 열 A를 가지며, 그리고 B. TableB의 세 열 C 및 D를 갖는다하자 우리가 적용하는 경우 교차는 의미 행을 많이 생산합니다 가입 할 수 있습니다. 그런 다음 우리는 실제 데이터를 얻기 위해 기본 키를 사용하여 일치해야합니다.

    왼쪽 : 그것은 바로 테이블에서 왼쪽 테이블과 일치하는 레코드에서 모든 레코드를 반환합니다.

    오른쪽 : 그것은 가입 왼쪽에 반대를 반환합니다. 그것은 왼쪽 테이블에서 모든 바로 테이블의 레코드와 일치하는 레코드를 반환합니다.

    내부 :이 교차 같다. 그것은 두 테이블에만 일치하는 레코드를 반환합니다.

    외부 : 그리고 이것은 노동 조합과 같다. 그것은 두 테이블에서 사용할 수있는 모든 기록을 반환합니다.

    언젠가 우리는 모든 데이터를 필요로하지 않으며, 또한 우리는 공통의 데이터 또는 기록을 필요로한다. 우리가 쉽게 이러한 방법을 결합 사용하여 얻을 수 있습니다. 왼쪽 기억과 오른쪽도 조인 외부 있습니다.

    당신은 사용하여 크로스 조인 모든 레코드를 얻을 수 있습니다. 이 기록의 수백만에 올 때 그러나 그것은 비싼 수 있습니다. 그래서 왼쪽으로 사용하여 간단하게, 오른쪽, 내부 또는 외부 조인.

    감사

  10. from https://stackoverflow.com/questions/448023/what-is-the-difference-between-left-right-outer-and-inner-joins by cc-by-sa and MIT license