✒️ 2025-05-28 15:30 내용 수정
데이터 타입(자료형)
- Oracle과 MySQL에서 제공하는 데이터 타입을 정리했다.
- 각각의 데이터 타입 명칭과 세부 구현 및 종류는 데이터베이스에 따라 다를 수 있다.
- 실습 및 프로젝트 등에 사용한 타입 위주로 정리하였다.
- 데이터 타입이 많고, 버전마다 지원하지 않는 경우가 있어 공식 페이지나 참고 자료를 보는 것이 더 정확하다.
Oracle
- 참고 자료
- 사용하고 있는 Oracle 버전이 11gR2이므로 20240329 기준 최신 버전 21c에선 추가되거나 수정된 데이터 타입이 있어서 데이터 타입 사용 전에 Oracle 버전을 먼저 확인할 필요가 있다.
1. 정수형 타입
| 종류 |
설명 |
| INTEGER |
정수 데이터 |
| NUMBER(p) |
가변 숫자 데이터 |
|
자릿수 인자 p는 1 ~ 38까지며, p만 줄 경우 정수형으로 사용 가능 |
| MySQL 타입 |
Oracle 타입 |
| TINYINT |
Number(3) |
| SMALLINT |
Number(5) |
| INTEGER |
Number(10) |
| BIGINT |
Number(19) |
2. 소수형 타입
| 종류 |
설명 |
| FLOAT |
부동 소수점 숫자 데이터 |
|
number의 하위 타입으로 자릿수 인자 p는 1 ~ 128이며(기본값 128)이며 이진수 기준 |
| REAL |
실수 데이터 |
| DOUBLE PRECISION |
높은 정밀도의 부동 소수점 숫자 데이터 |
| NUMBER(p,s) |
가변 숫자 데이터로 자주 사용하는 타입 |
|
자릿수 인자로 p는 1 ~ 38 까지(기본값은 38)이며, s는 소수점 자릿수 인자로 -84 ~ 127(기본값 0) |
3. 문자형 타입
- 공식 설명 페이지에선 VARCHAR대신 VARCHAR2를 사용하도록 권장하고 있다.
| 종류 |
설명 |
| CHAR(n) |
고정 길이의 문자열, 속도가 상대적으로 빠름 |
|
최대 2000 byte까지 저장하며, 기본값은 1 byte |
| VARCHAR(n) |
가변 길이의 문자열. 최대 길이 지정 필요, 속도가 중간 정도 |
|
최대 4000 byte까지 저장하며, 기본값은 1 byte |
| CLOB |
대용량의 문자열 데이터 저장 |
|
최대 4 GB까지 저장 |
4. 날짜 타입(Datetime)
| 종류 |
설명 |
| DATE |
날짜를 저장. BC 4712년 1월 1일부터 9999년 12월 31일, 연, 월, 일, 시, 분, 초 입력 가능 |
| TIME |
시간을 저장. 연도, 월, 일, 시, 분, 초, 밀리초 입력 가능 |
| TIMESTAMP |
DATE 타입의 확장 버전으로 날짜와 시간을 함께 저장 |
- 현재 시스템의 날짜 : SYSDATE
- 현재 시스템의 TIMESTAMP : CURRENT_TIMESTAMP
TO_TIMESTAMP() 메소드를 사용해서 문자열 데이터를 TIMESTAMP로 변환할 수 있다.
| Oracle 타입 종류 |
설명 |
| YEAR |
년, -4712 ~ 9999, 0 제외) |
| MONTH |
월, 01 ~ 12 |
| DAY |
일, 01 ~ 31 |
| HOUR |
시간, 00 ~ 23 |
| MINUTE |
분, 00~59 |
| SECOND |
초, 00~59.9 |
5. 불리언(Boolean)
- Oracle database 23c에 추가되었다.
| 종류 |
설명 |
| BOOLEAN |
참(true) 또는 거짓(false)를 저장 |
6. 이진데이터
| 종류 |
설명 |
| BINARY(n) |
고정 길이의 이진 데이터 |
| BLOB |
대용량의 이진 데이터 저장 |
7. 기타 타입
| 종류 |
설명 |
| JSON |
JSON 형식의 데이터 저장 |
| XML |
XML 데이터를 저장 |
MySQL
1. 정수형 타입
| MySQL 타입 종류 |
설명 |
| TINYINT(n) |
매우 작은 정수 데이터, n은 최대 display 너비(255). |
|
범위는 -128 ~ 127이나 0 ~ 255(2^8-1), 1 byte 저장 |
| SMALLINT(n) |
작은 범위의 정수 데이터, n은 최대 255까지 가능 |
|
범위는 -32768 ~ 32767이나 0 ~ 65535(2^16-1), 2 bytes 저장 |
| MEDIUMINT(n) |
중간 범위의 정수 데이터. n은 255까지 가능 |
|
범위는 -8388608 ~ 8388607이나 0 ~ 16777215(2^24-1), 3 bytes 저장 |
| INT |
4 bytes를 저장할 수 있는 정수 데이터 |
|
범위는 -2,147,483,648 ~ 2,147,483,647이나 0 ~4,294,967,295 |
| BIGINT(n) |
큰 범위의 정수 데이터. n은 255까지 가능 |
|
범위는 -9223372036854775808 ~ 9223372036854775807이나 0 ~ 18446744073709551615(2^64-1) |
2. 소수형 타입
| MySQL 타입 종류 |
설명 |
| FLOAT |
부동 소수점 숫자 데이터 |
|
정밀도 p는 저장 용량을 결정하는데만 사용하며, 0~ 23 정밀도는 4 byte의 단일 정밀도 FLOAT |
| REAL |
부동 소수점 실수 데이터 |
| DOUBLE PRECISION |
높은 정밀도의 부동 소수점 숫자 데이터 |
| DECIMAL(M, D) |
고정 소수점 숫자 데이터 |
|
M은 저장할 자릿수를, D는 소수점 자릿수를 결정 |
| NUMERIC(M, D) |
고정 소수점 숫자 데이터으로 DECIMAL을 구현한 타입 |
|
M은 저장할 자릿수를, D는 소수점 자릿수를 결정 |
3. 문자형 타입
| 종류 |
설명 |
| CHAR(n) |
고정 길이의 문자열, 속도가 상대적으로 빠름 |
|
n은 0 ~ 255까지 , 기본값은 1 byte |
| VARCHAR(n) |
가변 길이의 문자열. 최대 길이 지정 필요, 속도가 중간 정도 |
|
n은 0 ~ 65535, 기본값은 1 byte |
| TEXT |
가변 길이의 큰 문자열 저장, 속도가 상대적으로 느림 |
| TINYTEXT |
최대 길이 255(2^8-1) 길이의 글자까지 저장 |
| MEDIUMTEXT |
최대 길이 16,777,215(2^24-1) 길이의 글자까지 저장 |
| LONGTEXT |
최대 길이 4,294,967,295(2^32-1) 길이의 글자까지 저장 |
4. 날짜 타입
| 종류 |
설명 |
| DATE |
날짜를 저장 |
| TIME |
시간을 저장 |
| YEAR |
연도를 저장 |
| DATETIME |
날짜와 시간을 함께 저장 |
|
문자열이나 숫자로 작성한 'YYYY-MM-DD hh:mm:ss' 형식의 값 할당도 지원함 |
|
범위는 '1000-01-01 00:00:00' ~ '9999-12-31 23:59:59' |
| TIMESTAMP |
날짜와 시간을 함께 저장 |
|
범위는 '1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC |
- Data와 Time function으로 월, 일 시간 등을 얻을 수 있다.
| 함수 종류 |
설명 |
| MONTH |
월, 1 ~ 12 |
| DAY |
일, 1 ~ 31 |
| HOUR |
시간, 00 ~ 23 |
| MINUTE |
분, 00~59 |
| SECOND |
초, 00~59.9 |
5. 이진 데이터
| 종류 |
설명 |
| BINARY(n) |
고정 길이의 이진 데이터 |
| VARBINARY(n) |
가변 길이의 이진 데이터 |
| BLOB |
대용량의 이진 데이터 저장 |
| TINYBLOB |
최대 길이 255(2^8-1) 길이의 BLOB 저장 |
| MEDIUMBLOB |
최대 길이 16,777,215(2^24-1) 길이의 BLOB 저장 |
| LONGBLOB |
최대 길이 4,294,967,295(2^32-1) 길이의 BLOB 저장 |
6. 열거형과 집합
| 종류 |
설명 |
| ENUM(val1, val2, val3...) |
가능한 값 목록 중에서 선택한 하나의 값만 가지는 타입, 목록에 65535(2^16-1)개까지 저장 가능 |
| SET(val1, val2, val3...) |
가능한 값 목록 중에서 0개 혹은 그 이상의 값을 가질 수 있는 타입. 목록에 최대 64개까지 저장 가능 |
7. 기타 타입
| 종류 |
설명 |
| JSON |
JSON 형식의 데이터 저장 |