IT_DBMS/MSSQL

[Transact-SQL] 내부조인(inner join)

JJun ™ 2006. 3. 6. 22:57
 

정규화가 지나치게 많을 경우 역정규화를 통해 다시 테이블을 합치는 것이 나을 수도 있다.

따라서 테이블에서 데이터를 가져오는 방법으로 join은 기본적으로 필요한 방법이라 할 수 있다.

다시 말해서 join은 관계형 데이터베이스에서 테이블간의 쿼리를 표현한 것으로 하나의 쿼리에서 여러 테이블의 필드로 접근하여 원하는 결과를 얻을 수 있게 하는 기능이다.

 

조인 (join) - 두 개의 테이블을 동시에 지정하여 각 테이블의 필드를 이용해 연결하는 것.

 

아래는 조인의 기본 문법이다. 풀 형식으로 사용되는 경우는 거의 없다.

 

조인은 두 테이블의 관계에 따라 내부조인, 외부조인, 상호조인 등 세 가지로 구분할 수 있다.

또한 조인방법에 따라 ansi join과 sql join으로 구분할 수 있는데, ansi join를 표준이라고 생각하면 된다.
 
#조인(joi)테이블 관계에 따른 분류
inner join[내부조인], outer join[외부조인], cross join[상호 조인][명시하지 않을 경우 기본 값 inner join[내부 조인]]
 
#조인방법에 다른 분류
ansi sql문법, sql문법 [ansi sql문법 표준]
 
일반적으로 가장 많이 사용되는 조인은 내부조인으로 join문에 어떤 조인인지 명시하지 않을 경우 자동적으로 inner join 즉, 내부조인으로 정의된다.
 
#내부 조인
두 테이블을 연결하여 조건에 맞는 레코드만 포함하는 새로운 테이블로 조인하는 형태.
 
**내부조인(inner join)**
원본 테이블 간에 공유한 열의 값을 비교하여 여러 원본 테이블에서 행을 검색하는 작업이다. 내부 조인 시 다른 원본 테이블에 대응하는 행이 없는 원본 테이블의 행은 제외된다.
 
ansi와 T-SQL의 조인 문법이다.
T-SQL문법은 조인 조건을 작성하기 위해서 조건절 where절을 사용하고, ansi문법은 inner join 키워드와 on을 사용한다는 차이점이 있다.
 

 

 
login테이블과 buy테이블을 이용해서 inner join
즉, 내부조인을 수행했을 경우 과연 어떤 결과가 나타나는지 확인해 보겠다.
먼저 쿼리분석기를 실행한다.
 
로긴테이블

 

 

바이테이블

 

[쿼리분석기]

사용할 데이터베이스 선택[park_db]선택

login테이블과 buy테이블을 내부조인으로 연결하여 login테이블의 가격 필드값과 buy테이블의 가격 필드값이 같은 데이터를 검색해보겠다.

select name, buy.quan_price from login inner join buy  입력 후 엔터

탭키 누름

on login.buy = buy.quan_price 입력 후 엔터

실행아이콘 클릭

 

내부조인을 수행한 결과 각 테이블에서 조건에 맞는 레코드 중 select문에서 지정한 필드만을 추출해 새로운 레코드를 구성해 새로운 형태의 테이블이 출력되었음을 알 수 있다.