💡 본 글은 ‘실습과 함께하는! 데이터베이스 Oracle 12c’ 강의 내용을 바탕으로 정리하였습니다.
JOIN
JOIN의 개념
- 서로 다른 테이블을 공통 칼럼을 기준으로 합치는(결합하는) 테이블 단위 연산
- 조인의 결과 테이블은 이전 테이블의 칼럼 수의 합과 같음
(문법)
SELECT * FROM 테이블1 JOIN 테이블2 ON 테이블1.컬럼명 = 테이블2.컬럼명 ...;
JOIN 종류
- SQL 표준 JOIN. Null 값을 허용하는 내부조인(불가)과 외부조인(허용)으로 구분
구분 | 설명 |
---|---|
INNER JOIN |
조인 시 Null 값 허용 안 함 (Null 값을 가진 레코드는 조인 결과에서 빠짐) |
LEFT JOIN |
조인 시 왼쪽 테이블의 Null 값을 포함해서 표시 |
RIGHT JOIN |
조인 시 오른쪽 테이블의 Null 값을 포함해서 표시 |
FULL JOIN |
LEFT JOIN과 RIGHT JOIN의 합집합(UNION) |
- 오라클에서 조인
구분 | 설명 |
---|---|
Cross JOIN |
조인 조건이 없거나 조건이 유효하지 않으면 사용, 모든 경우의 수를 조합 |
Equi(natural) JOIN |
표준의 INNER JOIN . 대상 테이블에 공통으로 존재하는 컬럼을 대상으로 조인. Using 으로 조인할 컬럼을 지정하거나, 생략하면 알아서 오라클이 조인해줌 |
Non-equi JOIN |
Equi 조인에 해당하지 않는 경우(공통 칼럼이 아닌 칼럼으로 조회를 하는 경우) |
Outer JOIN |
누락되는 컬럼이 존재하는 경우에도 출력. 누락을 원하지 않는 칼럼에 (+ ) 붙임 |
Self JOIN |
자체 테이블과의 조인. 학생-조교의 관계를 파악하는 경우 등에서 사용. |
(문법)
-- Cross JOIN
SELECT * FROM 테이블1, 테이블2;
-- Equi JOIN
SELECT * FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명 = 테이블2.컬럼명;
-- Natrual JOIN (USING 생략 가능)
SELECT * FROM 테이블1 NATURAL JOIN 테이블2 USING(칼럼명);
-- Outer JOIN
SELECT * FROM 테이블1, 테이블2 WHERE 테이블1.컬럼명(+) = 테이블2.컬럼명;
-- Self JOIN
SELECT * FROM 테이블 별명1, 테이블 별명2 WHERE 별명1.칼럼명 = 별명2.칼럼명;
별명(ALIAS)
- SQL 쿼리 결과 생성 시 컬럼명에 대한 별명을 사용해 표시하는 기능
(문법)
SELECT 테이블명1.컬럼명1 AS 별명1, 테이블명2.컬럼명2 AS 별명2 FROM ... ;
뷰(VIEW)
- 임시테이블의 한 종류
- 쿼리의 결과를 임시 테이블에 저장, 부가작업 가능
- 뷰 생성 권한을 주어야 함
- 종류
- Simple View: 하나의 테이블에서 생성
- Complex View: 여러 개의 테이블에서 생성
(문법)
-- 뷰 생성 권한 부여
GRANT CREAT VIEW TO 사용자명;
-- 뷰 생성 혹은 수정
CREATE OR REPLACE VIEW 뷰이름 AS SELECT * FROM 테이블명 WHERE 조건문...;