[SQLite]SQLite의 datatype

변도진·2024년 7월 18일

SQLite

목록 보기
2/2
post-thumbnail

SQLite의 datatype

SQLite은 dynamic type system을 가지고 있다.
이는 contaner가 value의 type을 결정하는 것이 아닌,
value의 Storage Class가 결정한다.

Storage Class

Storage Class는 각 value의 할당되는 정보 tag이다.
Storage Class는 5가지로 이루져있다.

Null

Null은 Null이다.

Integer

Integer는 부호를 가지는 정수이다.
길이에 맞추어 0~8byte의 크기를 가진다.

Real

Real은 부동소수점으로 표기된 실수이다.
8byte의 길이를 가지며, IEEE 표기법으로 표기된다.

Text

Text는 문자열이다.
다음과 같이 encoding될 수 있다.

  • UTF-8
  • UTF-16BE
  • UTF-16LE

Blob

Blob은 입력 그대로 저장하는 데이터 덩어리이다.

Type Affinity

Type Affinity는 static type system을 가진 다른 database와의 호환을 위하여 고안되었다.
이는 column의 type을 미리 지정하여 해당 type을 선호하게 된다.
허나 이는 선호일 뿐 여전히 dynamic한 type을 이용 할 수 있다.

Integer

INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8

Text

CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB

Blob

BLOB

Real

REAL
DOUBLE
DOUBLE PRECISION
FLOAT

Numberic

NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
(Nuberic은 실제 존재하는 Storage Class가 아니다.
자세한 설명을 찾기 힘들어 정확하진 않지만, 들어온 값의 따라 기존의 Storage Class로 변환되는 듯 하다.
이에 대한 것은 Boolean과 datatime의 저장을 통해 유추하였다.)

Datatime과 Boolean의 저장

Datatime

Datatime은 3가지 형식으로 저장될 수 있다.

  • Text - ISO8601형식으로 저장된다.
  • Real - 율리우스력 형식으로 저장된다.
  • Integer - Unix Time 형식으로 저장된다.

Boolean

Boolean은 Integer type으로 저장된다.

  • 0 -> False
  • 1 -> True

참조

https://www.sqlite.org/datatype3.html
https://thinking-jmini.tistory.com/24

profile
낚시하고 싶다.

0개의 댓글