-
표준 조인(INNER JOIN, NATURAL JOIN,FROM 조건절, USING 조건절, ON 조건절)SQLD/SQL 기본과 활용 2020. 8. 27. 18:25
1. INNER JOIN (FROM 조건절)
- 조인 조건을 만족하는 행들만 반환
- 공통된 컬럼은 각 테이블별로 두번씩 출력
- SELECT 절에 * 사용시 테이블 순서대로 칼럼 출력
2. NATURAL JOIN (FROM 조건절)
- 두 테이블 간에 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI JOIN
- 공통된 컬럼은 ALIAS나 접두사를 붙일수 없음.
ex) DEPTNO가 A,B 모두 공통적으로 가지고 있는 칼럼이라면 SELECT 절에서 A.DEPTNO 불가
- 공통된 컬럼은 하나만 출력
- SELECT 절에 * 사용시 공통된 컬럼이 제일 먼저 출력 (첫번째 칼럼으로 출력)
- SQL Server 에서 지원하지 않음. (Oracle은 지원)
3. USING 조건절
- USING 조건절은 원하는 NATURAL JOIN 에서 원하는 칼럼만 선택하여 EQUI JOIN
- NATURAL 조인과 마찬가지로 조인컬럼에 대해서 ALIAS나 접두사를 붙일수 없음.
- SELECT 절에 * 사용시 USING 조건절에 사용된 컬럼이 순서대로 제일 먼저 출력 (첫번째 ... N번째 컬럼으로 출력)
- USING 조건절에 사용되지 않은 컬럼들은 공통된 컬럼이 있을 시 INNER JOIN과 같이 각 테이블별로 두번씩 출력
- SQL Server 에서 지원하지 않음. (Oracle은 지원)
4. ON 조건절
- 조인 서술부(ON 조건절)과 비조인 서술부(WHERE 조건절)을 분리해 가독성을 높이는 장점이 있다.
- WHERE 절 조인과 같이 NON-EQUI JOIN이 가능하다.
- WHERE 절 조인은 공통된 컬럼에 대해 접두사가 선택사항이지만, ON 조건절은 필수조건으로 명확하게 지정해주어야 한다.
ex) DEPTNO -> A.DEPTNO
- OUTER JOIN에서 조인의 대상을 제한하기 위한 목적으로 사용되는 추가조건을 제외한 검색조건들은 WHERE절에 표기하는 것이 좋다.
(ON 조건절에 검색 조건 삽입가능하기는 하다)
# INNER JOIN (INNER 는 디폴트옵션이므로 생략가능) SQL> SELECT A.ENAME, B.DEPTNO, B.DNAME #(ON 조건절을 사용하였으므로 B.DEPTNO가 아닌 DEPTNO는 불가) FROM EMP A INNER JOIN DEPT B #(= FROM EMP A JOIN DEPT B) ON B.DEPTNO = A.DEPTNO; #(= WHERE B.DEPTNO = A.DEPTNO;) # NATURAL JOIN SQL> SELECT A.ENAME, DEPTNO, B.DNAME #(B.DEPTNO 로 작성시 오류) FROM EMP A NATURAL JOIN DEPT B; # 위의 두 예제의 실행결과는 같다. (중복컬럼은 DEPTNO 1개이다.) ''' Asterisk 사용시 (EMP에는 ENAME, DEPTNO, CNAME칼럼이 DEPT에는 DEPTNO, DNAME, CNAME만 있다고 가정한다)''' # INNER JOIN & ON 조건절 (INNER 는 디폴트옵션이므로 생략가능) SQL> SELECT * FROM EMP A INNER JOIN DEPT B ON B.DEPTNO = A.DEPTNO; # 실행결과 (컬럼이 중요하기 때문에, 데이터 출력은 생략하겠음) (데이터는 조인조건을 만족하는 행들만 출력한다) ENAME DEPTNO CNAME DEPTNO DNAME CNAME ------------------------------------------------------------ 데이터 생략 ... # NATURAL JOIN SQL> SELECT * FROM EMP A NATURAL JOIN DEPT B; # 실행결과 (컬럼이 중요하기 때문에, 데이터 출력은 생략하겠음) (데이터는 조인조건을 만족하는 행들만 출력한다) DEPTNO CNAME ENAME DNAME ------------------------------------------------------------ 데이터 생략 ... # USING 조건절 SQL> SELECT * FROM EMP A JOIN DEPT B USING (DEPTNO); # 실행결과 (컬럼이 중요하기 때문에, 데이터 출력은 생략하겠음) (데이터는 조인조건을 만족하는 행들만 출력한다) DEPTNO ENAME CNAME DNAME CNAME ------------------------------------------------------------ 데이터 생략 ...
728x90'SQLD > SQL 기본과 활용' 카테고리의 다른 글
CROSS JOIN (0) 2020.08.27 다중 테이블 조인(ON 조건절, WHERE 절) (0) 2020.08.27 SQL JOIN(EQUI JOIN, NON-EQUI JOIN, OUTER JOIN) (0) 2020.08.24 SQL) GROUP BY 절, HAVING 절, ORDER BY절, SELECT 문장 실행 순서 (0) 2020.08.20 SQL) 집계함수 (0) 2020.08.20