이론_전공/데이터 베이스

Chapter_04_SQL 고급

오뀨기 2020. 10. 14. 21:11

"오라클로 배우는 데이터베이스 개론과 실습 2판"교재와 PPT 그리고 강의 내용을 바탕으로 정리함.

 

01_내장 함수

 

 

1. SQL 내장 함수

- 상수나 속성 이름을 입력값으로 받아 단일 값을 결과로 반환(수학의 함수와 비슷한 개념)

- 모든 내장 함수는 최초에 선언될 때 유효한 입력값을 받아야함.

 

☆ 오라클에서 제공하는 주요 내장 함수

 

 

 

 

★ 숫자함수

 

 

 

 

 

 

 

★ 문자 함수

 

 

 

 

 

 

 

★ 날짜/시간 함수

 

 

☆ datetime 주요 인자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. NULL 값 처리

- 아직 지정되지 않은 값

- ‘0’, ‘’ (빈 문자), ‘ ’ (공백) 등과 다른 특별한 값

- 비교 연산자로 비교가 불가능함.

- 연산을 수행하면 결과 역시 NULL 값으로 반환됨.

 

 

 

☆ 주의할 점

- ‘NULL+숫자’ 연산의 결과는 NULL

- 집계 함수 계산 시 NULL이 포함된 행은 집계에서 빠짐

- 해당되는 행이 하나도 없을 경우 SUM, AVG 함수의 결과는 NULL이 되며, COUNT 함수의 결과는 0

 

 

 

☆ NULL 값에 대한 연산과 집계 함수

 

 

 

 

 

☆ NULL 값을 확인하는 방법 – IS NULL, IS NOT NULL

- NULL 값을 찾을 때는 ‘=’ 연산자가 아닌 ‘IS NULL’을 사용

- NULL이 아닌 값을 찾을 때는 ‘<>’ 연산자가 아닌 ‘IS NOT NULL’을 사용

 

 

 

 

☆ NVL 함수

- NULL 값을 다른 값으로 대치하여 연산하거나 다른 값으로 출력

- NVL(속성, 값) (-> 속성 값이 NULL이면 '값'으로 대치)

 

 

 

 

 

 

 

3. ROWNUM

- 내장 함수는 아니지만 자주 사용되는 문법임 (자동 번호 매김)

- 오라클에서 내부적으로 생성되는 가상 컬럼으로 SQL 조회 결과의 순번을 나타냄

- 자료를 일부분만 확인하여 처리할 때 유용

 

 

 

 

 

 

 

 

02_부속질의

- 하나의 SQL 문 안에 다른 SQL 문이 중첩된nested 질의

- 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용

- 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다 필요한 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음

- 구성 : 주 질의(main query), 부속질의(sub query)

 

 

 

 

☆ 부속질의의 종류

 

 

 

 

1. 중첩질의 - WHERE 부속질의

- WHERE 절은 보통 데이터를 선택하는 조건 혹은 술어(predicate)와 같이 사용

  (술어 부속질의(predicate subquery)라고도 함)

 

 

☆ 중첩질의 연산자의 종류

 

☆ 비교연산자

- 부속질의가 반드시 단일 행, 단일열을 반환(아닐 경우 질의를 처리할 수 없음)

 

 

 

 

☆ IN, NOT IN

- IN 연산자

  : 주질의 속성 값이 부속질의에서 제공한 결과 집합에 있는지 확인(check)하는 역할

  : 부속질의의 결과 다중 행을 가짐

  : 주질의는 WHERE 절에 사용되는 속성 값을 부속질의의 결과 집합과 비교해 하나라도 있으면 참

 

- NOT IN 연산자 : IN과 반대

 

 

 

 

 

2. 스칼라 부속질의 - SELECT 부속질의

- 부속질의의 결과 값을 단일 행, 단일 열의 스칼라 값으로 반환

- 원칙적으로 스칼라 값이 들어갈 수 있는 모든 곳에 사용 가능하며, 일반적으로 SELECT 문과 UPDATE SET 절에 사용

- 주질의와 부속질의와의 관계는 상관/비상관 모두 가능

- 세미콜론을 따로 쓰지 않음

 

 

 

 

 

3. 인라인 뷰 - FROM 부속질의

- 테이블 이름 대신 인라인 뷰 부속질의를 사용하면 보통의 테이블과 같은 형태로 사용

- 부속질의 결과 반환되는 데이터는 다중 행, 다중 열이어도 상관없음

(다만 가상의 테이블인 뷰 형태로 제공되어 상관 부속질의로 사용될 수는 없음)

 

 

 

 

 

 

 

 

 

03_뷰

- 하나 이상의 테이블을 합하여 만든 가상의 테이블(실제 테이블처럼 사용할 수 있도록 함)

 

 

☆ 뷰의 장점

1. 편리성 / 재사용성

 - 여러 테이블에서 데이터를 가져와 하나의 테이블로 정의함으로써 질의 작성이 간단해짐

 - 미리 작성된 질의를 뷰로 정의해 두면 질의 재사용 가능

 

2. 보안성

 - 원본 테이블에서 보안이 필요한 속성을 제외하고 새로운 테이블을 정의하여 사용자에게 제공

 

3. 논리적 데이터 독립성

 - 뷰를 정의하여 사용하게 하면 개념스키마에 정의된 테이블 구조가 변경되어도 응용 프로그램이 변경되지 않음.

 

 

 

☆ 뷰의 특징

   1. 원본 데이터 값에 따라 같이 변함

   2. 독립적인 인덱스 생성이 어려움

   3. 삽입, 삭제, 갱신 연산에 많은 제약이 따름