1. 데이터 타입(Data Type)이란?
데이터 타입(Data Type) : 데이터베이스에 저장되는 데이터의 형식(문자, 숫자, 날짜, 이미지 등)
- 오라클에서 지원하는 데이터 타입의 종류
데이터 타입의 종류 | 의미 |
CHAR(size) | size 크기의 고정길이 문자 데이터 타입 최대크기 : 2,000 Byte 최소크기 : 1 Byte |
VARCHAR2(size) ★ | size 크기의 가변길이 문자 데이터 타입 최대크기 : 4,000 Byte 최소크기 : 1 Byte |
NVARCHAR2(size) | 국가별 문자 집합에 따른 size 크기의 문자 또는 바이트의 가변길이 문자 데이터 타입 최대크기 : 4,000 Byte 최소크기 : 1 Byte |
NUMBER(p, s) ★ | 정밀도(p)와 스케일(s)로 표현되는 숫자 데이터 타입 p : 1 ~ 38 s : -84 ~ 127 |
DATE ★ | 날짜 형식을 저장하기 위한 데이터 타입 |
ROWID | 테이블 내 행의 고유주소를 가지는 64진수 문자 데이터 타입 [행당 6 Byte(제한된 ROWID) 또는 10 Byte(확장된ROWID)] |
BLOB | 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입 최대크기 : 4GB |
CLOB | 대용량의 텍스트 데이터를 저장하기 위한 데이터 타입 최대크기 : 4GB |
BFILE | 대용량의 바이너리 데이터를 파일 형태로 저장하기 위한 데이터 타입 최대크기 : 4GB |
TIMESTAMP(n) | DATE 데이터 타입의 확장된 형태 최대 9자리(nano second)까지 표현 가능 |
INTERVAL YEAR TO MONTH | 년과 월을 이용하여 기간을 저장 |
INTERVAL DAY TO SECOND | 일, 시, 분, 초를 이용하여 기간을 저장 (두 날짜 값의 정확한 차이를 표현하는데 유용) |
2. 문자 데이터 타입(CHAR, VARCHAR2)
1) CHAR 타입(Fixed length character string)
고정 길이의 문자열을 저장하며, 최대 2,000 Byte까지 저장 가능
(지정된 길이보다 짧은 데이터가 입력되는 경우, 나머지 공간은 공백으로 채워진다.)
- CHAR 타입의 특징
- 데이터 입력 시, 사용자가 데이터를 입력하지 않으면 공백으로 채워진다.
- 주민등록번호와 같이 길이가 일정하거나 비슷한 경우에 사용하는 것이 좋다.
- 주소 데이터와 같은 편차가 심한 데이터를 입력할 때 사용하면 저장 공간이 낭비될 수 있다.
2) VARCHAR2 타입(Variable length character string)
가변길이의 문자열을 저장하며, 최대 4,000 Byte까지 저장 가능
(지정된 길이보다 짧은 데이터가 입력되는 경우, 나머지 공간은 NULL로 처리된다.)
- VARCHAR2 타입의 특징
- 데이터 입력 시, 사용자가 데이터를 입력하지 않으면 NULL이 입력된다.
- 입력될 데이터의 편차가 심하거나 NULL이 자주 사용되는 경우에 사용하는 것이 효율적이다.
- 실무에서는 CHAR 데이터 타입보다 VARCHAR2 데이터 타입을 많이 사용한다.
3. 문자형 데이터 타입의 비교
- CHAR와 CHAR의 비교
- CHAR와 VARCHAR2의 비교
- CHAR와 VARCHAR2의 비교 예시
-- EX_TYPE 테이블 생성
CREATE TABLE EX_TYPE ( C CHAR(10), V VARCHAR2(10) );
-- CHAR, VARCHAR2 데이터 생성
INSERT INTO EX_TYPE VALUES ('sql', 'sql');
SELECT * FROM EX_TYPE WHERE C ='sql';
-- true
SELECT * FROM EX_TYPE WHERE V ='sql';
-- true
SELECT * FROM EX_TYPE WHERE C ='sql ';
-- true : CHAR는 빈 문자열을 공백으로 채운다.
SELECT * FROM EX_TYPE WHERE V ='sql ';
-- false : VARCHAR2는 빈 문자열을 NULL로 채운다.
SELECT * FROM EX_TYPE WHERE C = V;
-- false : CHAR와 VARCHAR2에는 7칸의 공백 차이가 있다.
SELECT * FROM EX_TYPE WHERE C = V || ' ';
-- true : VARCHAR2에 공백 7칸을 넣어주면 값이 같아진다.