데이터베이스 객체
객체 | 설명 |
테이블 | 기본 저장 단위이며 행으로 구성 |
뷰 | 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 나타냄 |
시퀀스 | 숫자 값 생성 |
인덱스 | 데이터 검색 쿼리의 성능 향상 |
동의어 | 객체에 대해 이름 부여 |
단순 뷰와 복합 뷰
기능 | 단순 뷰 | 복합 뷰 |
테이블 수 | 한 개 | 하나 이상 |
함수 포함 | 아니오 | 예 |
데이터 그룹 포함 | 아니오 | 예 |
뷰를 통해 DML 작업 | 예 | 항상은 아님 |
뷰 생성
뷰에 대한 DML 작업 수행 규칙 1
💡 뷰에 다음 항목이 포함되어 있으면서 행 제거 불가능
- 그룹 함수
- GROUP BY 절
- DISTINCT 키워드
- pseudocolumn ROWNUM 키워드
뷰에 대한 DML 작업 수행 규칙 2
💡 뷰에 다음 항목이 포함되어 있으면 뷰의 데이터 수정 불가능
- 그룹 함수
- GROUP BY 절
- DISTINCT 키워드
- pseudocolumn ROWNUM 키워드
- 표현식으로 정의된 열
뷰에 대한 DML 작업 수행 규칙 3
💡 뷰에 다음 항목이 포함되어 있으면 뷰를 통한 데이터 추가 불가능
- 그룹 함수
- GROUP BY 절
- DISTINCT 키워드
- pseudocolumn ROWNUM 키워드
- 표현식으로 정의된 열
- 뷰에서 선택되지 않은 기본 테이블의 NOT NULL 열
DML 작업 거부
- WITH READ ONLY 옵션을 뷰 정의에 추가하여 DML 작업이 수행되지 않도록 함
- 뷰에 있는 임의의 행에서 DML 작업을 수행하려고 시도하면 Oracle 서버 오류 발생
뷰 제거
💡 데이터베이스의 기본 테이블을 기반으로 하기 때문에 뷰를 제거해도 데이터 손실 X
시퀀스
객체 | 설명 |
테이블 | 기본 저장 단위이며 행으로 구성 |
뷰 | 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 나타냄 |
시퀀스 | 숫자 값 생성 |
인덱스 | 일부 쿼리의 성능 향상 |
동의 | 객체에 대해 이름 부여 |
NEXTVAL 및 CURRVAL Pseudocolumn
- NEXTVAL은 사용 가능한 다음 시퀀스 값 반환
- CURRVAL은 현재 시퀀스 값 구함
- CURRVAL이 값을 포함하기 전에 해당 시퀀스에 대해 NEXTVAL이 실행되어야 함
시퀀스 값 캐시
- 시퀀스 값을 메모리에 캐시하면 해당 값에 빠르게 액세스 가능
- 다음과 같은 경우 시퀀스 값에 간격 발생
- 롤백이 발생하는 경우
- 시스템이 중단되는 경우
- 시퀀스가 다른 테이블에서 사용되는 경우
시퀀스 수정 지침
- 시퀀스의 소유자이거나 시퀀스에 대해 ALTER 권한이 있어야 함
- 후속 시퀀스 번호에만 적용
- 다른 번호로 시퀀스를 재시작하려면 시퀀스를 삭제하고 다시 생성해야 함
- 일부 유효성 검사 수행
- 시퀀스 제거하려면 DROP 문 사용
인덱스
객체 | 설명 |
테이블 | 기본 저장 단위이며 행으로 구성 |
뷰 | 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 나타냄 |
시퀀스 | 숫자 값 생성 |
인덱스 | 일부 쿼리의 성능 향상 |
동의어 | 객체에 대체 이름 부여 |
인덱스가 생성되는 방식
- 자동으로 테이블 정의에서 PRIMARY KEY 또는 UNIQUE 제약 조건을 정의하면 고유 인덱스가 자동으로 생성
- 수동으로 행에 액세스하는 속도를 높이기 위해 유저가 열의 비고유 인덱스를 생성할 수 있음
동의어
객체 | 설명 |
테이블 | 기본 저장 단위이며 행으로 구성 |
뷰 | 하나 이상의 테이블에 있는 데이터의 부분 집합을 논리적으로 나타냄 |
시퀀스 | 숫자 값 생성 |
인덱스 | 일부 쿼리의 성능 향상 |
동의어 | 객체에 대체 이름 부여 |
객체의 동의어 생성
💡 동의어를 생성하면 객체를 쉽게 엑세스 가능
- 다른 유저가 소유한 테이블을 쉽게 참조
- 긴 객체 이름을 짧게 만듬