-
[한기교] SQL 활용 필기(9) - JOIN비전공자 공부일기/:: DB - SQL 2020. 5. 4. 12:52
< 조인 JOIN 질의문 기본 >
ㅁ 조인 JOIN의 개념
: 하나의 SQL 질의문에 의해서 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능
두 개 이상의 테이블을 '결합'한다는 의미
ㅁ SQL에서 간단한 조인 표기법
1) FROM절에 조인에 참여하는 두 테이블을 기록 (점. 으로 구분)
2) WHERE절에 조인 조건을 기술
(ex) 사원 정보: EMPLOYEE 부서 정보: DEPARTMENT 조인 조건: EMPLOYEE.DNO = DEPARTMENT.DNO
ㅁ 조인문 작성시 규칙
1) 테이블 이름.컬럼 이름
: 서로 다른 두 테이블의 컬럼(속성)명이 같을 경우, 어느 속성이 어느 테이블에 있는 것인지 DBMS가 알 수 없음
---> 컬럼 이름 앞에 테이블 이름을 접두사로 사용 / 테이블 이름과 컬럼 이름은 점(.)으로 구분
2) 테이블 별명
: 테이블의 이름이 긴 경우 SQL문 작성이 힘드므로, 테이블 이름 대신 별명 사용이 가능
---> FROM절에 테이블 이름 다음에 공백을 두고 별명을 적어 정의
* 별명 작성 규칙
- 별명은 최대 30자까지 가능
- 하나의 SQL에서 테이블 이름과 별명을 혼용해서 쓸 수 없음. 즉, 별명이 지어진 경우 원래 테이블명을 쓰면 오류가 남
- 테이블의 별명은 해당 SQL문에서만 유효함. 즉, 여러 SQL문에서 사용할 수 없음
(ex) SELECT DNAME FROM EMPLOYEE E, DEPARTMENT D WHERE ENO = 103 and E.DNO = D.DNO
< 여러 가지 조인 >
ㅁ 카티샨 프로덕트 (Cartesian Product: X)
: 두 테이블에 속한 튜플들의 모든 가능한 쌍을 생성함
* 일반적인 방법
- FROM절에 두 개 이상의 테이블명을 기록
- WHERE절에는 조인 조건을 기술하지 않음 (즉, 모든 쌍을 다 보겠다)
(ex) SELECT * FROM EMPLOYEE, DEPARTMENT
ㅁ 동등조인 EQUAL JOIN
: 조인 조건이 "="인 경우
ㅁ 자연 조인 NATURAL JOIN
: 조인 조건을 명시하지 않고 조인한다고 할 때,
두 테이블에 공통으로 나타나는 속성의 동등 조인이라고 말할 수 있다
- 동등 조인과 질의 결과의 구조(스키마)가 똑같지는 않음
MS-SQL: 자연 조인을 명시적으로 지원하지는 않음
ORACLE: 자연 조인을 지원하며, FROM 절에 다음과 같이 씀
FROM 테이블명 NATURAL JOIN 테이블 명
--> WHERE절에 JOIN 조건을 쓰지 않음
ㅁ 쎄타 조인 (조인 조건)
: 조인 조건으로 비교연산자 < > <= >= != 등을 쓸 수 있음
---> 일반적으로 '조인 조건'에 대하여 쎄타 조인이라고 함
(ex) SELECT E1, ENAME FROM EMPLOYEE E1, EMPLOYEE E2 WHERE E1.SALARY > E2.SALARY
쎄타 조인에서도 역시 논리연산자 BETWEEN 사용 가능
ㅁ 셀프 조인
: 하나의 테이블 내에 있는 컬럼끼리 연관시켜 조인이 필요한 경우
- 조인 대상 테이블이 두 개인데 동일한 테이블로 취급
---> 물리적으로 1개 / 논리적으로 2개
---> 이 외에는 다른 조인과 똑같음
===> 별명을 이용해서 가능
ㅁ 다중 조인 (m-way join)
: 일반적으로 조인에 참여하는 테이블이 2개 --> 보통 2중 조인(2-way join)이라고 함
그러나 경우에 따라서 그 이상의 조인이 필요한 경우, 다중 조인이라고 한다.
ㅁ ANSI 조인
: SQL을 표준화할 때 만든 ANSI 표준 문법으로,
기존 SQL과 차이점은 조인 조건을 WHERE가 아닌 FROM절에 표현한다는 것이다
1) CROSS JOIN 크로스 조인
: 카티샨 프로덕트의 다른 표현법
SELECT 속성 FROM 테이블명 CROSS JOIN 테이블명
2) INNER JOIN 내부 조인
: 일반적인 조건 조인의 ANSI 표기법
FROM 테이블명 INNER JOIN 테이블명 ON 조인조건 또는 INNER 생략 가능 FROM 테이블명 JOIN 테이블명 ON 조인조건
--> WHERE절을 쓰지 않는 대신 FROM절에 'ON' 키워드로 조건을 나타내는 것을 볼 수 있음
3) OUTER JOIN 외부 조인
: 조인 조건을 만족하지 않는 튜플들도 결과로 보고 싶은 경우
일반적인 조인은 조인 조건을 만족하는 튜플들만이 결과로 나온다 --> 정보의 손실
따라서 조건을 만족하지 않는 튜플들도 보고싶은 경우, 조인에 참여하는 테이블에 속한 모든 튜플들이 나오는 게 외부 조인
- LEFT OUTER JOIN: 왼쪽 테이블에 있는 튜플들은 다 나옴
- RIGHT OUTER JOIN: 오른쪽 테이블에 있는 튜플들은 다 나옴
- FULL OUTER JOIN: 양쪽 테이블에 있는 튜플들은 최소 한 번씩은 다 나옴
'비전공자 공부일기 > :: DB - SQL' 카테고리의 다른 글
[한기교] SQL 활용 필기(11) - 집합연산자, 집단연산자 (0) 2020.05.04 [한기교] SQL 활용 필기(10) - 중첩 질의문 (0) 2020.05.04 [한기교] SQL 활용 필기(8) - 트랜잭션, TCL (0) 2020.05.03 [한기교] SQL 활용 필기(7) - DML (INSERT, UPDATE, DELETE) (0) 2020.05.03 [한기교] SQL 활용 필기(6) - 데이터 검색 (0) 2020.05.03