Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL

SQL 외부 조인

데이터베이스로 작업할 때 두 개 이상의 테이블을 동시에 쿼리하고 결합된 결과 집합을 만들고 싶을 수 있습니다. 예를 들어, 모든 직원의 이름과 그들이 근무하는 부서를 찾고 싶을 수 있습니다. 이 두 정보는 서로 다른 두 테이블에 저장되어 있습니다.

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 JOINCROSS 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 JOINfull OUTER JOIN —그리고 그들이 실제로 어떻게 작동하는지 탐구했습니다.

이제 SQL JOIN을 수행할 준비가 되었습니다. 전문가와 같은 작업!