이번 강좌에서는 바로 앞의 강좌에서 살펴본 JOIN이 실제 사용되는 예를 보도록 하겠습니다. 이 강좌에서 예시되는 대부분의 예제는 SQL 서버의 온라인 설명서에서 발취한 것임을 알려 드립니다.
1. INNER JOIN
[예제1]
USE pubs |
o authors 테이블과 publishers 테이블을 조인 시킵니다.
o authors 테이블과 publishers 테이블에서 city 가 같은 행을 조인 시킵니다.
o "SELECT * " 에 의해 두 테이블에 있는 컬럼 전체가 표시됩니다.
o "ORDER BY a.au_lname DESC" 에 의해 표시되는 내용은 au_lname를 기준으로 내림차순으로 정렬됩니다.
[예제2]
USE pubs |
o 앞의 [예제1]에서는 두 테이블 전체 컬럼이 표시 되었지만 [예제2] 에서는 publishers 테이블에서는 pub_id, pub_name, state 컬럼만 가지고 오며, authors 테이블에서는 모든 컬럼을 가져오고 있습니다.
o 표시되는 행의 수는 [예제1]과 동일합니다.
o 하지만 정렬 순서는 바뀐 것을 알 수 있습니다.
[예제3]
USE pubs |
o 빨간색 부분을 보시면 지금까지 알았던것과 달리 JOIN 절에 부등호가 사용되고 있습니다.
o publishers 테이블의 state 컬럼과 authors 테이블의 state 컬럼을 비교해서 authors 테이블의 state가 크면 JOIN의 결과에 포함이 됩니다.
[예제4]
USE pubs |
o 등호와 부등호가 같이 사용될 수 있음을 보여 줍니다.
2. OUTER JOIN
[예제5]
USE pubs |
o LEFT OUTER JOIN 이므로 왼쪽의 authors 테이블이 기준이 됩니다.
o publishers 테이블에는 없더라도 authors 테이블에 있는 행은 표시됩니다.
[예제6]
USE pubs |
o 위 [예제5]와는 반대로 publishers 테이블을 기준으로 하고 있습니다.
o authors 테이블에는 없더라도 publishers 테이블에 있는 행은 표시됩니다.
3. FULL JOIN
[예제7]
USE pubs |
o FULL OUTER JOIN 이므로 authors 테이블에만 존재하는 행도 표시되며, publishers 테이블에만 존재하는 행도 표시됩니다.
o 결국 [예제5]와 [예제6]의 합집합이 됩니다.
4. CROSS JOIN
[예제8]
USE pubs |
o CROSS JOIN이므로 authors 테이블과 publishers 테이블이 서로 CROSS 된 결과가 표시됩니다.
5. SELF JOIN
[예제9]
USE pubs |
o 테이블 자기 자신과 JOIN이 이루어지는 경우가 있습니다.
o city 가 Oakland 이면서 zip 이 같은 행을 찾게 됩니다.
[결과]
au_fname | au_lname | au_fname | au_lname |
------------------- | ------------------- | ------------------- | ------------------- |
Dean Dean Dean Dirk Dirk Dirk Livia Livia Livia Marjorie Stearns |
Straight Straight Straight Stringer Stringer Stringer Karsen Karsen Karsen Green MacFeather |
Dean Dirk Livia Dean Dirk Livia Dean Dirk Livia Marjorie Stearns |
Straight Stringer Karsen Straight Stringer Karsen Straight Stringer Karsen Green MacFeather |
(11개 행 적용됨) |
o 같은 zip을 갖는 사람을 찾고자 [예제9]와 같이 SELF JOIN을 사용했더니 위 [결과] 처럼 같은 행 또는 앞뒤 사람만 바뀐(결국은 같은) 내용이 표시가 되고 있습니다.
o 다음과 같이 수정하면 이 문제를 해결 할 수 있습니다.
[예제10]
USE pubs |
[결과]
au_fname | au_lname | au_fname | au_lname |
------------------- | ------------------- | ------------------- | ------------------- |
Dean Dean Dirk |
Straight Straight Stringer |
Dirk Livia Livia |
Stringer Karsen Karsen |
(3개 행 적용됨) |
6. 정리
JOIN의 예를 간단히 살펴 보았습니다. 직접 위 쿼리문들을 수행하고 결과를 보면서 그 의미를 정확히 파악하시면 JOIN을 사용하시는데 아무 문제가 없을거라 생각합니다. JOIN은 2개 이상의 테이블에 대해서도 사용이 가능합니다. 방법은 두개의 테이블을 사용하는 경우과 같습니다. 대신 JOIN 문이 반복됩니다.
좀더 자세한 사항은 온라인 설명서를 참고하여 주시기 바랍니다.
----------------------------------------------------------------------------------------
출처 : http://www.sqlworld.pe.kr
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|