DB 데이터 타입

유기훈·2025년 1월 29일

숫자 타입

정수

TINYINT

  • -128 ~ 127 범위, 1 바이트
    INT
  • 4 바이트
    BIGINT
  • 8 바이트
    UNSIGNED
  • 양수로 표현 가능
  • TINYINT UNSIGNED 타입을 사용하면 범위가 0 ~ 255 로 바뀜

실수

고정 소수점 타입

  • DECIMAL(M,D)
  • M은 총자릿수 (정수부+수소부)를 의미, 65자리까지 표현 가능
  • D는 소수부 의미
  • ex) DECIMAL(30, 20): 정수부 10자리, 소수부 20자리
  • 실수를 사용할 때는 DECIMAL을 사용하는 게 좋음. 실수를 사용하기 전에 정말 사용해야 하는 지를 먼저 고려하고, 사용해야 한다면 정확하게 사용할 수 있는 DECIMAL을 사용하는 게 좋음
    부동 소수점 타입
  • FLOAT, DOUBLE

문자 타입

CHAR, VARCHAR

CHAR(M)

  • M은 고정 길이의 문자열(범위: 0~255)
  • 설정한 길이 만큼의 데이터 공간 차지
  • 부족한 입력 데이터는 공백으로 차지
    VARCHAR(M)
  • M은 문자열의 최대 길이를 의미(범위: 0~65,535)
  • 가변 길이의 문자열. 실제 입력된 문자열의 길이만큼만 저장하고 사용
  • 일반적으로 가장 많이 사용
  • 메모리 위주 저장
    TEXT
  • 가변길이 문자
  • 최대 65,535글자의 글자를 적재할 수 있음
  • disk 위주의 저장으로 인해 조회속도가 VARCHAR에 비해 느림
    BLOB
  • 바이너리 데이터(ex. 이미지)를 저장할 수 있는 타입
  • 현대적인 방법은 정적 파일 스토리지에 이미지를 저장하고, DB에는 이미지의 경로를 저장한다.
    ENUM
  • enum('user', 'admin')
  • 미리 들어갈 수 있는 특정 데이터를 지정한다. insert 한 값이 특정 데이터에 속하지 않는 경우 에러 발생.
# ex)
alter table author add column role enum('user', 'admin') not null default 'user';
insert into author(role) values('user');

날짜 타입

DATE

  • 날짜를 저장할 수 있는 타입
  • YYYY-MM-DD
    DATETIME
  • 날짜와 함께 시간까지 저장. 옵션을 통해 소수점까지 저장 가능
  • YYYY-MM-DD HH:MM:SS
  • 현재 시간 예약어: CURRENT_TIMESTAMP
# ex)
alter table posts modify column created_time datetime default CURRENT_TIMESTAMP

특정 날짜, 기간 조회

DATE_FORMAT(date, format)

  • Y, m, d, H, i, s
# ex)
select * from post where DATE_FORMAT(created_time, '%Y-%m') = '2025-01';

LIKE

# ex)
select * from post where created_time like '2023%';

BETWEEN

# ex)
select * from post where created_time BETWEEN '2025-01-01' AND '2025-01-31';

비교 연산자

# ex)
select * from post where created_time >= '2025-01-01' and created_time <= '2025-01-31';

now()

  • 현재 시간을 반환하는 함수

연산자

비교 연산자

  • =
  • !=, <>
  • <. <=, >=, >
  • IS NULL, IS NOT NULL
  • BETWEEN min AND max
  • IN(), NOT IN()
# ex)
select * form author where id between 2 and 4;
select * from author id in (2, 3, 4);
select * from author where not (id < 0 or id > 1);

논리 연산자

  • AND, &&
  • OR, ||
  • NOT, !

검색 패턴

Like

  • 특정 패턴을 포함하는 데이터를 검색하기 위한 와일드카드 문자
# ex)
select * from author where name like '홍%';
select * from author where name not like '홍%';

REGEXP

  • 정규표현식을 토대로 패턴 연산 수행
# ex)
select * from author where name REGEXP '[a-z]';

타입 변환

CAST

  • CAST(a AS type)
  • a값을 특정 type으로 변환하는데 사용
# ex)
select CAST(20250101 AS DATE);

DATE_FORMAT

  • 날짜/시간 타입의 데이터를 지정된 형식의 문자열로 반환
# ex)
select DATE_FORMAT('2025-01-01', '%Y-%m-%d');
profile
개발 블로그

0개의 댓글