📌 데이터 베이스 객체
데이터베이스 내에 존재하는 논리적인 저장 구조를 데이터베이스 객체라 한다.
종류에는 테이블, 뷰, 인덱스 등이 있다.
📌 테이블
데이터를 담고 있는 객체
1. 테이블 생성
CRETAE TABLE 테이블명(
칼럼 칼럼데이터타입,
NAME VARCHAR2(10) NOT NULL
);
📖 문자 데이터 타입
CHAR (크기) | 고정길이 문자, 최대 2000byte, 디폴트 값은 1byte |
VARCARCHAR2 (크기) | 가변길이 문자, 최대 4000byte, 디폴트 값은 1byte |
NCHAR (크기) | 고정길이 유니코드 문자(다국어 입력 가능), 최대 2000byte, 디폴트 값은 1 |
NVARCARCHAR2 (크기) | 가변길이 유니코드 문자(다국어 입력 가능), 최대 4000byte, 디폴트 값은 1 |
LONG | 최대 2GB 크기의 가변길이 문자형, 잘 사용하지 않음 |
→ CHAR 와 VARCARCHAR2 타입은 실질적인 차이가 없다.
BUT, 공간 효율화를 위해 CHAR 보다는 VARCARCHAR2 를 사용하는 것이 좋다.
📖 숫자 데이터 타입
NUMBER [(p, [s])] | 가변숫자, p(1~38, 디폴트 값은 38)와 s(-84~127, 디폴트 값은 0)는 십진수 기준, 최대 22byte |
FLOAT[(p)] | NUMBER의 하위 타입, p는 1~128, 디폴트 값은 128, 이진수 기준, 최대 22byte |
BINARY_FLOAT | 32비트 부동소수점 수, 최대 4byte |
BINARY_DOUBLE | 64비트 부동소수점 수, 최대 8byte |
📌 제약조건
데이터 무결성(데이터의 정확성과 일관성을 유지)을 보장하기 위한 용도로 사용된다.
제약조건에는 NOT NULL, UNIQUE, 기본키, 외래키 등이 있다.
📖 NOT NULL
→ 칼럼에 반드시 값이 들어가야 한다.
칼럼명 데이터타입 NOT NULL
📖 UNIQUE
→ 칼럼에 들어가는 값이 유일해야 한다.
칼럼명 데이터타입 UNIQUE
📖 기본키 (Primary Key)
→ 테이블 당 1개의 기본키만 생성할 수 있다.
칼럼명 데이터타입 PRIMARY KEY
📖 외래키 (Foregin Key)
→ 테이블 간의 참조 데이터 무결성을 위한 제약조건
→ 제약사항 : 참조하는 테이블이 먼저 생성되어야 한다. 참조키가 참조 테이블의 기본키로 만들어져야 한다.
2. 테이블 삭제
DROP TABLE 테이블명
📌 뷰
하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 한다. 마치 테이블처럼 사용할 수 있다.
1. 생성
CREATE OR REPLAVE VIEW 뷰명 AS
SELECT 문장;
2. 삭제
DROP VIEW 뷰명
📌 인덱스
테이블에 있는 데이터를 빨리 찾기 위한 용도
1. 생성
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(칼럼1, ... );
→ UNIQUE 를 붙이면 중복 값을 허용하지 않는다는 것이다.
EX. TB_EMP 테이블의 EMPNO 칼럼에 인덱스 생성
CREATE UNIQUE INDEX TB_EMP_IX01
ON TB_EMP(EMPNO);
2. 삭제
DROP INDEX 인덱스명
📌 시퀀스 (sequence)
자동 순번을 반환한다. 유일한 숫자를 구할 때 시퀀스를 사용하면 편리하다.
1. 생성
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증가값
START WHIT 시작값
MINVALUE 최소값
MAXVALUE 최댓값
NOCYCLE | CYCLE
NOCACHE | CACHE;
INCREMENT BY 증가값 : 0이 아닌 정수. 양수이면 증가, 음수이면 감소. 디폴트값은 1
NOCYCLE : 디폴트 값으로 최대나 최소값에 도달하면 생성 중지
CYCLE: 증가는 최대값에 도달하면 다시 최소값부터 시작
NOCACHE : 디폴트로 메모리에 시퀀스값을 미리 할당해 놓지 않는다. 디폴트값은 20
CACHE : 메모리에 시퀀스 값을 미리 할당해 놓고, 속도가 빠르며, 동시 사용자가 많을 경우 유리
EX. 아래 시퀀스는 1부터 시작해서 1씩 증가하며 최소값은 1 최대값은 1000까지 순번이 자동 생성된다.
CREATE SEQUENCE emp_seq
INCREMENT BY 1
START WITH 1
MINVALUE 1
MAXVALUE 1000
NOCYCLE
NOCACHE;
2. 삭제
DROP SEQUENCE 시퀀스명
📌 파티션 테이블
테이블에 있는 특정 칼럼 값을 기준으로 데이터를 분할해서 저장해 놓는 것이다.
많은 데이터를 가지고 있는 테이블의 경우 데이터 조회 시 성능을 위해 사용한다.
100만건의 데이터에서 특정월에 판매된 특정상품을 검색하려는 경우
파티션이 없으면 100만건 데이터를 다 조회해서 조건에 맞는 데이터를 찾고
파티션이 있는 경우 특정월의 데이터만 조회해서 조건에 맞는 데이터를 찾는다.
'Database' 카테고리의 다른 글
[MySQL] MySQL 8.0 설치 (1) | 2023.01.09 |
---|---|
CASE WHEN (0) | 2022.12.07 |
SQL 알아보기 (0) | 2022.12.07 |
[oracle] null 처리하기 (NVL, NVL2 함수) (0) | 2022.11.30 |
서브쿼리(SubQuery) (0) | 2021.09.08 |