1. 객체
1. 객체란
- 오라클의 객체는 데이터 보관 및 관리를 용이하게 하기 위한 저장 공간 및 기능을 제공하는 역할을 한다.
- 객체의 종류로는 데이터 사전, 인덱스, 테이블, 뷰, 시퀀스, 동의어 등 다양한 종류의 객체가 존재한다.
2. 데이터 사전(Data Dictionary)
- 오라클의 데이터 저장공간은 사용자 정의 테이블과 데이터 사전으로 나뉘게 된다.
- 데이터 사전은 데이터베이스를 구축하고 구성/운영하는 데 필요한 모든 정보를 저장하는 특수한 테이블. 데이터베이스 서버를 구축하는 순간 그 시점에 자동으로 생성.
- 데이터 사전은 메모리, 성능, 권한, 객체, 사용자 등 데이터베이스 운영에 필요한 전반적인 정보들을 저장하고 있다. 이런 데이터들에 문제가 생기면 데이터베이스 자체를 사용하지 못할 수도 있다.
- 데이터 사전에 사용자가 직접 접근해서 데이터조작을 하지 못하도록 설정되어 있다. SELECT 구문으로 정보들만 확인할 수 있는 데이터 사전뷰를 제공한다.
- 데이터 사전 뷰
- USER_xxxx : 현재 데이터베이스 접속한 사용자가 소유한 객체들의 정보를 제공
- ALL_xxxx : 현재 데이터 베이스에 접속한 사용자가 소유한 객체들 또는 다른 사용자가 소유한 객체 중 권한을 가지고 있는 객체의 정보들을 제공. 현재 데이터베이스에 접속한 사용자가 사용할 수 있는 모든 객체의 정보를 제공.
- DBA_xxxx : 데이터베이스 관리를 위한 정보를 제공(SYS 계정으로만 사용가능)
- V$_xxxx : 데이터베이스의 성능 관련 정보를 제공
3. INDEX
- 인덱스는 색인을 테이블에 추가하는 것을 의미
- 테이블의 검색속도를 향상시키기 위해 열에 색인을 추가하는 객체
- 일반적으로 인덱스가 추가되지 않은 테이블에서는 데이터 저장이 저장순서와 무관하게 입력되고 검색할 때 테이블을 풀 스캔하여 검색. 따라서 검색속도가 느려진다.
- 인덱스를 지정한 테이블에서는 인덱스로 지정된 컬럼만 따로 시스템 테이블에서 관리. 인덱스를 기준으로 데이터가 정렬돼서 저장되고 검색할 때도 인덱스 기준으로 검색되기 떄문에 검색속도가 향상된다.
- 인덱스의 종류는 고유 인덱스(UNIQUE INDEX)와 비 고유 인덱스(NON UNIQUE INDEX)로 분류할 수 있다.
- 고유 인덱스(UNIQUE INDEX)
- 중복 값이 허용되지 않는 인덱스
- 제약조건 중 PK(Primary Key), UK(Unique Key)로 지정된 컬럼은 자동으로 고유 인덱스로 지정됨
- 비 고유 인덱스(NO UNIQUE INDEX)
- 중복 값이 허용되는 인덱스
- 무조건 수동으로 인덱스를 생성해줘야 함
- 고유 인덱스(UNIQUE INDEX)
- 인덱스 생성 조건
- 적어도 데이터가 수천만건 이상되는 테이블에 생성
- 테이블의 크기가 작으면 인덱스의 효율이 떨어짐
- 조건구문이나 조인절, 서브쿼리절에 자주 사용되는 컬럼에 지정
- 검색하는 데이터의 양이 전체 데잍너의 5% 미만일 때
ex) 데이터가 10,000,000건 -> 검색 데이터가 500,000건 - FK(Foreign Key) 컬럼은 반드시 인덱스를 생성
- 인덱스 생성 방법
- 자동 생성 방법
- PK, UK 지정된 컬럼은 인덱스가 자동으로 생성됨
- 고유 인덱스로 생성됨
- 수동 생성 방법
- CREATE INDEX 인덱스명
ON 테이블명 (컬럼 or 함수 or 수식);
- CREATE INDEX 인덱스명
- 자동 생성 방법
- 인덱스 삭제 방법
- DROP 인덱스명;
4. 뷰(View)
뷰는 가상 테이블의 역할을 하는 객체로 SELECT 구문의 결과를 저장하는 테이블.
물리적인 데이터를 저장하는 게 아니고 SELECT 구문의 결과인 논리적인 데이터 테이블을 저장하여 사용하는 목적을 가진 객체.
SELECT 구문의 원본 테이블의 데이터가 변경되면 VIEW의 데이터도 영향을 받아서 자동 변경됨.뷰의 사용 목적
- 편리성 : SELECT 구문이 복잡해지면 작성하기 까다로워지는 데 복잡한 SELECT 구문을 분리해서 VIEW로 생성할 경우 SELECT 구문의 복잡성을 낮출 수 있다.
- 보안성 : SELECT 구문의 원천 테이블에 접근하지 않고 해당 데이터들을 조회만 할 수 있기 때문에 원천 테이블의 데이터를 조작 할 수 없다. 별칭을 사용해서 원천테이블의 컬럼명을 숨길수도 있기 때문에 원천 테이블의 정보를 노출하지 않는다.
뷰의 종류
- 단순 뷰 (SIMPLE VIEW)
- 단일 테이블로 만들어진 뷰
- 함수나 수식은 포함되지 않고 단순 컬럼의 데이터만 조회해서 만들어진 뷰
- DML(INSERT, DELETE, UPDATE)의 사용이 가능
- 단순 뷰는 많이 사용되지 않음
- 복합 뷰 (COMPLEX VIEW)
- 다중 테이블이 조인돼서 만들어진 뷰
- 일반적으로 뷰라고 부르는 테이블의 형태가 복합뷰이다.
- 함수나 수식을 포함한 쿼리로 생성
- 여러 개의 테이블이 조인된 형태이기 때문이 DML(INSERT, DELETE, UPDATE)의 사용이 불가능
- 거의 모든 뷰는 복합뷰의 형ㅌ내로 생성
- 단순 뷰 (SIMPLE VIEW)
뷰의 생성 방법
- CREATE (OR REPLACE) (FORCE or NOFORCE) VIEW 뷰이름 (
컬럼1,
컬럼2,
컬럼3,
....,
컬럼N
) AS (SELECT 구문)
[WITH CHECK OPTION CONTRAINT 제약조건명]
[WITH READ ONLY CONSTRAINT 제약조건명]; - OR REPLACE : 이미 뷰이름으로 생성된 뷰가 존재하면 지금 생성하는 뷰로 대체한다.
- FORCE : 원천 테이블이 존재하지 않아도 뷰를 생성. 지정하지 않았을때의 기본값은 NOFORCE
- WITH CHECK OPTION : 뷰에 의해서 검색가능한 행만 DML 구문의 사용이 가능하도록 설정
- WITH READ ONLY : 뷰를 통해서는 SELECT 구문만 사용가능하도록 설정
- CREATE (OR REPLACE) (FORCE or NOFORCE) VIEW 뷰이름 (
인라인 뷰
- 인라인 뷰는 FROM절에 사용된 서브쿼리
- 뷰를 따로 생성하지 않고 SELECT 구문으로 된 가상 테이블을 사용하는 것이기 때문에 뷰라고 볼 수 있다.
- 조인이나 조건 검색할 때 자주 사용, 그룹함수를 써야할 경우 주로 사용된다.
뷰의 삭제 방법
- DROP VIEW 뷰이름;
ORACLE의 ROWNUM
- ROWNUM은 행번호를 붙여주는 기능
- 인라인 뷰랑 합쳐졌을 때 최상위 데이터를 조회하는데 유용하게 사용할 수 있다.
- 인라인 뷰에서 지정컬럼으로 정렬돼있는 데이터에 ROWNUM을 지정하고 조건절에서 ROWNUM에 제한을 걸면 최상위 N데이터를 조회할 수 있다.
5. 시퀀스(Sequence)
- 시퀀스는 유일한 숫자를 만들어서 제공해주는 객체
- 시퀀스는 게시글 번호와 같이 중복되서는 안되는 컬럼에 지정해서 게시글번호를 시퀀스에서 받아서 사용하는 방식으로 설정을 할 수 있다.
- 시퀀스 생성 방법
- CREATE SEQUENCE 시퀀스명
START WITH 시작값
INCREMENT BY 다음값이 될 때 증가할 값
MAXVALUE 상한값 or NOMAXVALUE
MINVALUE 하한값 or NOMINVALUE
CYCLE or NOCYCLE
CACHE 캐시메모리 생성개수 or NOCACHE; - START WITH : 시퀀스를 만들 때 지정할 시작값 설정
- INCREMENT BY : 현재 값에서 다음 값이 될 때 증가할 증가값
- MAXVALUE/MINVALUE : 상/하한값지정. 지정 안할 시 기본은 NOMAXVALUE/NOMINVALUE
- CYCLE : 상한 값까지 도달했을 때 다시 처음 시작 값부터 재생성할지의 여부를 결정. 지정 안할시 NOCYCLE이 기본값
- CACHE : 캐시메모리 생성 개수를 지정하는 옵션. 기본 값은 NOCACHE. NOCACHE로 지정 시 추가적인 캐시메모리 생성없이 20개로 캐시메모리 지정
- CREATE SEQUENCE 시퀀스명
- 시퀀스의 사용
- 시퀀스명.NEXTVAL : 시퀀스로부터 다음 값을 할당받음
- 시퀀스명.CURRVAL : 시퀀스로부터 마지막에 할당받은 값을 재할당받음
- 시퀀스의 수정
- ALTER SEQUENCE 시퀀스명
INCREMENT BY 증가값
MAXVALUE
MINVALUE
CYCLE
CACHE; - 위에 표기된 옵션들은 수정가능하고 시작번호는 수정이 불가능
- ALTER SEQUENCE 시퀀스명
- 시퀀스 삭제
- DROP SEQUENCE 시퀀스명;
6. Synonym(동의어)
- 오라클의 객체에 별칭을 달아주는 역할을 하는 객체.
- Synonym 생성 방법
- CREATE [PUBLIC] SYNONYM 동의어이름(별칭)
FOR [사용자.]객체이름;
- CREATE [PUBLIC] SYNONYM 동의어이름(별칭)
- Synonym 삭제 방법
- DROP [PUBLIC] SYNONYM 동의어이름(별칭);
728x90
'네이버클라우드 캠프 5기 > 학습내용 정리' 카테고리의 다른 글
19. ORACLE - PL_SQL (0) | 2023.05.02 |
---|---|
18. ORACLE - Constraint (0) | 2023.05.02 |
16. ORACLE - DDL (0) | 2023.05.02 |
15. ORACLE - DML (0) | 2023.05.02 |
14. ORACLE - Join & SubQuery (0) | 2023.04.13 |