RadarURL

조회 수 8411 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

가 크게 작게 위로 아래로 댓글로 가기 인쇄

Introduction

12장에서 내부 조인만 다루었다. 13장에서 자체 조인(Self JOIN), 자연 조인(Natural JOIN), 외부 조인(Outer JOIN) 을 다룬다. 여러 조인을 다루는 이유는 서로 다른 테이블을 조합하여, 결과를 찾기 위해서다. 이렇게 여러 테이블을 다루다 보면, 이름을 쓰는게 헷갈리거나, 어렵거나, 귀찮을 수 있는데, 이럴때 별칭을 사용 하면 된다.

Content

1. 왜 별명(alias)을 사용하고, 어떻게 별명(alias)을 사용 하는가?

별명은 테이블 이름이 길거나, 이름 이해가 어렵거나, 특수문자를 사용 할 수 없는 환경에서 보다 쉽게 사용하기 위해서 사용 한다. 별명은 계산 필드, 칼럼(열), 테이블 이름에 붙일 수 있다.

사용 방법은 바꾸고자 하는 이름 뒤에 AS 를 붙이고, 별명을 기입하면 된다.(오라클에선 AS 없이 그냥 한칸 띄우고 별명을 지어 주면 된다.) 즉, 다음 예와 같다.

1
2
3
4
5
6
SELECT
    vend_id AS vi,
    vend_name AS vn,   
    vend_address AS va
FROM
    Vendors AS ven


관련 링크

  1. http://www.w3schools.com/SQl/sql_alias.asp
  2. http://sql.1keydata.com/kr/sql-alias.php

별명이 끝났으니, 이제 각각의 조인들에 대해서 알아 보자.

2. 자체 조인 - Self JOIN

2-1 무엇을 "자체 조인 - Self JOIN"이라고 하는가?

테이블 A 가 있다고 치면, 테이블 A가 테이블 A를 참조 하는, 즉, 자기 자신을 참조 하는 조인을 Self JOIN 라고 한다. 보통 테이블에 한 컴럼이 자신에게 있는 다른 레코드를 참조할 경우 쓰인다.

2-2 어떻게 "자체 조인 - Self JOIN"을 사용 하는가?

1
2
3
4
5
6
7
SELECT
    c1.cust_id, c1.cust_name, c1.cust_contact
FROM
    Customers AS c1, Customers AS c2
WHERE
    c1.cust_name = c2.cust_name
    AND c2.cust_contact = 'Jim Jones';


해석

출력


 

본능적으로 알 수 있으니, 별도의 설명이 필요 없다.

관련 링크

  1. http://radiocom.kunsan.ac.kr/lecture/oracle/statement_join/self_join.html
  2. http://www.sqltutorial.org/sqlselfjoin.aspx
  3. http://www.koug.net/xe/?document_srl=3282
  4. http://blog.naver.com/mavis5/10078360034
  5. http://kbckbc.com/tatter/kbckbc/entry/ProgOracle24

3. 자연 조인 - Natural JOIN

3-1. 무엇을 "자연 조인 - Natural JOIN" 이라고 하는가?

테이블 조인 유형 중 한가지 이다. 테이블 간 중복된 열이 있다면, 한개만 표시하는 JOIN 을 뜻한다. 그렇다고 Natural JOIN 이 스스로 걸러낸다는 것을 의미하지는 않는다. 이것은 질의를 만드는 사람의 손으로 걸러내야 한다는 의미이다. (실제로 PostgreSQL 에서 해 보니, 중복된 열이라 할지라도, 지정해 주면 출력이 되더라. 결국 사람의 손을 거쳐야 하는 것.)

곰곰히 생각해 보면, "자연 조인 - Natural JOIN" 을 따로 구분 짓지는 않을 것 같다. 왜냐하면, 인간이 가진 손으로 기입하는 것이기 때문이다. 이 의미는 "내부 조인 - INNER JOIN" 에 중복된 열을 제거 한 것뿐 이다. "자연 조인 - Natural JOIN"을 구분 한다 해도, 얻게 되는 이점이 무엇인가? 전혀 없다. 나는 이렇게 본다.

3-2. 어떻게 "자연 조인 - Natural JOIN" 을 사용 하는가?

1
2
3
4
5
6
7
8
9
SELECT   
    C.*, O.order_num, O.order_date, OI.prod_id,
    OI.quantity, OI.item_price
FROM
    Customers AS C, Orders AS O, OrderItems AS OI
WHERE
    C.cust_id = O.cust_id
    AND OI.order_num = O.order_num
    AND prod_id = 'RGAN01';


 

해석

출력


 

관련 링크

  1. http://jongrak.textcube.com/70


 

4. 외부 조인 - OUTER JOIN

4-1. 무엇을 "외부 조인 - OUTER JOIN" 이라고 하는가?

여러 JOIN 중 한 조인 형태이며, 크게 내부 조인과 외부 조인으로 나뉜다. 내부 조인은 엮을 대상이 있을 때만, 엮여 지지만, 외부 조인은 엮일 대상이 없다고 해도 엮인다. 이것이 차이다. 이러한 차이점 때문에 외부 조인은 기준이 될 테이블을 정해 주어야 한다. 기준이 된 테이블을 정해 준다는 것은 엮이는게 없더라도, 기본적으로 보여질 테이블을 정해 준다는 것을 의미한다.

그러므로 왼쪽을 기준으로 정한 외부 조인을 LEFT OUTER JOIN 이라고 하며, 오른쪽을 기준으로 정한 외부 조인을 RIGHT OUTER JOIN 이라고 한다. 이때 왼쪽과 오른쪽을 결정하는 기준은 JOIN 절 이다. JOIN 을 기준으로 왼쪽 과 오른쪽으로 나뉜다.

이렇게 왼쪽과 오른쪽을 나눈것 외에 둘 다 포함하는 조인이 있는데, 이를 FULL OUTER JOIN 이라고 한다. 이는 엮일 데이터가 있건 없건 모든 테이블을 보겠다는 의미이다. FULL JOIN 은 각 DBMS 마다 지원 여부를 확인해 봐야 한다. (PostgreSQL 은 된다.)

4-2. 어떻게 "외부 조인 - OUTER JOIN" 을 사용 하는가?

모든 예를 다 찍기 어려우므로 사진과 링크로 대체 한다.

LEFT OUTER JOIN 해석

LEFT OUTER JOIN 출력


 

RIGHT OUTER JOIN 해석

RIGHT OUTER JOIN 출력


 

FULL OUTER JOIN 해석

FULL OUTER JOIN 출력


 

관련링크

  1. http://zend1003.springnote.com/pages/946880
  2. http://infogoal.com/sql/sql-outer-join.htm
  3. http://databaser.net/moniwiki/wiki.php/OuterJoin
  4. http://www.oracleclub.com/lecture/1021
  5. http://bearcho.tistory.com/38
  6. http://bearcho.tistory.com/40

조인을 할 때 주의해야 할 사항

  1. 엮일 조건(WHERE a = b)(ON a = b)을 결정하지 않으면, 곱집합이 반한 된다.
  2. 여러 조인을 한 SQL 절에 사용 할 순 있으나, 복잡하므로, 충분히 테스트 하고 적용 시키도록 해야 한다.( .. 복잡한건 어딜 가나 문제다.)

Digression

조인은 내부 조인과 외부 조인만 구분 지으면 되지, 내부 조인엔 무엇이 있고 외부조인엔 무엇 있다고 상세히 구분 할 필요가 없다고 생각한다. 그러므로 내부 조인과 외부 조인만 설명하면 더 쉽게 접할 수 있을 것 같다. 그렇다고 이 의미가 책에서 내용 자체를 빼라는 것을 의미하지 않는다. 설명을 할 때, "이런 것도 있더라." 쯤으로 여기고 넘어가는게 좋다는 의미이다.

 

출처 : http://ikpil.com/1103

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 2015650
707 사무 소프트웨어 대전누수, 근본 원인 해결의 시작 new 적막한체이서42 2026.10.06 0
706 데이터베이스 강남건전지❤️OlO-8655-OO53❤️친절문의환영 #강남건전지 #강남유니콘 #선릉유니콘 #강남건전지위치 #선릉역건전지#대치동유니콘 #강남바커스 #선릉바커스 #선릉역바커스 #강남룸클럽 #선릉룸클럽 #강남베터리 #강남바데리 new 괴랄한재규어89 2026.10.05 1
705 사무 소프트웨어 용인두피문신 고민? 만족 후기 보려면 new 날카로운꿩11 2026.10.05 12
704 윈도우즈 웨딩누브라, 완벽한 드레스 핏을 위한 선택 new 날카로운감시자22 2026.10.05 5
703 가상화 인천맛집 순위 차가운파편97 2026.10.05 2
702 웹서버,WAS 손목터널증후군 치료, 현명한 선택 기준은? 괴상한두루미52 2026.10.05 1
701 가상화 최근 테헤란로 벤처 밸리의 핵심 리더들 사이에서 ‘클래스가 다른 정통 수질과 프라이빗 무드’로 소문 자자한 '선릉 룸싸롱' 기습 방문, 인공미를 거부하는 무결점 뉴페이스들과 심장을 마비시킨 사심 플러팅에 제대로 저격당하고 온 솔직 후기 희미한홍학99 2026.10.05 4
700 웹서버,WAS 카­톡 gusim8003 급전/내구제 (24시문의) 선불폰 소액결제 일수 급전대출 황금빛섬광82 2026.10.05 2
699 데이터베이스 흥신소 선택 가이드 흔들리는골렘32 2026.10.05 2
698 윈도우즈 양산싱크대막힘 완벽 해결 뚫자하수구 몽환적인태양핵44 2026.10.05 1
697 가상화 양산싱크대막힘 신속 해결의 모든 것 조용한치타58 2026.10.05 4
696 유닉스/리눅스 카카오*톡 gusim8003 내구제대출/상조내구제 [24시문의] 선불유심 대출 폰내구제 가개통 하얀라마72 2026.10.05 8
695 윈도우즈 종로구가라오케 010 2817 0845 종로구 가라오케 예약 및 문의 흐릿한분석가84 2026.10.04 10
694 가상화 성공적인 중고화물차 선택 가이드 붉은불꽃77 2026.10.04 7
693 데이터베이스 센텀르엘, 하이엔드 라이프의 새로운 기준 검은파편81 2026.10.04 7
692 가상화 양산싱크대막힘 완벽 해결 뚫자하수구 매혹적인곰18 2026.10.04 7
691 사무 소프트웨어 동탄 미시보다 자극적 첫사랑보다 그리운 마블 노래클럽 010++8293++0291 광휘의퀘이사47 2026.10.03 7
690 웹서버,WAS 탄현동노래방 탄현동에서 찾는 노래방 010 2817 0845 울리는고래상어65 2026.10.03 16
689 유닉스/리눅스 [Rocky Linux 9] /home 용량 줄이고 /root 용량 늘리기 YooN 2026.04.03 3806
688 유닉스/리눅스 [Rocky Linux] LVM 환경에서 /root 파티션 공간 부족 해결 YooN 2026.04.03 4184
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 36 Next
/ 36


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너