OPEN between Secret

SQL 기본 및 활용(JOIN) 본문

DB/SQLD

SQL 기본 및 활용(JOIN)

해가꿈꾸는달 2015. 3. 30. 14:38
반응형

JOIN !!!




- 정규화랑 관련, 관계형 데이터베이스의 가장 큰 장점


- 데이터웨어하우스 모델처럼 하나의 테이블에 모든 데이터를 집중시켜놓으면 모든 데이터를 조회 가능함.


-> 그러나 이렇게 되면 정합성에 큰 비용을 지불해야 함.


-> 데이터를 추가, 삭제, 수정하는 작업 역시 상당한 노력이 요구됨.


-> 성능 측면에서도 간단한 데이터를 조회하는 경우에도 규모가 큰 테이블에서 필요한 데이터를 

찾아야 하기 때문에 오히려 검색 속도가 떨어질 수 있다.


-> 그래서 정규화 하여 데이터를 분할하게 한 것이다.! 근데 요구조건을 만족하는 데이터를 

조회할때는 테이블간 논리적인 연관관계가 필요한데 이것을 가능하게 하는것이 JOIN 조건이다.


- 조인은 관계형 데이터베이스의 가장 큰 장점이면서 기본적인 기능임.


- 일반적으로 PK, FK RK값의 연관에 의해 JOIN이 성립된다. 그러나 어떤 경우에는 논리적인 값들의 

연관성만으로 JOIN이 성립 가능하다.(계층형,망 형 에 없는 관계형 데이터베이스의 특징)


- FROM 절에 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할때는 단 두 개의 집합 간에만 조인이 일어남. 

즉 A, B, C가 있으면 A - B 하고 (A - B) - C  이런식으로 일어난다.





EQUI JOIN(등가)



- 두  개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우 .

- 대부분 PK <-> FK의 관계를 기반으로 함. (반드시 PK <-> FK는 아님)

- 고전적인 JOIN 조건은 WHERE 절에 기술하게 되는데 EQUI JOIN 은 '='를 사용.





칼럼명과 테이블 명을 같이 명시하는 이유 


-> JOIN에 사용되는 두 테이블에 같은 칼럼명이 존재하는 경우 DBMS의 옵티마이저는 

어떤 칼럼을 사용해야 할지 모르기 때문에 파싱 단계에서 에러가 발생

-> 개발자나 사용자가 조회할 데이터가 어느 테이블에 있는 칼럼을 말하는 것인지 쉽게 알수 있게 해서.

-> 단! 하나의 SQL문장 내에서 유일하게 사용하는 칼럼명이라면 칼럼명 앞에 테이블 명을 안붙여도 됨.





TABLE ALIAS!


- 근데 긴 테이블명을 계속 되풀이하면서 칼럼 앞에 입력하는것은 개발 생산성을 떨어트릴수 있다.

-> 그래서 테이블 ALIAS를 사용해야 한다!


- 여러 테이블을 사용 조인을 이용하는 경우 유용함.


- !! 테이블에 대한 ALIAS를 적용해서 SQL 문장을 작성했을 경우, WHERE 절과 SELECT 절에는 

테이블명이 아닌 테이블명의 ALIAS를 사용해야 한다.(미 사용시 에러가 발생)






Non EQUI JOIN



-> 두 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우 EQUI JOIN을 사용할 수 없다.

-> 이럴 경우 Non EQUI JOIN을 사용하는데 (Between,>,>=, < , <= 등) 연산자들을 이용하여 JOIN을 수행.


출처 : The Guide for SQL Professional Sql 전문가 가이드 2013 Edition

반응형

'DB > SQLD' 카테고리의 다른 글

데이터 모델의 이해  (0) 2015.06.02
SQL 활용(STANDARD JOIN)  (0) 2015.03.30
SQL 기본 및 활용 (집계함수(GROUP BY, HAVING), ORDER BY)  (0) 2015.03.30
SQL 기본 및 활용  (0) 2015.03.09
SQL 기본 및 활용(where, function )  (0) 2015.03.05