JonghoonAn
어제보다 하나 더
JonghoonAn
전체 방문자
오늘
어제
  • 분류 전체보기
    • 알고리즘
    • 프로젝트
    • 배운점
    • ML
    • 학교 공부
      • OS
      • 네트워크
      • 시스템 프로그래밍
      • 데이터베이스
      • 소프트웨어 분석 및 설계

블로그 메뉴

  • 홈
  • 알고리즘
  • 배운점
  • 학교 공부
  • 머신러닝

공지사항

인기 글

태그

  • recurrent network
  • 역전파
  • conv
  • Learning rate
  • 합성곱
  • 가중치 초기화
  • Backpropagation
  • 전이 학습
  • 인공 신경망
  • neural network
  • 인공신경망
  • 학습률
  • CNN Architecture
  • lecture10
  • 인공지능
  • activation function
  • CS231
  • cs231n
  • convolutional network
  • convolutional layer
  • Transfer learning
  • rnn
  • lecture7
  • pooling
  • lecture9
  • ConvNets
  • lecture6
  • convolutional neural network
  • 활성화 함수
  • 인공지능 학습

최근 댓글

최근 글

티스토리

JonghoonAn

어제보다 하나 더

카테고리 없음

오라클의 데이터 타입 VS MySQL의 데이터 타입

2021. 5. 5. 23:25

데이터 타입은 크게 문자형, 숫자형, 날짜형, 이진형 데이터로 나눌 수 있다. MySQL과 오라클의 데이터 타입은 표현하는 데이터는 유사하지만 데이터 크기와 등 디테일이 조금씩 다르다. 아래에서 데이터의 카테고리를 바탕으로 그룹을 나누고 그 그룹 내에서도 데이터 타입을 소분하여 Oracle과 MySQL의 데이터 타입을 비교해보고자 한다.

 

1. 문자형 데이터 타입

문자형 데이터는 크게 고정 길이 데이터 타입과 가변 길이 데이터 타입과 대용량 텍스트 데이터 타입으로 나눌 수 있다.

 

1-1. 고정 길이 데이터 타입 : 문자형 데이터를 저장하는 데이터 타입, 지정된 길이보다 짦은 데이터 입력될 시 나머지 공간 공백으로 채워진다.

- Oracle / CHAR(n) 최대 2000byte
- MySQL / CHAR(n) 최대 255byte

- Oracle / NCHAR(n), NVARCHAR2(n) 고정 길이 유니코드 데이터 타입, MySQL에는 존재하지 않는다. NVARCHAR2(n)은 NCHAR(n)보다 2배의 바이트를 저장할 수 있다

1-2. 가변 길이 데이터 타입 : 문자형 데이터를 저장하는 데이터 타입, CHAR과 다르게 나머지 공간을 채우지 않는다.

- Oracle / VARCHAR2(n) 최대 4000byte
- MySQL / CHAR(n) 최대 65535byte

 

이외에도 대용량의 데이터를 저장할 수 있는 대용량 텍스트 데이터 타입과 일반 문자열 데이터를 저장하는 데이터 타입이 존재한다. 그 종류는 다음과 같다.

- Oracle / CLOB

대용량 텍스트 데이터 타입 : 최대 4Gbyte
- Oracle / NCLOB

대용량 텍스트 유니코드 데이터 타입 : 최대 4Gbyte

- MySQL / MEDIUMTEXT(n)

가변 길이 데이터 타입 : 최대 약 4GB로 중간 크기의 데이터를 저장

- MySQL / TINYTEXT(n)

문자열 데이터 타입 : 최대 255byte

- MySQL / TEXT(n)

문자열 데이터 타입 : 최대 65535byte

 

전반적으로 Oracle이 더 큰 데이터를 저장함을 볼 수 있다. 또한 유니코드를 저장할 수 있는 데이터 타입도 존재함을 확인할 수 있었다.

 

2. 숫자형 데이터 타입

숫자형 데이터 타입은 크게 소수형 데이터, 정수형 데이터로 나눌 수 있다.

 

2-1. 정수형 데이터 타입

- MySQL / TINYINT(n) : 1byte 크기의 정수형 데이터 타입

- MySQL / SMALLINT(n) : 2byte 정수형 데이터 타입

- MySQL / MEDIUMINT(n) : 3byte 정수형 데이터 타입

- MySQL / INT(n) : 4byte 정수형 데이터 타입

- MySQL / BIGINT(n) : 8byte 정수형 데이터 타입

- Oracle / NUMBER(P,S) : P, S로 표현 숫자 데이터 타입으로, 실수 뿐만 아니라 정수도 표현 가능하다.

 

일반적으로 x바이트 데이터 타입이라고 할 때, 2^(8x)크기의 수를 표현할 수 있다. 이에 부호가 존재하는 signed와 부호가 존재하지 않는 unsigned로 또 나뉘며, 그에 따라 표현되는 범위도 달라진다.

 

2-2. 실수형 데이터 타입

- Oracle / BINARY_FLOAT : 4byte의 부동 소수형 데이터 타입

- Oracle / BINARY_DOUBLE : 8byte의 부동 소수형 데이터 타입

- Oracle / NUMBER(P,S) : P, S로 표현 숫자 데이터 타입으로 정수 뿐만 아니라 실수도 표현이 가능하다

- MySQL / FLOAT(길이,소수) : 4byte의 부동 소수형 데이터 타입으로 고정 소수점을 사용 형태이다.

- MySQL / DECIMAL(길이,소수) : 고정 소수형 데이터 타입고정(길이+1byte) -소수점을 사용 형태이다.

- MySQL / DOUBLE(길이,소수) : 8byte의 부동 소수형 데이터 타입으로, DOUBLE을 문자열로 저장한다.

 

MySQL의 경우, 크기별로 데이터 타입이 나뉨을 확인할수 있고, 특정 데이터 타입은 데이터를 문자열로 저장하는 것을 확인할 수 있었다. 또한 Oracle은 실수형 데이터 타입을 활용하여 정수를 표현하는 것을 확인할 수 있었다.

 

3. 날짜형 데이터 타입

- MySQL / DATE : 날짜(년도, 월, 일) 형태의 기간 표현 데이터 타입(3byte)

- MySQL / TIME : 시간(시, 분, 초) 형태의 기간 표현 데이터 타입(3byte)

- MySQL / DATETIME : 날짜와 시간 형태의 기간 표현 데이터 타입(8byte)

- MySQL / TIMESTAMP : 날짜와 시간 형태의 기간 표현 데이터 타입(4byte)으로, 시스템 변경 시 자동으로 그 날짜와 시간이 저장된다.

- MySQL / YEAR : 년도 표현 데이터 타입(1byte)

- Oracle / DATE : 고정 길이 날짜

- Oracle / INTERVAL_YEAR : 날짜(년도, 월)형태의 기간 표현 데이터 타입

- Oracle / INTERVAL_DAY : 날짜 및 시간(요일,시,분,초)형태의 기간 표현 데이터 타입

- Oracle / TIMESTAMP : 밀리초(ms)까지 표현 데이터 타입

- Oracle / TIMESTAMP_WITH TIME ZONE : 날짜 및 시간대 형태의 데이터 타입

- Oracle / TIMESTAMP_WITH LOCAL TIME ZONE : 저장 시 데이터베이스 시간대를 준수, 조회 시 조회하는 클라이언트 시간 표현 데이터 타입

 

날짜형 데이터의 경우 MySQL과 Oracle 둘다 시간의 형태에 따른 데이터 타입이 존재함을 확인하였다. 하지만 Oracle의 경우 시간의 형태가 더 세분화 되어있었고 현재 시간을 저장하는 데이터 타입에서는 Oracle은 시간대까지 정의할 수 있었다.

 

4. 이진 데이터 타입

- MySQL / BINARY(n) & BYTE(n) : CHAR의 형태의 이진 데이터 타입 (최대 255byte)

- MySQL / VARBINARY(n) : VARCHAR의 형태의 이진 데이터 타입 (최대 65535byte)

- MySQL / TINYBLOB(n) : 이진 데이터 타입 (최대 255byte)

- MySQL / BLOB(n) : 이진 데이터 타입 (최대 65535byte)

- MySQL / MEDIUMBLOB(n) : 이진 데이터 타입 (최대 16777215byte)

- MySQL / LONGBLOB(n) : 이진 데이터 타입 (최대 4294967295byte)

- Oracle / RAW(n) : 가변 길이 이진 데이터 타입(최대 2Gbyte)

- Oracle / LONGRAW : 가변 길이 이진 데이터 타입(최대 4Gbyte)

- Oracle / BLOB : 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입

- Oracle / BFILE : 대용량의 바이너리 데이터를 파일형태로 저장하기 위한 데이터 타입

 

MySQL과 Oracle이 공통적으로 다른 데이터 타입과 마찬가지로 저장할 수 있는 크기와 형태 (고정/가변)이 세분화 되어 관리됨을 확인할 수 있었다.

 

위와 같이 DBMS는 각 데이터의 형태와 특성에 맞게 데이터 타입을 정의해두었고 각 데이터 타입별로 데이터 타입의 크기와 저장 가능한 데이터 등이 정의 되어 있음을 확인하였다. 비슷한 역할을 하는 데이터 자료형임에도 불구하고 MySQL과 Oracle에는 미묘한 차이가 있었고, 이에 유의해야 함을 알 수 있었다.

 

 

- References

https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1824 (Oracle docs / Oracle Data Types)

https://www.w3schools.com/sql/sql_datatypes.asp ( w3school / SQL Data Types)

https://aozjffl.tistory.com/1713 ( 자수성가한 부자 / Maria DB(MySQL), Oracle 데이터 타입 비교)

http://www.incodom.kr/DB_-_%EB%8D%B0%EC%9D%B4%ED%84%B0_%ED%83%80%EC%9E%85/MYSQL ( INCODOM / DB - 데이터 타입 > MYSQL)

http://www.incodom.kr/DB_-_%EB%8D%B0%EC%9D%B4%ED%84%B0_%ED%83%80%EC%9E%85/ORACLE ( INCODOM / DB - 데이터 타입 > ORACLE)

 

저작자표시 비영리 변경금지 (새창열림)
    JonghoonAn
    JonghoonAn
    https://github.com/jjong0225 숭실대 소프트
    hELLO. 티스토리 스킨을 소개합니다.
    제일 위로

    티스토리툴바