ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB JOIN 서브쿼리 유니온 조인 레프트조인 라이트조인
    Database/MS-SQL 2008. 10. 8. 12:21
    반응형
    쭝요하고 잘하면 좋단다 ㅋ

    관계형 데이터베이스에서 조인모르면 바보 ㅋ

    조인 : 두개 이상의 테이블들을 합성한 후 , 여기서 유용한 정보를 추출하는 연산
    조인의 종류 : 크로스 조인, 자연 조인, 내부조인, 욉조인, 자체 조인
    정규화 과정을 통해 분할된 테이블들로 부터 통합적인 정보를 얻기위해서
    조언은 불가피하다

    ! 프라이머리키 포린키가지고 조합해서 검색하는것

    조인하는방법 




    조인의 종류

    크로스 조인 : 투테이블을 서로 고하는 개념의 연산으로 일명 카티션 곱, 실제 많이 안쓰임
    자연 조인 : 네츄럴 조인 조인 테이블에 같은 이름의 열이 둘이상 나타나지 않도록 하는 조인
    구문:
    ① SELECT column [, ...n ] FROM table1 { CROSS JOIN table2 } [, ...n ]
    ② SELECT column [, ...n ] FROM table1 {, table2 } [, ...n ]



    내부조인  :  이너 조인 각테이블에서 비교연산자에 의한 조인을 만족하는 행들만 조인 테이블에 포함
    시켜주는 조인으로 , 대부분의 조인은 이에 해당한다


    구문:

    ① SELECT column [ , ...n]

        FROM table1 [[AS] alias1 ]

          { [INNER] JOIN table2 [[AS] alias2 ]

            ON join_condition } [ , ...n ]

    ② SELECT column [ , ...n]

        FROM table1, table2 [ , ...n ]

        WHERE join_condition


    외부조인(outer join)
    조인 조건에 만족하지 않은 행까지 결과 집합에 포함하여 돌려주는 특수한 조인으로 집계등에 
    종종 사용된다, 외부 조인에는 왼쪽(letf) 외부조인 오른쪽 외부조인(right) 완전(full) 외부조인이있다


    orders 의 그림이 잘못되었다   그림보면 고구마가 안팔렸는데  레프트 조인값에는 나와있다



    자체 조인(self join)은 자기 자신의 테이블과 하는 조인을 말한다(지금까지 알아본 조인들은 모두 다른 테이블끼리 하는 조인이었다). 자체 조인은 흔하지는 않지만, 같은 테이블의 서로 관련이 있는 행들을 조합해서 추출할 필요가 있을 때 종종 사용한다



    서브쿼리 

    하위 질의(subquery): 다른 명령문(SELECT, INSERT, UPDATE 또는 DELETE )에 포함된 SELECT
    단순 하위 질의(simple subquery): 상호 연관(correlated) 하위 질의가 아닌 하위 질의를 가리킨다
    하위 질의에 대해 유의할 사항
    복잡한 질의를 일련의 논리적 절차로 분리하거나, 다른 질의의 결과에 의존하는 질의를 만들 때 사용한다.
    하위 질의는 반드시 ( )로 둘러싸 주어야 한다.
    하위 질의가 단일 값이나 값 목록을 돌려줄 경우, 이것을 연산식이 오는 곳에 사용할 수 있다. 또한, 하위 질의를 테이블이 오는 곳에 사용할 수도 있다.
    textimage 형의 열을 추출하는 하위 질의는 만들 수 없다.
    하위 질의는 32 수준까지 중첩(nesting)시킬 수 있다. 그러나 이 중첩 수준은 하위 질의의 복잡도나 메모리 양 등에 따라 줄어들 수 있다

    상호 연관 하위 질의(correlated subquery): 외부 질의와 내부 질의가 상호 연관된, 복잡한 형태의 질의를 말한다(질의 중에서 가장 난해한 부분이다).
    상호 연관 하위 질의는 처리 과정도 매우 복잡하다. 다음 코드는 이 처리 과정의 이해를 돕기 위해 titleauthor 테이블의 원시 데이터를 확인한 것이다.

    SELECT *

    FROM titleauthor



    EXISTSNOT EXISTS 연산자는 하위 질의(대부분의 경우 상호 연관 하위 질의)와 함께 사용되는 특수한 연산자로서, 해당 하위 질의가 한 행이라도 결과 집합을 돌려주는지를 판단하는 데 사용한다.
    구문(부분):

    WHERE [NOT] EXISTS ( subquery )

    상호 연관 하위 질의의 단점
    처리가 느리다(JOIN에 비해).
    처리 과정을 이해하기 어렵다(루프 개념과 내·외부 질의 간의 연관 관계 등으로 인해).
    대부분의 상호 연관 하위 질의는 조인으로 변환할 수 있다.
    애초에 상호 연관 하위 질의가 아닌 조인으로 질의를 작성할 것

    유니온(UNION)은 둘 이상의 SELECT 문들의 결과 집합을 합성해서 하나의 결과 집합으로 만들어주는 연산자다
    유니온 연산자로 합성된 SELECT 문은 전체적으로 하나의 문이 된다.
    비슷한 결과 집합을 가지지만 하나의 SELECT 문으로 만들기 힘들 경우에 유니온 연산자를 사용하면 된다.
    복잡한 단일 SELECT 문보다 유니온 연산자를 이용하여 여러 개의 단순한 SELECT 문으로 분리하면 성능 개선도 이룰 수 있다.
    구문:

    select_statement { UNION [ALL] select_statement } [ , ...n ]














    반응형

    댓글

Designed by Tistory.