설 연수
하하호홓
설 연수
전체 방문자
오늘
어제
  • 분류 전체보기 (231)
    • Back-End (2)
      • Java (20)
      • JSP (13)
      • Spring (18)
      • Kotlin (0)
      • node.js (0)
    • Front-End (68)
      • JavaScript (19)
      • jQuery (39)
      • Angular (4)
      • HTML (5)
    • Dev-Ops (12)
      • Linux, Cloud (5)
      • docker, k8s (5)
      • ElasticSeach (2)
    • Other (33)
      • OOP (3)
      • 알고리즘 (2)
      • DB (12)
      • Git (1)
      • Swift (4)
    • Backup (65)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 404 error
    • Angular
    • 크로스도메인
    • jquery invalid
    • RESTful
    • flex
    • CORS
    • 패스트캠퍼스
    • mongodb
    • MYSQL
    • angular2
    • Kafka
    • angular callback
    • jOOQ
    • Redis
    • angular4
    • docker
    • angular 콜백
    • page not found
    • INVALID

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    설 연수

    하하호홓

    Other/DB

    JOIN문 용어

    2012. 2. 23. 13:58

    6장 join문

     

    6-1.full join
    join 문중에서 가장 간단한 join문이라는 특징이 있으며 full join은 다음과 같이 설명할 수 있습니다.

    >select * from tableA, tableB;

    일반적인 join문은 양쪽 테이블의 레코드 갯수를 곱한 수만큼 검색을 하기 때문에 join을 사용할 때에는 주의해서 사용해야 합니다. 자칫 잘못걸린 join문은 검색속도를 저하시키고 전반적인 시스템의 성능저하를 유발시킬 수 있기 때문입니다.
    다음의 예제는 full join의 형식과 일치하며 모두 같은 값을 출력합니다.

    >select * from tableA, tableB;
    >select * from tableA join tableB;
    >select * from tableA cross join tableB;

     

    6-2. straight_join
    이 join문은 칼럼의 순서를 from절에 나오는 테이블의 순서대로 출력하는 join 입니다. 경우에 따라 MySQL은 속도를 빠르게 하기 위해 나름대로 내부적으로 from절에 나온 테이블의 순서를 바꾸는 경우가 있습니다. 이때 칼럼의 순서를 from 절에 나오는 순서대로 바꾸기 위해  straight_join을 사용하면 되니다.

     

     

    6-3 theta join
    full join문에 where 를 걸게 되면 theta join입니다.

    >select * from tableA, tableB where
    ->tableA.b=tableB.b;

     

     

    6-4. inner join
    >select * from tableA INNER JOIN tableB USING(b);
    또는 
    >select * from tableA INNER JOIN tableB ON
    ->tableA.b=tableB.b;
    where절 대신에 ON을 사용하여 비교하고자 하는 컬럼을
    직접 지정해 주는 방식. USING는 지정된 공통컬럼명을
    ON으로 지정한것과 동일한 효과를 가짐.

     

     

    6-5. NATURAL JOIN
    두개의 테이블에 같은 이름을 가진 컬럼들이 있고
    그 컬럼들을 기준으로 join을 하려 한다면 natural join을
    사용합니다.
    >select * from tableA natural join tableB;


    추가 예제)
    join문을 사용할 때 select 되는 컬럼의 지정방법
    select tableA.x, tableB.x from tableA, tableB;

    같은 결과 alias를 사용한 방법
    select a.x, b.x from tableA as a, tableB as b;

     

     

    6-6. left outer join
    tableA와 tableB 를 join하여 검색할때 where 절의 
    tableA.b=tableB.b라고 검색하면 두 테이블의 b컬럼에
    일치하는 data만을 불러 오지만 만약 tableB.b의 값이
    tableA.b에 존재하지 않는 값을 가지고 있는 레코드까지
    가져와야 할 경우 사용.
    >select * from tableA left outer join tableB using(b);

    ex)
    >select * from grade left outer join study_report
    ->using(student_name);

     

     

    6-7. right outer join
    left outer join과는 반대의 개념으로
    tableA와 tableB을 join하여 검색할 경우 tableB
    기준으로 tableA에 값이 존재 하지 않는 것을 
    가져와야 할 경우 사용

    ※ 참고
    outer 는 명시적 옵션이므로 생략가능

    'Other > DB' 카테고리의 다른 글

    MySQL - auto_increment 1부터 시작  (0) 2012.05.15
    MySQL - innoDB & auto_increment 적용시키기(alter)  (0) 2012.05.08
    에러) Several ports (8080) required by Tomcat v6.0 Server at localhost are already in use.  (0) 2012.03.06
    JOIN함수  (0) 2012.02.28
    서브쿼리  (0) 2012.02.28
      'Other/DB' 카테고리의 다른 글
      • MySQL - innoDB & auto_increment 적용시키기(alter)
      • 에러) Several ports (8080) required by Tomcat v6.0 Server at localhost are already in use.
      • JOIN함수
      • 서브쿼리
      설 연수
      설 연수

      티스토리툴바