1. 뷰(View)란
- 하나의 가상 테이블이라고 생각
- 작업시 자주 조회하는 데이터들이 있다. 한 테이블에 데이터가
있으면 조회하기 편하겠지만 그렇지 않은 경우가 있다.
- 여러 테이블을 join 사용하여 가져오고 쿼리가 복잡한 경우도 있다.
- 이런 경우 쿼리로 뷰를 만들어 놓고 사용하면 편리하다.
- 보안에도 유리
- 테이블에 데이터를 노출시키고 싶지 않을 때, 뷰를 사용하여
보여줄 테이터만 뷰로 제공할 수 있다
1-1. 뷰의 사용 목적
- 뷰를 만들어 놓으면 복잡한 쿼리를 쉽게 작성 가능
- 원하는 컬럼만 공개하여 원천데이터 테이블 비공개 가능성,
보안성에도 유리
1-2. 뷰의 특징
- 원천 데이터가 변경되면 view데이터도 자동으로 변경
- 뷰의 검색은 자유로우나, 삽입, 수정, 삭제는 제약이 있다.
- 뷰생성 쿼리에 함수를 사용하면 반드시 alias를 지정
2. 시퀀스(Sequence)
- 연속적인 번호를 만들어주는 기능
- 시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는
데이터베이스 객체입니다.
- 보통 pk값에 중복값을 방지하기 위해 사용한다.
3. index
3-1. index란
- 조회속도를 향상시키기 위한 데이터베이스 검색 기술
- 색인이란 뜻으로 해당 테이블의 조회결과를 빠르게 하기 위해 사용
3-2. index원리
- index를 테이블의 특정 컬럼에 한개 이상 주게 되면
index table이 따로 만들어 지고, 인덱스 컬럼의 로우값과
rowid값이 저장되며 로우값은 정렬된 트리 구조로 저장시켜
두었다가 검색시 좀 더 빠르게 해당 데이터를 찾는데 도움을 준다.
- 하지만 DML명령을 사용할때는 원본 table 물론 index table에도
데이터를 갱신시켜 주어야 하기 때문에 update, insert, delete 명령을
쓸때 속도가 느려진다는 단점이 있다.
3-3. index 생성이 불 필요한 경우
- 데이터가 적은 경우에는 익덱스를 설정하지 않는게 오히려 성능에 좋다.
- 조회보다 삽입, 수정, 삭제 처리가 많은 테이블
3-4. DML명령어를 이용했을 경우 취약점
- insert : 두개의 테이블에 동시 insert
- delete : 익덱스에서는 데이터를 사용하지 않음으로 표시하고
지우지 않는다.
- update : 인덱스에는 delete한 후 새로운 데이터를 insert 작업 함
3-5. index생성
SELECT
WHERE
AND/OR
NOT/ <> / !=
AS
DISTINCT
BETWEEN A AND B
LIKE
IS NULL / IS NOT NULL
ORDER BY 컬럼 DESC
ORDER BY 컬럼 (ASC)
COUNT
AVG (평균)
MAX 최대값
MIN 최소값
ABS
DUAL
TRUNC
CONCAT / ||
INITCAP
LOWER
UPPER
LPAD
RPAD
LTRIM
RTRIM
SUBSTR
REPLACE
SYSDATE
TO_CHAR(날짜컬럼)
TO_DATE(문자열컬럼)
NVL()
DECODE()
CASE
GRUOP BY
LEFT OUTER JOIN
서브쿼리
DDL
CREATE
ALTER
TRUNCATE
COMMIT
ROLLBACK
트랜잭션
SELECT, INSERT, UPDATE, DELETE
NOT NULL
UNIQUE
CHECK
PRIMARY KEY
FOREIGN KEY
VIEW
SEQUENCE
INDEX