Post

데이터베이스 구축 - 고급 SQL

#고급 SQL

View

논리테이블

물리 테이블로부터 생성 가능하며, 다수의 테이블 도는 다른 뷰를 이용해 만들 수 있음

■ 장점:

  • 논리적 독립성 제공
  • 데이터 조작 연산 간소화
  • 보안 기능(접근제어) 제공

■ 단점:

  • 뷰 자체 인덱스 불가
  • 뷰 변경 불가
  • 데이터 변경 제약 존재

■ 뷰 생성

CREATE VIEW 뷰 이름 컬럼 목록 AS 데이터 조회 쿼리

테이블 A, B 조인

CREATE VIEW VW_C AS
SELECT *
  FROM A,B
  WHERE A.컬럼1 = B.컬럼2

■ 뷰 변경

뷰 정의 자체를 변경하는 것을 불가능
뷰 이름이나 쿼리문을 변경하는 수단은 제공되지 않음

■ 뷰 삭제

DROP VIEW 테이블명 [CASCADE | RESTRICT]

인덱스

데이터를 빠르게 찾을 수 있는 수단
데이틀베 대한 조회 속도를 높여주는 자료구조
기본키 (PK; Primary Key)는 자동으로 인덱스가 생성됨

■ 인덱스 생성

CREATE UNIQUE INDEX 인덱스명 ON 테이블명

■ 인덱스 삭제

DROP INDEX 인덱스명

■ 인덱스 변경

ALTER INDEX 인덱스명 ON 테이블명

집합연산자

두 개 이상의 테이블에서 여러개의 질의의 결과를 연결하여 하나로 결합하는 연산자

■ UNION

합집합, 중복을 제거하고 모두 포함한 결과 반환

SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL <= 2000
  UNION
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL >= 2000

■ UNION ALL

합집합, 중복된 항목을 포함한 결과 반환

SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL <= 2000
  UNION ALL
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL >= 2000

■ INTERSECT

교집합 추출

SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL <= 2000
  INTERSECT
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL >= 2000

■ MINUS

차집합, 데이터 집압을 기준으로 공통항목을 제외한 결과만 추출

SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL <= 2000
  MINUS
SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE SAL >= 2000

조인(JOIN)

두 개이상의 테이블을 연결하여 데이터를 검색하는 방법
관련된 튜플들을 결합하여 하나의 튜플로 만드는 가장 대표적인 데이터 연결방법

■ 내부 조인

SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A JOIN 테이블2 B
  ON 조인조건
[WHERE 검색조건]

같은 이름의 컴럼이 여러 테이블에 있을 경우 ‘별칭.컬럼명’ 형태로 명시

■ 왼쪽 외부 조인

SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A LEFT JOIN 테이블2 B
  ON 조인조건
[WHERE 검색조건]

■ 오른쪽 외부 조인

SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A RIGHT JOIN 테이블2 B
  ON 조인조건
[WHERE 검색조건]

■ 완전 외부 조인

SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A FULL JOIN 테이블2 B
  ON 조인조건
[WHERE 검색조건]

■ 교차 조인

SELECT 컬럼1, 컬럼2, 컬럼3, 컬럼4
FROM 테이블1 CROSS JOIN 테이블2

조인 조건이 없는 모든 데이터 조합을 추출하기 때문에 ON절이 없음

■ 셀프 조인

SELECT A.컬럼, A.컬럼2, B.컬럼1, B.컬럼2
FROM 테이블1 A JOIN 테이블2 B
  ON 조인조건
[WHERE 검색조건]
This post is licensed under CC BY 4.0 by the author.