JOIN

sql 2009. 1. 8. 13:54

조인(JOIN)

 

 

조인(JOIN)

 : 두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것

 

 

INNER JOIN (내부 조인)

  - 가장 많이 사용되는 조인

  - 일반적으로 JOIN이라 하면 INNER JOIN을 뜻함

 

 구문형식

 

  SELECT <열 목록>

  FROM <첫번째 테이블>

        INNER JOIN <두번째 테이블>

        ON <조인될 조건>

  [WHERE 검색조건]

 

 ex> database1 의 테이블 table1과 table2를 id를 일치시켜 INNER JOIN

 

  USE testDB

  SELECT A.id, A.name, B.ename

  FROM table1 A

        INNER JOIN table2 B

        ON A.id = B.id

  WHERE A.id = '007'

 

 

 

OUTER JOIN (외부 조인)

  - 조인의 조건에 맞지 않는 행까지도 포함

  - LEFT OUTER JOIN : 왼쪽 테이블의 것은 모두 출력되어야 함

  - RIGHT OUTER JOIN : 오른쪽 테이블의 것은 모두 출력되어야 함

  - FULL OUTER JOIN : 양쪽 모두에 조건이 일치하지 않는 것을 모두 출력하는 개념

 

 구문 형식 

 

  SELECT <열목록>

  FROM <첫번째 테이블(Left 테이블)>

         <LEFT | RIGHT | FULL> OUTER JOIN <두번째 테이블(RIGHT 테이블)>

         ON <조인될 조건>

  [WHERE 검색조건]

 

 ex>

 

  USE testDB

  SELECT A.stdname, A.addr, B.etcname, B.stdid

  FROM table1 A

         LEFT OUTER JOIN table3 C

              ON B.stdname = C.stdname

         RIGHT OUTER JOIN table2 B

              ON C.etcname = B. etcname

  ORDER BY B.etcname

 

 

 

CROSS JOIN (상호 조인)

  - 한쪽 테이블의 모든 행들과 다른 쪽 테이블의 모든 행을 조인

  - 결과의 개수는 두 테이블 개수를 곱한 개수가 됨 (카티션 곱: Cartesian Product)

 

 ex> CROSS JOIN의 데이터 개수 출력

 

  USE AdventureWorks

  SELECT COUNT_BIG(*) AS [데이터개수]

  FROM Sales.SalesOrderDetail A

      CROSS JOIN Sales.SalesOrderHeader B

 

 

 

SELF JOIN (자체 조인)

  - 별도의 구문이 있는 것이 아니라, 자기 자신과 조인한다는 의미

 

 ex>

 

  USE testDB

  SELECT A.name, B.name, B.detail

  FROM testTbl A

        INNER JOIN testTbl B

        ON A.etcname = B.name

  WHERE A.name = 'Lee'

 

 

 

UNION, UNION ALL

  - 두 쿼리의 결과를 행으로 합치는 것

 

 ex>

 

  USE testDB

  SELECT stdName, Addr FROM stdTbl

  UNION ALL

  SELECT etcName, Room FROM roomTbl

 

 

'sql' 카테고리의 다른 글

DB Design시 고려해야 할 제약성(Constraint) 정의  (0) 2009.01.07
Mysql Account 생성  (0) 2009.01.07
root 사용자 password 바꾸기  (0) 2009.01.07
mysql 한글지원설정  (0) 2009.01.07
mysql 동시접속자수  (0) 2009.01.07
Posted by 으랏차
,