▣ 조인(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 |