SQL

SQL 데이터타입

봄다온 2025. 1. 17. 12:58

숫자형(Numeric Types)

INTEGER : 정수
NUMERIC(p,q) / DECIMAL: p전체자리수 q소수점자리수. ex) NUMERIC(4,3) = 0.001 ~ 9.999 NUMERIC(6) = 6자리 정수
FLOAT : 부동소수점
SERIAL : INTEGER를 기본값으로 1씩 추가되며 값이 자동 생성.

화폐형(Monetary Types)

금액을 저장하는 데이터 타입. 분수의 형태로 금액 저장

문자형(Character Types)

VARCHAR(n) : n 이하 문자의 길이 그대로 저장. n 없을 경우 임의의 길이의 모든 문자열 저장 = VARCHAR() = TEXT
CHAR(n) : "문자 길이 + 공백" 형태로 맞춰서 저장. n없을 경우 1글자만 저장 = CHAR(1)

날짜 및 시간(Date & Times)

세계 표준시(UTC) 시간대와 지역시(UTC + 각 지역의 시간정보) 시간대가 있다. 이를 WITHOUT TIME ZONE, WITH TIME ZONE이라고 한다.
날짜 및 시간 데이터 타입엔 TIMESTAMP, DATE, TIME이 있고 각각 날짜+시간,날짜,시간이다.
TIMESTAMP와 TIME은 각각 2개의 시간대와 조합하여 총 5개의 타입이 있다.

TIMESTAMP WITHOUT TIME ZONE : 날짜 + 세계 표준시
TIMESTAMP WITH TIME ZONE : 날짜 + 지역시
DATE : 날짜
TIME WITHOUT TIME ZONE : 세계 표준시
TIME WITH TIME ZONE : 지역시

불리언형(Boolean Types)

sql에서는 추가로 null도 있다.
논리데이터 타입. True/False.
True, yes, on, 1 = True
False,no,off,0 = Flase
NULL = 알수없는정보 or 일부 불확실
출력의 결과가 true이면 t, false이면 f를 출력.

배열형(Array Types)

여러 데이터를 하나의 집합으로 관리하기 위한 데이터 타입.
테이블 생성시 데이터 타입뒤에 []를 추가
데이터 입력시 Array[] 또는 '{}'로 데이터 입력

create table phone_number (
  tel INTEGER[]
);

insert into phone_number values(
    Array[01012345678, 01087654321]
);

insert into phone_number values(
    '{01023456789, 01098765432}'
);

제이슨형(Json Types)

Json = JavaScript Object notation. 주로 서버와 웹 어플리케이션 간 데이터 주고 받을때 사용
{Key : Value} 형식으로 구성되어 있고, Json Object와 Json Array가 있다.
Value에는 숫자, 문자열, Json 배열, Json 등이 올 수 있다.

#Json Object안에 Json Object
{"Key" : "Value", "Key" : {"Key" : "Value"}}

#Json Array
[{"Key" : "Value"},{"Key" : "Value"}]

#일반적으로 아래와 같은 방식으로 저장한다.
{
    "Key1" : "Value1",
      "Key2" : "Value2",
      "Key3" : [
        {
            "Key3_1" : "Value3_1",
            "Key3_2" : "Value3_2"
        },
        {
            "Key3_3" : "Value3_3",
            "Key3_4" : "Value3_4"
        }
      ]
}

json은 json데이터타입과 jsonb데이터타입이 있다.

json 입력테스트의 정확한 사본 생성 <ㅡㅡ> 처리속도가 느림
jsonb 처리속도가 비교적 빠름 <ㅡㅡ> 데이터 저장속도가 비교적 느림

도메인형(DOMAIN Types)

기존의 데이터타입에 제약조건을 추가해 특수한 목적을 가진 데이터 타입을 제작하여 사용하는것이다.

ex)
CREATE DOMAIN phoneint AS integer CHECK (VALUE > 0 AND VALUE < 9);

'SQL' 카테고리의 다른 글

SQL 칼럼 값 제한(제약조건)  (0) 2025.01.17
SQL CAST 연산자, CAST 형 연산자  (0) 2025.01.17
SQL DELETE  (0) 2025.01.16
SQL ALTER  (0) 2025.01.16
SQL AS  (0) 2025.01.16