13장 고급 테이블 조인 생성하기
Last updated
Was this helpful?
Last updated
Was this helpful?
SQL에서는 열 이름과 계산 필드 그리고 테이블 이름에 별칭을 사용할 수 있다.
테이블에서 별칭을 사용하는 이유는 크게 두 가지이다.
사용하는 SQL 명령문의 수를 줄이기 위해
하나의 SELECT 문에서 같은 테이블을 여러 번 사용하기 위해
위와 같은 테이블 별칭은 WHERE 절 뿐 아니라 ORDER BY나 그 외 다른 절에서도 사용 가능하지만 쿼리가 수행되는 동안에만 사용할 수 있다.
Oracle에서는 테이블에 별칭을 붙일 때 AS 키워드를 지원하지 않는다. ex) 테이블명 AS 별칭 => 테이블명 별칭
테이블 별칭을 사용하는 주된 이유 가운데 하나는 두 번 이상 참조하는 테이블에 사용하기 위함이다.
위 사진의 두 쿼리는 하나의 테이블에서 특정 기준의 값을 출력한다.
서브쿼리는 하나의 테이블을 작업한 결과를 바탕으로 같은 테이블의 결과값을 검색한다.
셀프 조인은 FROM 절에서 하나의 테이블을 2개의 별칭으로 사용한다.
속도 : 서브쿼리 < 셀프 조인
셀프 조인이 서브쿼리에 비해 훨씬 빠르다고 한다.
여러 번 반복되는 열을 제거하여 각 열이 한 번만 반환되는 것을 의미한다.
관련 없는 행을 가져와 실행하고 싶을 때 외부 조인을 사용한다.
관련 있는 행만 가져오는 내부 조인과 달리 외부 조인은 관련 없는 행도 포함된다.
OUTER JOIN 문법에는 항상 RIGHT 나 LEFT 키워드를 명시해 어떤 테이블에 있는 행을 가져올지 지정해야 한다. RIGHT는 OUTER JOIN 오른쪽에 있는 테이블, LEFT는 왼쪽에 있는 테이블을 의미한다. 위 예시에서는 왼쪽에 있는 Customers 테이블에 있는 행을 가져온다.
전체 외부 조인이라는 종류도 있는데, 전체 외부 조인은 두 개의 테이블에서 모든 행을 가져오고 관련된 행을 연결한다. 전체 외부 조인은 두 테이블 모두에서 관련되지 않은 행을 포함할 수 있다.
그룹 함수는 데이터를 요약하기 위해 사용한다. 조인과 함께 사용할 수 있다.
조인을 사용하는데 있어서 중요한 포인트
사용할 조인 유형 결정은 신중하게.. 내부 조인이 더 수월하지만 외부 조인이 적합할 때도 많다.
사용하는 DBMS 매뉴얼을 참고해 사용할 조인 문법의 사용법을 확인하자.
올바른 조인 조건을 사용했는지 확인하자. 잘못된 데이터를 가져올 수 있다.
조인 조건을 잊지 말고 항상 확인하자. 카티전 곱과 마주할 수 있다.
하나의 조인에 여러 테이블을 포함하거나 테이블별 조인 유형을 다르게 할 수 있다.
조인 별칭
여러가지 조인 유형과 문법
조인과 그룹 함수
내부 조인을 사용해 고객명과 각 고객의 모든 주문 정보를 가져오는 SQL문 작성하기.
1의 SQL 문을 수정하여 주문한 적 없는 고객까지 포함하여 모든 고객의 목록을 가져오는 SQL문 작성하기.
외부 조인을 사용해 Products와 OrderItems 테이블을 결합하고 제품명으로 정렬된 목록과 연관된 주문 번호를 가져오는 SQL문 작성하기.
3을 수정하여 제품별 총주문 수를 가져오는 SQL문 작성하기.
제품이 없는 판매처를 포함하여 판매처 ID 목록과 판매처별 구매 가능한 제품 수를 가져오는 SQL문 작성하기. Products 테이블에서 각 제품의 수를 계산하기 위해 그룹 함수가 필요함. vend_id 열은 여러 테이블에서 나타나므로 해당 열 참조시 주의하기.