ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [한기교] SQL 활용 필기(9) - JOIN
    비전공자 공부일기/:: DB - SQL 2020. 5. 4. 12:52

     

    < 조인 JOIN 질의문 기본 >

     

    ㅁ 조인 JOIN의 개념

    : 하나의 SQL 질의문에 의해서 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능

    두 개 이상의 테이블을 '결합'한다는 의미

     

     

    ㅁ SQL에서 간단한 조인 표기법

    1) FROM절에 조인에 참여하는 두 테이블을 기록 (점. 으로 구분)

    2) WHERE절에 조인 조건을 기술

    (ex)
    사원 정보: EMPLOYEE
    부서 정보: DEPARTMENT
    
    조인 조건:
    EMPLOYEE.DNO = DEPARTMENT.DNO

     

    ㅁ 조인문 작성시 규칙

     

    1) 테이블 이름.컬럼 이름

    : 서로 다른 두 테이블의 컬럼(속성)명이 같을 경우, 어느 속성이 어느 테이블에 있는 것인지 DBMS가 알 수 없음

    ---> 컬럼 이름 앞에 테이블 이름을 접두사로 사용 / 테이블 이름과 컬럼 이름은 점(.)으로 구분

     

    2) 테이블 별명

    : 테이블의 이름이 긴 경우 SQL문 작성이 힘드므로, 테이블 이름 대신 별명 사용이 가능

    ---> FROM절에 테이블 이름 다음에 공백을 두고 별명을 적어 정의

     

    * 별명 작성 규칙

    - 별명은 최대 30자까지 가능

    - 하나의 SQL에서 테이블 이름과 별명을 혼용해서 쓸 수 없음. 즉, 별명이 지어진 경우 원래 테이블명을 쓰면 오류가 남

    - 테이블의 별명은 해당 SQL문에서만 유효함. 즉, 여러 SQL문에서 사용할 수 없음

    (ex)
    SELECT DNAME
    FROM EMPLOYEE E, DEPARTMENT D
    WHERE ENO = 103 and E.DNO = D.DNO

     

     

    < 여러 가지 조인 >

     

    ㅁ 카티샨 프로덕트 (Cartesian Product: X)

    : 두 테이블에 속한 튜플들의 모든 가능한 쌍을 생성함

     

    * 일반적인 방법

    - FROM절에 두 개 이상의 테이블명을 기록

    - WHERE절에는 조인 조건을 기술하지 않음 (즉, 모든 쌍을 다 보겠다)

     

    (ex)
    SELECT *
    FROM EMPLOYEE, DEPARTMENT

     

    ㅁ 동등조인 EQUAL JOIN

    : 조인 조건이 "="인 경우

     

     

    ㅁ 자연 조인 NATURAL JOIN

    : 조인 조건을 명시하지 않고 조인한다고 할 때,

    두 테이블에 공통으로 나타나는 속성의 동등 조인이라고 말할 수 있다

     

    - 동등 조인과 질의 결과의 구조(스키마)가 똑같지는 않음

    MS-SQL: 자연 조인을 명시적으로 지원하지는 않음

    ORACLE: 자연 조인을 지원하며, FROM  절에 다음과 같이 씀

    FROM 테이블명 NATURAL JOIN 테이블 명

    --> WHERE절에 JOIN 조건을 쓰지 않음

     

     

    ㅁ 쎄타 조인 (조인 조건)

    : 조인 조건으로 비교연산자 < > <= >= != 등을 쓸 수 있음

    ---> 일반적으로 '조인 조건'에 대하여 쎄타 조인이라고 함

    (ex)
    SELECT E1, ENAME
    FROM EMPLOYEE E1, EMPLOYEE E2
    WHERE E1.SALARY > E2.SALARY

    쎄타 조인에서도 역시 논리연산자 BETWEEN 사용 가능

     

     

     

    ㅁ 셀프 조인

    : 하나의 테이블 내에 있는 컬럼끼리 연관시켜 조인이 필요한 경우

     

    - 조인 대상 테이블이 두 개인데 동일한 테이블로 취급

    ---> 물리적으로 1개 / 논리적으로 2개

    ---> 이 외에는 다른 조인과 똑같음

    ===> 별명을 이용해서 가능

     

     

    ㅁ 다중 조인 (m-way join)

    : 일반적으로 조인에 참여하는 테이블이 2개 --> 보통 2중 조인(2-way join)이라고 함

    그러나 경우에 따라서 그 이상의 조인이 필요한 경우, 다중 조인이라고 한다.

     

     

    ㅁ ANSI 조인

    : SQL을 표준화할 때 만든 ANSI 표준 문법으로,

    기존 SQL과 차이점은 조인 조건을 WHERE가 아닌 FROM절에 표현한다는 것이다

     

    1) CROSS JOIN 크로스 조인

    : 카티샨 프로덕트의 다른 표현법

    SELECT 속성
    FROM 테이블명 CROSS JOIN 테이블명

     

    2) INNER JOIN 내부 조인

    : 일반적인 조건 조인의 ANSI 표기법

    FROM 테이블명 INNER JOIN 테이블명 ON 조인조건
    
    또는 INNER 생략 가능
    
    FROM 테이블명 JOIN 테이블명 ON 조인조건

    --> WHERE절을 쓰지 않는 대신 FROM절에 'ON' 키워드로 조건을 나타내는 것을 볼 수 있음

     

     

    3) OUTER JOIN 외부 조인

    : 조인 조건을 만족하지 않는 튜플들도 결과로 보고 싶은 경우

     

    일반적인 조인은 조인 조건을 만족하는 튜플들만이 결과로 나온다 --> 정보의 손실

    따라서 조건을 만족하지 않는 튜플들도 보고싶은 경우, 조인에 참여하는 테이블에 속한 모든 튜플들이 나오는 게 외부 조인

     

    - LEFT OUTER JOIN: 왼쪽 테이블에 있는 튜플들은 다 나옴

    - RIGHT OUTER JOIN: 오른쪽 테이블에 있는 튜플들은 다 나옴

    - FULL OUTER JOIN: 양쪽 테이블에 있는 튜플들은 최소 한 번씩은 다 나옴

     

     

     

     

     

    댓글

coding wanee