[SQL] 왼쪽, 오른쪽, 외부 및 내부 조인의 차이점은 무엇입니까?
SQL왼쪽, 오른쪽, 외부 및 내부 조인의 차이점은 무엇입니까?
나는이 다른 조인 모두를 구별하는 방법을 궁금 ...
해결법
-
==============================
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.참여의 세 가지 기본 유형이 있습니다 :
참여의 세 가지 기본 유형이 있습니다 :
종종 당신은 OUTER 키워드 구문에서 생략됩니다 참조하십시오. 대신 그냥 "RIGHT 가입" "왼쪽 가입"또는 "FULL은 가입"입니다. 이것은 내부 및 CROSS이 LEFT, RIGHT, 또는 FULL에 대한 의미가 없습니다 조인 때문에 수행, 이들은 명백하게에 그 자체로 충분 있도록 OUTER 조인을 표시합니다.
다음은 각 유형을 사용할 수있는 경우의 예입니다 :
-
==============================
3.단지 4 종류가 있습니다 :
단지 4 종류가 있습니다 :
A는 "크로스 가입"또는 "가입 데카르트"내측이되는 어떠한 조건 행이 출력되는 모든 쌍의 결과로 지정되어 조인되지 간단하다.
내가 생략했던 FULL 조인을 지적 RusselH 감사합니다.
-
==============================
4.SQL은 차이를 조인
SQL은 차이를 조인
기억하기 매우 간단합니다 :
INNER에만 가입 두 테이블에 공통 기록을 보여줍니다.
OUTER은 두 테이블의 모든 콘텐츠 중 하나를 함께 병합가 일치되지 않았거나 가입하세요.
LEFT JOIN은 LEFT OUTER 같은 조인입니다 - (. 선택 기록을 마우스 오른쪽 테이블 레코드와 일치하는 첫 번째 (가장 왼쪽) 테이블에서)
RIGHT RIGHT OUTER 동일은 가입되어 가입하기 - (선택 기록을 두 번째 (왼쪽 테이블 레코드와 일치하는 가장 오른쪽) 테이블에서.)
-
==============================
5.확인 위키 백과 (SQL) 가입
확인 위키 백과 (SQL) 가입
-
==============================
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.왼쪽은 가입과 오른쪽 외부 조인의 종류 가입하세요.
왼쪽은 가입과 오른쪽 외부 조인의 종류 가입하세요.
INNER JOIN은 기본입니다 - 두 테이블에서 행이 조인 조건에 일치해야합니다.
-
==============================
8.내부 조인 : 그것을 테이블 모두에서 데이터가있는 경우에만 행을 보여줍니다.
내부 조인 : 그것을 테이블 모두에서 데이터가있는 경우에만 행을 보여줍니다.
외부 조인 (왼쪽 / 오른쪽)가 존재하거나하지 않을 경우, 쌍 행 (들)과 왼쪽 / 오른쪽 테이블에서 모든 결과를 표시합니다.
-
==============================
9.처음에는 당신이 할 조인 않는 것을 이해해야한다? 우리는 여러 테이블을 연결하고 조인 된 테이블에서 특정 결과를 얻을. 이 작업을 수행하는 가장 간단한 방법은 크로스 조인입니다.
처음에는 당신이 할 조인 않는 것을 이해해야한다? 우리는 여러 테이블을 연결하고 조인 된 테이블에서 특정 결과를 얻을. 이 작업을 수행하는 가장 간단한 방법은 크로스 조인입니다.
발언권의 TABLEA 두 열 A를 가지며, 그리고 B. TableB의 세 열 C 및 D를 갖는다하자 우리가 적용하는 경우 교차는 의미 행을 많이 생산합니다 가입 할 수 있습니다. 그런 다음 우리는 실제 데이터를 얻기 위해 기본 키를 사용하여 일치해야합니다.
왼쪽 : 그것은 바로 테이블에서 왼쪽 테이블과 일치하는 레코드에서 모든 레코드를 반환합니다.
오른쪽 : 그것은 가입 왼쪽에 반대를 반환합니다. 그것은 왼쪽 테이블에서 모든 바로 테이블의 레코드와 일치하는 레코드를 반환합니다.
내부 :이 교차 같다. 그것은 두 테이블에만 일치하는 레코드를 반환합니다.
외부 : 그리고 이것은 노동 조합과 같다. 그것은 두 테이블에서 사용할 수있는 모든 기록을 반환합니다.
언젠가 우리는 모든 데이터를 필요로하지 않으며, 또한 우리는 공통의 데이터 또는 기록을 필요로한다. 우리가 쉽게 이러한 방법을 결합 사용하여 얻을 수 있습니다. 왼쪽 기억과 오른쪽도 조인 외부 있습니다.
당신은 사용하여 크로스 조인 모든 레코드를 얻을 수 있습니다. 이 기록의 수백만에 올 때 그러나 그것은 비싼 수 있습니다. 그래서 왼쪽으로 사용하여 간단하게, 오른쪽, 내부 또는 외부 조인.
감사
from https://stackoverflow.com/questions/448023/what-is-the-difference-between-left-right-outer-and-inner-joins by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 삽입 어디 쿼리 (0) | 2020.03.12 |
---|---|
[SQL] SQL에서 단일 및 이중 따옴표의 차이점은 무엇입니까? (0) | 2020.03.12 |
[SQL] 어떻게 오라클 데이터베이스와 일치하는 문자열의 큰 숫자를로드 할? (0) | 2020.03.12 |
[SQL] 어떻게 변환 쉼표는 오라클의 행에 값을 분리? (0) | 2020.03.12 |
[SQL] 포함 된 VARCHAR 필드에 문자열의 발생 수를 계산? (0) | 2020.03.12 |