it-swarm-ko.com

내부 조인, 왼쪽 조인, 오른쪽 조인과 전체 JOIN의 차이점은 무엇입니까?

MySQL 에서 INNER JOIN, LEFT JOIN, RIGHT JOINFULL JOIN의 차이점은 무엇입니까?

1445
Lion King

코드 프로젝트 에서 도움이 될 것입니다. SQL 조인의 시각적 표현 .

alt text

또한이 게시물을 확인하십시오 : SQL SERVER - 성능 향상 - LEFT JOIN 또는 NOT IN? .

MySQL의 JOIN과 OUTER JOIN의 차이점 .

2897
Pranay Rana

INNER JOIN 외래 키를 기반으로 두 테이블간에 공통적 인 모든 레코드를 가져옵니다.

LEFT JOIN LEFT가 연결된 테이블에서 모든 레코드를 가져 오지만 RIGHT 테이블에서 일부 열을 선택한 경우 관련 레코드가 없으면이 열에 NULL이 포함됩니다.

RIGHT JOIN 는 위와 같지만 RIGHT 테이블의 모든 레코드를 가져옵니다.

FULL JOIN 두 테이블에서 모든 레코드를 가져오고 관련 레코드가 반대 테이블에없는 열에 NULL을 넣습니다.

613
Brian Leeming

SQL JOIN 절은 두 개 이상의 테이블의 행을 공통 필드를 기준으로 결합하는 데 사용됩니다.

SQL에서 사용할 수있는 조인의 유형에는 여러 가지가 있습니다.

INNER JOIN : 두 테이블에 일치하는 것이 있으면 행을 반환합니다.

LEFT JOIN : 오른쪽 테이블에 일치하는 것이 없더라도 왼쪽 테이블에서 모든 행을 반환합니다.

RIGHT JOIN : 왼쪽 표에 일치 항목이없는 경우에도 오른쪽 표의 모든 행을 리턴합니다.

FULL JOIN : 왼쪽 및 오른쪽 외부 조인의 결과를 결합합니다.

조인 된 테이블에는 두 테이블의 모든 레코드가 포함되며 양쪽에 일치하지 않는 항목에 대해서는 NULL을 채 웁니다.

SELF JOIN :은 테이블이 두 개의 테이블 인 것처럼 테이블을 자체에 조인하는 데 사용되며, SQL 문에서 적어도 하나 이상의 테이블의 이름을 일시적으로 변경합니다.

CARTESIAN JOIN : 두 개 이상의 조인 된 테이블에서 레코드 세트의 카디 전 곱을 리턴합니다.

우리는 각각의 처음 네 가지 조인을 자세히 취할 수 있습니다.

우리는 다음과 같은 두 개의 테이블을 가지고 있습니다.

TableA

id  firstName                  lastName
.......................................
1   arun                        prasanth                 
2   ann                         antony                   
3   sruthy                      abc                      
6   new                         abc                                           

TableB

id2 age Place
................
1   24  kerala
2   24  usa
3   25  ekm
5   24  chennai

.................................................. ..................

INNER JOIN

: 두 테이블, 즉 TableA와 TableB에서 공통적 인 행의 교집합을 제공합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
 INNER JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 INNER JOIN TableB
    ON TableA.id = TableB.id2;

결과는

firstName       lastName       age  Place
..............................................
arun            prasanth        24  kerala
ann             antony          24  usa
sruthy          abc             25  ekm

LEFT JOIN

: TableA의 선택된 모든 행과 TableB의 공통 선택된 행을 제공합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
  LEFT JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  LEFT JOIN TableB
    ON TableA.id = TableB.id2;

결과

firstName                   lastName                    age   Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL

오른쪽 조인

:은 TableB의 선택된 모든 행과 TableA의 공통 선택된 행을 제공합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
 RIGHT JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
 RIGHT JOIN TableB
    ON TableA.id = TableB.id2;

결과

firstName                   lastName                    age     Place
...............................................................................
arun                        prasanth                    24     kerala
ann                         antony                      24     usa
sruthy                      abc                         25     ekm
NULL                        NULL                        24     chennai

전체 조인

Note : 두 테이블에서 선택된 모든 값을 반환합니다.

통사론

SELECT table1.column1, table2.column2...
  FROM table1
  FULL JOIN table2
    ON table1.common_field = table2.common_field;

샘플 표에 적용하십시오.

SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
  FROM TableA
  FULL JOIN TableB
    ON TableA.id = TableB.id2;

결과

firstName                   lastName                    age    Place
...............................................................................
arun                        prasanth                    24    kerala
ann                         antony                      24    usa
sruthy                      abc                         25    ekm
new                         abc                         NULL  NULL
NULL                        NULL                        24    chennai

재미있는 사실

INNER 조인의 경우 순서는 중요하지 않습니다.

(LEFT, RIGHT 또는 FULL) OUTER 조인의 경우, order matter

더 잘 살펴 보시려면Link조인 순서에 대한 흥미로운 세부 사항을 알려 드리겠습니다.

597
Arunprasanth K V