본문 바로가기

Web Sever 개발과 CS 기초/DB 지식

MySQL 데이터 타입 이해와 Java와 Type Mapping(+MSSQL)

MySQL Data Type Mapping

MySQL  설명  Java
TINYINT 1바이트(-128~127) 이론으로 byte, Byte가 맞는데 현실적으로 Java boolean과 맵핑을 한다. boolean, Boolean
INT 4바이트(-21억 ~ 21억) int, Integer
BIGINT,
BIGINT UNSIGJNED
8바이트 primary key Id의 타입으로 많이 사용한다. long, Long
FlOAT 4바이트 - 부동 소수점 타입 - 실수 값을 대략적으로 표현 float, Float
DOUBLE 8바이트 - 부동 소수점 타입 double, Double
DECIMAL(M,D) (고정 소수텀 타입) 정확한 실수 값 표현하기 위해, M은 소수 부분을 포함한 실수 총 자릿수, D는 소수 부분의 자릿값 소수점이 있는 price 타입으로 많이 사용한다. java.math.BigDecimal
     
CHAR(M) 0~255 바이트 저장 가능(영문자는 1글자당 1바이트)
고정 길의의 문자열(설정한 크기보다 데이터 크기가 작다면, 나머지 공간을 공백으로 채워 길이를 M과 같게 만든다.)
String
VARCHAR(M) 0~65535 바이트 저장 가능

가변 길이의 문자열(저장된 문자열 길이만큼만 저장 공간을 사용한다.)
String
TEXT TEXT는 VARCHAR와 비슷하지만 기본 값을 가질 수 없다. String
BINARY, VARBINARY, BLOB GIF같은 이미지 바이트 저장 byte[]
     
DATE 날짜를 저장하는 타입
'1000-01-01' ~ '9999-12-31' (3 Byte)
Java.sql.Date
DATETIME 날짜와 시간을 함께 저장할 수 있는 타입
1000-01-01 00:00:00' ~ '9999-12-31 23:59:59’ (8 Byte)
Java.sql.Timestamp
TIME 시간을 저장할 수 있는 타입
'-838:59:59' ~ '838:59:59’ (3 Byte)
Java.sql.Time
TIMESTAMP 날짜와 시간을 나타내는 타임스탬프를 저장할 수 있는 타입
1970-01-01 00:00:01' ~ '2038-01-19 03:14:07’ (4 Byte)
Java.sql.Timestamp
YEAR YEAR는 연도를 저장할 수 있는 타입
'1901 ~ 2155' (1 Byte)
1901 ~ 2155 (1 Byte)

MSSQL Data Type Mapping

SQL Server Types JDBC Types (java.sql.Types) Java Language Types
bigint BIGINT long
binary BINARY byte[]
bit BIT boolean
char CHAR String
date DATE java.sql.Date
datetime3 TIMESTAMP java.sql.Timestamp
datetime2 TIMESTAMP java.sql.Timestamp
datetimeoffset2 microsoft.sql.Types.DATETIMEOFFSET microsoft.sql.DateTimeOffset
decimal DECIMAL java.math.BigDecimal
float DOUBLE double
image LONGVARBINARY byte[]
int INTEGER int
money DECIMAL java.math.BigDecimal
nchar CHARNCHAR (Java SE 6.0) String
ntext LONGVARCHARLONGNVARCHAR (Java SE 6.0) String
numeric NUMERIC java.math.BigDecimal
nvarchar VARCHARNVARCHAR (Java SE 6.0) String
nvarchar(max) VARCHARNVARCHAR (Java SE 6.0) String
real REAL float
smalldatetime TIMESTAMP java.sql.Timestamp
smallint SMALLINT short
smallmoney DECIMAL java.math.BigDecimal
text LONGVARCHAR String
time TIME1 java.sql.Time1
timestamp BINARY byte[]
tinyint TINYINT short
udt VARBINARY byte[]
uniqueidentifier CHAR String
varbinary VARBINARY byte[]
varbinary(max) VARBINARY byte[]
varchar VARCHAR String
sqlvariant microsoft.sql.Types.SQL_VARIANT Object
geometry VARBINARY byte[]
geography VARBINARY byte[]

Reference

https://learn.microsoft.com/en-us/sql/connect/jdbc/using-basic-data-types?redirectedfrom=MSDN&view=sql-server-ver16

https://gorokke.tistory.com/190

https://dev.mysql.com/doc/ndbapi/en/mccj-using-clusterj-mappings.html