본문 바로가기

Study/Book

[SQL 쿡북] Chapter 3 - 1 : 다중 테이블 작업

반응형

3.1 행 집합을 다른 행 위에 추가하기

두 개 이상의 테이블을 한 결과셋을 다른 결과 셋과 합치려고 한다. 

emp테이블에서 deptno 가 10원인 사원명 및 부서 번호와 함께, dept 테이블에 있는 각 부서명 및 부서 번호를 표시하려면 다음과 같다.

[결과셋]

UNION ALL은 중복 항목이 있으면 이를 포함한다. 그리고 SELECT 목록의 데이터 유형이 일치해야 한다. 중복을 필터링 하려면 UNION 연산자를 사용해야 한다. 

 

3.2 연관된 여러 행 결합하기

조인을 이용하여 공통된 값을 공유하는 열을 조인하여 여러 테이블에서 행을 반환하려고 한다. 조인이랑 두 테이블의 행을 하나로 결합하는 것이다. 

1) WHERE 절 조인

2) JOIN 절 사용(INNER 키워드는 선택 사항)

위와 같은 결과 셋을 나타내지만 FROM 절에 조인식을 사용하려면 JOIN 절을 다음과 같이 사용할 수 있다.

 

3.3 두 테이블의 공통 행 찾기 

뷰 V를 만들고, 조인을 해보려고 한다. 


# MYSQL, SQL Server

[결과셋]

이번에는 같은 결과 셋을 JOIN을 통해서 만들 수 있다.

# DB2, Oracle, PostgreSQL

이 rdbms도 조인을 사용할 수 있지만 뷰에서 열을 반환할 필요가 없다면 IN과 함께 집합 연산 INTERSECT를 사용할 수 있다.

집합 연산 INTERSECT는 두 행 소스에 공통된 행을 반환한다. 집합 연산은 기본적으로 중복 행을 반환하지 않으므로 그 외 열에서 다른 값을 가질 수 있는 경우 유의 해야 한다. 

 


직접 따라하고 싶으신 분들은 이 책에 제시된 테이블을 만들고 직접 쿼리를 해보는게 공부에 도움이 많이 되니, 다음 테스트 사이트를 참고 부탁드립니다. 

 

SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.

Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generated after each run.

sqlfiddle.com

sql -> datetime, postgres -> timestamp

cookbook data.csv
0.00MB

 

반응형