[SQL] 조인

2015. 8. 3. 14:04·데이타베이스

조인

두 개 이상의 테이블을 연결하여 데이터를 조회하는 것

 

-       등가 조인: 테이블간에 동일한 조건을 이용하여 처리, = 연산자 사용

-       비등가 조인: 테이블간에 동일하지 않은 조건을 이용하여 처리, between, <, > 등의 연산자를 이용하여 처리

-       아웃 조인: 조인 조건을 만족하지 않는 경우에도 결과를 봐야 하는 경우 사용

-       셀프 조인: 자기자신의 정보를 이용하여 조인 처리

 

카테시안 프로덕트(Cartesian Product)

조인 조건을 생략하거나, 잘 못 설정하여 테이블 간의 모든 데이터가 연결되는 것

 

SET 연산자

조인을 사용하지 않고 두 개 이상의 테이블의 연관된 데이터를 조회해 오는 방법

-       UNION: 테이블 간의 합집합, 중복데이터 제거, 자동으로 정렬 작업 처리

-       UNION ALL: 테이블 간의 합집합

-       INTERSECT: 테이블간의 중복 결과만 반환, 교집합

-       MINUS: 앞 테이블의 결과에서 뒷 테이블의 결과를 뺀 결과, 차집합

 

SQL

 

 

-- emp 테이블 정보
SQL> select *
  2    from emp;

      DEPT DNAME
---------- --------------------
        30 KING
        40 WARD
        50 KKK



-- dept 테이블 정보
SQL> select *
  2    from dept;

      DEPT DNAME
---------- --------------------
        10 RESEARCH
        30 SALES
        50 KKK




-- 내츄럴 조인
SQL> select dept, dname
  2    from emp e natural join dept d
  3  ;

      DEPT DNAME
---------- --------------------
        50 KKK




-- using 문을 이용한 조인
SQL> select *
  2    from emp e join dept d using (dept)
  3  ;

      DEPT DNAME                DNAME
---------- -------------------- --------------------
        30 KING                 SALES
        50 KKK                  KKK




-- using 문을 이용한 조인
SQL> select *
  2    from emp e join dept d using (dname)
  3  ;

DNAME                      DEPT       DEPT
-------------------- ---------- ----------
KKK                          50         50




-- on 문을 이용한 조인
SQL> select *
  2    from emp e join dept d on e.dept = d.dept
  3  ;

      DEPT DNAME                      DEPT DNAME
---------- -------------------- ---------- --------------------
        30 KING                         30 SALES
        50 KKK                          50 KKK




-- 아무런 조건을 주지 않은 조인
SQL> select *
  2    from emp, dept
  3  ;

      DEPT DNAME                      DEPT DNAME
---------- -------------------- ---------- --------------------
        30 KING                         10 RESEARCH
        30 KING                         30 SALES
        30 KING                         50 KKK
        40 WARD                         10 RESEARCH
        40 WARD                         30 SALES
        40 WARD                         50 KKK
        50 KKK                          10 RESEARCH
        50 KKK                          30 SALES
        50 KKK                          50 KKK

9 rows selected.




-- 크로스 조인
SQL> select *
  2    from emp cross join dept
  3  ;

      DEPT DNAME                      DEPT DNAME
---------- -------------------- ---------- --------------------
        30 KING                         10 RESEARCH
        30 KING                         30 SALES
        30 KING                         50 KKK
        40 WARD                         10 RESEARCH
        40 WARD                         30 SALES
        40 WARD                         50 KKK
        50 KKK                          10 RESEARCH
        50 KKK                          30 SALES
        50 KKK                          50 KKK

9 rows selected.




-- full 아우터 조인
SQL> select d.dept, e.dept
  2    from dept d full outer join emp e
  3      on d.dept = e.dept
  4  ;

      DEPT       DEPT
---------- ----------
        30         30
                   40
        50         50
        10





-- left 아우터 조인
SQL> select d.dept, e.dept
  2    from dept d left outer join emp e
  3      on d.dept = e.dept
  4  ;

      DEPT       DEPT
---------- ----------
        10
        30         30
        50         50





-- right 아우터 조인
SQL> select d.dept, e.dept
  2    from dept d right outer join emp e
  3      on d.dept = e.dept
  4  ;

      DEPT       DEPT
---------- ----------
        30         30
                   40
        50         50





-- union 을 이용
SQL> select *
  2    from emp
  3   union
  4  select *
  5    from dept
  6  ;

      DEPT DNAME
---------- --------------------
        10 RESEARCH
        30 KING
        30 SALES
        40 WARD
        50 KKK





-- union all 을 이용
SQL> select *
  2    from emp
  3   union all
  4  select *
  5    from dept
  6  ;

      DEPT DNAME
---------- --------------------
        30 KING
        40 WARD
        50 KKK
        10 RESEARCH
        30 SALES
        50 KKK

6 rows selected.





-- 교집합
SQL> select *
  2    from emp
  3   intersect
  4  select *
  5    from dept
  6  ;

      DEPT DNAME
---------- --------------------
        50 KKK




-- 차집합
SQL> select *
  2    from emp
  3   minus
  4  select *
  5    from dept
  6  ;

      DEPT DNAME
---------- --------------------
        30 KING
        40 WARD
반응형
저작자표시 비영리 (새창열림)

'데이타베이스' 카테고리의 다른 글

[ORACLE] Index Scan 종류  (0) 2015.08.04
[ORACLE] 인덱스  (0) 2015.08.04
DBMS의 공집합과 집합함수  (0) 2015.07.27
[MySQL] Error Code: 1215. Cannot add foreign key constraint  (0) 2015.07.24
[MySQL] ERROR 1045 (28000): 에러  (0) 2015.07.22
'데이타베이스' 카테고리의 다른 글
  • [ORACLE] Index Scan 종류
  • [ORACLE] 인덱스
  • DBMS의 공집합과 집합함수
  • [MySQL] Error Code: 1215. Cannot add foreign key constraint
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    Python
    bash
    알고리즘
    정올
    error
    Tez
    hbase
    build
    AWS
    다이나믹
    파이썬
    하둡
    emr
    java
    백준
    oozie
    ubuntu
    하이브
    HDFS
    오류
    Hadoop
    yarn
    S3
    Linux
    mysql
    HIVE
    SPARK
    k8s
    nodejs
    airflow
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[SQL] 조인
상단으로

티스토리툴바