04.IT Knowledge/RDBMS2008. 12. 18. 14:42

[SQL 작성 요령]
1. 중심축으로 삼을 테이블을 선정한다.
2. 건수를 기록한다.
3. 가로로 정보를 추가하는 경우 JOIN을 세로로 정보를 추가하는 경우는 UNION을 사용한다.
4. 건수를 조회하여 확인한다.

[[ 예제 테이블 ]]

T1 T2
C11 C12 C21 C22
A 1 E 11
B 2 F 12
C 3 G 13
D 4
E 5
F 6

INNER JOIN (건수의 손실을 주의할 것)
SQL>>
SELECT T1.C11, T1.C12, T2.C22
  FROM T1
 INNER JOIN T2
         ON T1.C11 = T2.C21
RESULT>>
C11 C12 C22
E 5 11
F 6 12

LEFT OUTER JOIN (의도치 않은 Null의 발생, 건수의 증가를 주의할 것)
SQL>>
SELECT T1.C11, T1.C12, T2.C22
  FROM T1
  LEFT OUTER JOIN T2
         ON T1.C11 = T2.C21
RESULT>>
C11 C12 C22
A 1 Null
B 2 Null
C 3 Null
D 4 Null
E 5 11
F 6 12

RIGHT OUTER JOIN (가급적 Left outer join으로 사용할 것을 고려한다.)
SQL>>
SELECT T1.C11, T1.C12, T2.C21, T2.C22
  FROM T1
  FULL OUTER JOIN T2
         ON T1.C11 = T2.C21
RESULT>>
C11 C12 C21 C22
A 1 Null Null
B 2 Null Null
C 3 Null Null
D 4 Null Null
E 5 E 11
F 6 F 12
Null Null G 13

UNION (중복이 제거된다. 정렬이 일어나므로 속도의 저하가 있을 수 있다.)
SQL>>
SELECT C11, C12
  FROM T1
UNION
SELECT C21, C22
  FROM T2
RESULT>>
C11 C12
A 1
B 2
C 3
D 4
E 5
F 6
G 13

UNION ALL
SQL>>
SELECT C11, C12
  FROM T1
UNION ALL
SELECT C21, C22
  FROM T2
RESULT>>
C11 C12
A 1
B 2
C 3
D 4
E 5
F 6
E 11
F 12
G 13

Posted by 아주 오래된 미래