[ 목차 ]
1. 조인의 개념
2. 조인의 규칙
3. EQUI(등가) JOIN
4. 테이블명.칼럼명
5. JOIN 조건 기술의 주의사항
6. Non EQUI(비등가) JOIN
7. 3개 이상의 테이블 JOIN
8. JOIN의 필요성
1. 조인의 개념
1) 두 개 이상의 테이블 둘을 연결/결합하여 데이터를 출력하는 것으로, 대부분의 SQL 문장이 해당
2) 관계형 데이터베이스의 가장 큰 장점이며 대표적인 핵심 기능
3) 일반적으로 PRIMARY KEY와 FOREIGN KEY값의 연관에 의해 성립
4) PK, FK의 관계 없이 논리적인 값들의 연관만으로도 성립 가능
2. 조인의 규칙
1) 여러 테이블이 나열되더라도 SQL에서 데이터를 처리할 때 단 두 개의 집합 간에만 조인이 발생
2) A, B, C 테이블이 나열되더라도 특정 2개의 테이블이 먼저 조인되고, 다른 하나가 이어서 조인
3) 4 개 이상의 테이블 역시 같은 프로세스를 반복
4) 테이블의 조인 순서는 옵티마이저에 의해서 결정
5) JOIN에 참여하는 대상 테이블이 N개일 때 테이블로부터 데이터를 조회하기 위해 필요한 JOIN 조건은 N-1개 이상
3. EQUI(등가) JOIN
SELECT 테이블1.칼럼명, 테이블2.칼렁명... FROM 테이블1, 테이블2 WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;
1) 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우 사용되는 방법으로 대부분 PK <-> FK의 관계를 기반
2) 테이블 설계 시 나타난 PK <-> FK의 관계를 이용하는 것이지 반드시 PK <-> FK의관계로만 성립되는 것은 아님
3) 계층형, 망형 데이터베이스와 비교해서 관계형 데이터베이스의 큰 장점
4) JOIN의 조건는 WHERE절에 기술하는데, =연산자를 사용해서 표현
4. 테이블명.칼럼명
1) 2, 3의 이유로 특정 칼럼에 접근하기 위해 칼럼이 어느 테이블에 존재하는 칼럼인지 테이블명과 칼럼명을 나눠 명시
2) JOIN에 사용되는 두 개의 테이블에 같은 칼럼명이 존재하면 DBMS의 옵티마이저는 어떤 칼럼을 사용할지 모르기 때
문에 파싱 단계에서 에러가 발생
3) 조회할 데이터가 어느 테이블에 있는 칼럼을 말하는 것인지 쉽게 알게 하여 SQL 가독성, 유지보수성을 높임
4) 하나의 SQL 내에 유일하게 사용하는 칼럼명의 경우 테이블명을 붙이지 않아도 작동하지만 습관을 기르는 것을 권장
5) join 대상이 되는 테이블명이 조회하고자 하는 칼럼 앞에 반복해서 나오기 때문에 ALIAS를 사용하여 정리
5. JOIN 조건 기술의 주의사항
1) 테이블에 대한 ALIAS를 적용해서 SQL 문장을 작성했을 경우 WHERE절과 SELECT절에는 테이블명이 아닌 테이블에 대
한 ALIAS를 사용해야 함
2) SQL 문장 내에서 유일하게 사용하는 칼럼명이라면 ALIAS를 붙이지 않아도 되지만 권장하지 않음
6. Non EQUI(비등가) JOIN
SELECT a.칼럼명, b.칼럼명 ... FROM 테이블1 as a, 테이블2 as b
WHERE a.칼럼명1 BETWEEN b.칼럼명1 AND b.칼럼명2;
1) 두 개의 테이블 간에 칼럼 값이 서로 정확하게 일치하지 않는 경우 사용
2) = 연산자가 아닌 다른 연산자(between, >, >=, <, <= 등)을 사용해 JOIN을 수행
3) 데이터 모델에 따라서 사용 불가능한 경우도 존재
7. 3개 이상의 테이블 JOIN
1) 관계가 없는 테이블이 존재할 겨우 중간에 서로 연관관계가 이슨 테이블을 추가
8. JOIN의 필요성
1) 불필요한 데이터의 정합성을 확보하고 이상현상 발생을 피하기위해 테이블을 분할하는 정규화는 데이터들을 분할된 테이블로부터 조회하기 위해서 테이블 간의 논리적인 연관관계를 필요로 함
2) 위 논리적 관계를 구체적으로 표현 가능한 것이 SQL 문장의 JOIN 조건
3) 관계형 데이터 베이스의 장점이지만, 잘못 기술하면 시스템 자원 부족이나 과다한 응답시간 지연을 유발할 수 있음
'자격증 > SQLD' 카테고리의 다른 글
SQLD 2과목 2-4장. 서브쿼리 (0) | 2020.03.12 |
---|---|
SQLD 2과목 2-2장. 집합연산자 (0) | 2020.03.12 |
SQLD 2과목 1-8장. ORDER BY절 (0) | 2020.03.12 |
SQLD 2과목 1-7장. GROUP BY, HAVING절 (0) | 2020.03.12 |
SQLD 2과목 1-5장. WHERE절 (0) | 2020.03.12 |