Oracle 12c 데이터베이스 03 - JOIN, ALIAS, VIEW

💡 본 글은 ‘실습과 함께하는! 데이터베이스 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 조건문...;