데이터베이스 구축 - 고급 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.