데이터베이스로 작업할 때 두 개 이상의 테이블을 동시에 쿼리하고 결합된 결과 집합을 만들고 싶을 수 있습니다. 예를 들어, 모든 직원의 이름과 그들이 근무하는 부서를 찾고 싶을 수 있습니다. 이 두 정보는 서로 다른 두 테이블에 저장되어 있습니다.
SQL
조인이 들어옵니다. 테이블을 조인하면 여러 테이블에 대해 쿼리를 실행하여 결합된 결과를 생성할 수 있습니다.
이 가이드에서는 한 가지 유형의 조인인 OUTER JOIN
에 중점을 둘 것입니다. . OUTER JOIN
연산자는 최종 테이블에 관련 행이 없는 경우에도 행을 반환합니다. OUTER JOIN
의 세 가지 유형에 대해 설명합니다. s, 작동 방식 및 SQL
에서 사용하는 방법 쿼리.
SQL 조인 새로 고침
일반적으로 SELECT
로 시작하는 쿼리 문은 데이터베이스에서 정보를 검색하는 데 사용됩니다. 일반적으로 쿼리를 작성할 때 한 테이블에서 정보를 검색하는 데 집중하고 FROM
을 사용합니다. 명령이 쿼리할 테이블을 지정하는 절. 다음은 표준 SQL
작성을 위한 구문입니다. 쿼리:
SELECT column_name FROM table_name WHERE certain_conditions_are_met;
다음은 employees
에 있는 모든 직원의 이름 목록을 검색하는 쿼리의 예입니다. 표:
SELECT name FROM employees;
쿼리는 다음을 반환합니다.
이름 |
루크 마이크 한나 제프 알렉시스 엠마 요나 아담 |
(8줄)
WHERE
를 사용할 수도 있습니다. 특정 기준 세트를 충족하는 레코드만 포함하도록 쿼리 결과를 필터링하는 절입니다. 예를 들어, 모든 영업 직원 또는 모든 임원의 이름을 찾는 쿼리를 작성할 수 있습니다.
참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.
부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.
그러나 여러 테이블에서 정보를 얻고 결과를 하나의 테이블로 결합하려면 어떻게 해야 할까요? 여기에서 조인이 필요합니다.
조인을 사용하면 여러 테이블을 쿼리하고 일치하는 행으로 결합된 결과 집합을 만들 수 있습니다. 조인에는 세 가지 주요 유형이 있습니다. INNER JOIN
, OUTER JOIN
및 CROSS JOIN
.
INNER JOIN
s 쿼리하는 두 테이블 모두에서 일치하는 행을 반환하는 반면 OUTER JOIN
s 조인된 테이블에 관련 행이 없는 경우에도 행을 반환합니다. CROSS JOIN
s는 조인 조건이 없는 조인으로 테이블의 각 행은 다른 테이블의 해당 행과 결합됩니다.
SQL 외부 조인
논의한 바와 같이 INNER JOIN
을 수행할 때 , 다른 테이블에서 일치하지 않는 두 테이블의 행은 결과 세트에 반환되지 않습니다. 그러나 이러한 값을 얻으려면 어떻게 해야 합니까? OUTER JOIN
을 사용할 수 있습니다. 이 데이터를 검색합니다.
OUTER JOIN
에는 세 가지 유형이 있습니다. :
LEFT OUTER JOINS
왼쪽 테이블에서 일치하지 않는 행을 반환합니다.RIGHT OUTER JOINS
오른쪽 테이블에서 일치하지 않는 행을 반환합니다.FULL OUTER JOINS
모든 테이블에서 일치하지 않는 행을 반환합니다.
OUTER JOIN
s는 필요에 따라 두 테이블의 레코드를 일치시킬 수 있으며 사용하는 조인 유형과 관련된 모든 레코드를 반환합니다.
SQL 조인:왼쪽
왼쪽 조인은 조인 조건이 충족되는 왼쪽 테이블의 모든 행과 오른쪽 테이블의 행을 반환합니다.
employees
라는 두 개의 테이블이 있다고 가정해 보겠습니다. 및 company_departments
. 이제 어떤 부서에도 할당되지 않은 경우에도 모든 직원의 이름과 부서 이름을 얻으려고 한다고 가정합니다. LEFT JOIN
을 사용하여 이 정보를 얻을 수 있습니다. .
다음은 LEFT JOIN
의 예입니다. 공통 값인 Department_id를 사용하여 직원과 company_departments 테이블을 결합하여 모든 직원의 이름과 부서 이름을 검색하는 쿼리입니다.
SELECT employees.name, company_departments.name FROM employees LEFT JOIN company_departments ON employees.department_id = company_departments.department_id;
쿼리는 다음을 반환합니다.
이름 | 이름 |
루크 | 판매 |
마이크 | 판매 |
한나 | 판매 |
제프 | 판매 |
알렉시스 | 판매 |
엠마 | 마케팅 |
요나 | 임원 |
아담 | |
(8줄)
보시다시피 LEFT JOIN
employees
의 모든 행을 반환했습니다. 테이블, 그들이 일하는 부서가 company_departments
에서 찾을 수 없더라도 표.
왼쪽 조인에 대해 자세히 알아보려면 SQL
에서 Career Karma 자습서를 읽을 수 있습니다. 여기에서 작동합니다.
SQL 조인:오른쪽
RIGHT JOIN
문은 LEFT JOIN
의 정반대입니다. 운영자. RIGHT JOIN
오른쪽 테이블의 모든 행과 조인 조건이 충족되는 왼쪽 테이블의 행을 모두 반환합니다.
모든 부서의 이름과 해당 부서에서 일하는 모든 직원의 이름 목록을 얻고 싶다고 가정해 보겠습니다. 또한 직원이 할당되지 않은 부서에 대한 데이터도 얻고 싶습니다. 다음 쿼리를 사용하여 이 데이터를 얻을 수 있습니다.
SELECT employees.name, company_departments.name AS "DeptName" FROM employees RIGHT JOIN company_departments ON employees.department_id = company_departments.department_id;
위 쿼리는 다음을 반환합니다.
이름 | “부서명” |
루크 | 판매 |
마이크 | 판매 |
한나 | 판매 |
제프 | 판매 |
알렉시스 | 판매 |
엠마 | 마케팅 |
요나 | 임원 |
| 급여 |
| 정보 기술 |
(9줄)
보시다시피 쿼리는 모든 부서 목록과 해당 부서에서 일하는 모든 직원의 이름을 반환했습니다. 쿼리는 Payroll
부서도 반환했습니다. 및 Information Technology
, 현재 직원이 없습니다.
또한 쿼리는 LEFT JOIN
의 직원인 Adam을 반환하지 않았습니다. 어떤 부서에도 할당되지 않은 사람을 쿼리합니다. RIGHT JOIN
때문입니다. 조건이 충족되는 오른쪽 테이블(company_departments)의 모든 행을 포함하고 Adam은 오른쪽 테이블의 레코드와 아무 관련이 없습니다.
전체 SQL 외부 조인
Full OUTER JOIN
s는 흔하지 않은 SQL join
유형입니다. 두 테이블에서 일치하지 않는 레코드를 반환하는 데 사용할 수 있습니다. 종종 full OUTER JOIN
s는 집계 함수와 함께 사용되어 두 테이블 사이에 얼마나 많은 겹침이 존재하는지 이해합니다.
모든 직원과 부서의 목록을 얻고 싶다고 가정해 봅시다. 다음 SQL
을 사용할 수 있습니다. 해당 정보를 검색하는 쿼리:
SELECT employees.name, company_departments.name AS "DeptName" FROM employees FULL OUTER JOIN company_departments ON employees.department_id = company_departments.department_id;
쿼리는 다음을 반환합니다.
이름 | “부서명” |
루크 | 판매 |
마이크 | 판매 |
한나 | 판매 |
제프 | 판매 |
알렉시스 | 판매 |
엠마 | 마케팅 |
요나 | 임원 |
아담 | |
| 급여 |
| 정보 기술 |
(10행)
위의 결과 집합에는 부서에 할당되지 않은 경우에도 모든 직원의 이름과 할당된 부서 목록이 포함됩니다. 부서에 할당된 직원이 없더라도 결과 집합에는 모든 부서 이름 목록도 포함됩니다.
결론
Joins
SQL
입니다. 동시에 두 개 이상의 테이블을 쿼리하고 결합된 결과 세트를 생성할 수 있는 서버 기능. 예를 들어 회사 직원 목록과 가장 최근 급여 확인이 처리된 날짜를 확인하려면 join
을 사용할 수 있습니다. .
이 튜토리얼에서는 OUTER JOIN
에 초점을 맞췄습니다. join
의 행을 반환하는 s 조인된 테이블에 관련 행이 없는 경우에도 마찬가지입니다. 또한 OUTER JOIN
의 세 가지 주요 유형에 대해 논의했습니다. s—LEFT JOIN
, RIGHT JOIN
및 full OUTER JOIN
—그리고 그들이 실제로 어떻게 작동하는지 탐구했습니다.
이제 SQL JOIN
을 수행할 준비가 되었습니다. 전문가와 같은 작업!