DB, SQL

MySQL 데이터 형식

index.ys 2023. 10. 2. 14:47

데이터 형식

  • 데이터가 데이터베이스에 저장될 때 데이터가 저장되는 형식
  • 숫자형, 문자형, 날짜형, BLOD등의 형식이 존재
  • 적절한 데이터형식을 지정하고 데이터 공간의 낭비를 줄임

정수형

  • 소수점이 없는 숫자
  • EX) 인원 수, 주문 수량, 가격 등에 사용
  • 대부분의 정수의 경우 TINYINT나 SMALLINT의 형식에서 데이터를 정의할 수 있음
데이터 형식 바이트 수 숫자 범위
TINYINT 1 -128~127
SMALLINT 2 -32,768~32,767
INT 4 약 -21억~+21억
BIGINT 8 약 -900경~ +900경

정수형 컬럼생성

  • 테이블 이름과 컬럼명, 데이터 형식을 지정하고 테이블을 생성함
CREATE TABLE 테이블이름 (
    tinyint_col  TINYINT,
    smallint_col SMALLINT,
    int_col    INT,
    bigint_col BIGINT );

정수형 범위에 벗어나는 데이터 삽입시 에러

  • 정상적으로 데이터 삽입
INSERT INTO hongong4 VALUES(127, 32767, 2147483647, 9000000000000000000);

  • 범위에 벗어나는 데이터 삽입시 에러 발생
  • tinyint_col에 입력할 수 있는 범위를 벗어났다는 에러 발생 Out of range

UNSIGNED

  • TINYINT는 -128부터  +127의 정수를 표현할 수 있음
  • 256비트 , 1바이트의 크기를 표현할 수 있음
  • 0~255 까지의 데이터를 표현하기 위해 UNSIGNED 키워드를 사용하여 데이터를 양수만 표현할 수 있음
  • UNSIGEND 키워드 없이 양수로는 127까지만 표현할 수 있었으나 UNSIGNED 키워드를 사용해 0부터 255까지의 데이터 ( 1바이트 )까지 표현할 수 있음
CREATE TABLE INT_TABLE (
    tinyint_col  TINYINT unsigned,
    smallint_col SMALLINT,
    int_col    INT,
    bigint_col BIGINT );

  • 마찬가지로 256부터는 범위를 벗어났다는 에러 반환

문자형

CHAR

  • 1~255바이트, 255까지의 문자를 표현할 수 있는 문자데이터 형식
  • 고정길이 문자형, CHAR(20)같은 형식으로 컬럼을 생성하면 2글자가 들어와도 20바이트의 용량을 차지함
  • 성능면에서 VARCHAR보다 빠름

VARCHAR

  • 1~16383바이트, 16383길이의 문자를 표현할 수 있는 문자데이터 형식
  • 가변길이 문자형, VARCHAR(20)으로 형식으로 컬럼을 생성하면 2글자가 들어오면 2바이트의 용량만 차지
  • CHAR보다 공간을 효율적으로 운영할 수 있음
CREATE TABLE string_table(
    char_string char(20), //20까지의 고정된 바이트의 데이터 형식 지정
    varchar_string varchar(20), //입력된 데이터 별로 유연한 바이트 데이터 형식 지정
)
  • 데이터 입력
insert into string_table values ('1','544')

정수형으로 데이터를 지정하기 위한 조건

  • 전화번호, 핸드폰 번호 등 번호이지만 숫자로써 의미를 가지지 않는 데이터는 정수형이 아닌 문자형으로 데이터를 저장
  • 더하기/빼기 등의 연산에 의미가 있거나 숫자의 크기를 비교할 수 있는 데이터들을 정수형으로 저장

대용량 데이터 형식

TEXT

  • TEXT로 데이터 형식을 지정하면 65535자 까지 저장 가능
  • LONGTEXT로 데이터형식을 지정하면 약 42억자 까지 저장가능

BLOB

  • BLOB Binay Long Object : 글자가 아닌 이미지, 동영상등의 데이터 => Binay 이진 이라고 부름
  • BLOB이나 LONGBLOB으로 데이터형식을 지정
  • LONGBLOB은 최대 4GB까지 데이터 입력 가능
데이터 형식 바이트 수
TEXT TEXT 1~65535
LONGTEXT 1~4294967295
BLOB BLOB 1~65535
LONGBLOB 1~4294967295

실수형

  • 소수점이 있는 숫자를 저장할 떄 사용
FLAOT 4 32.121357
DOUBLE 8 32.1213574485687

날짜형

  • 날짜 및 시간을 저장할 떄 사용

ㅁㄴㅇㄹ

DATE 3 날짜만 저장, YYYY-MM-DD
TIME 3 시간만저장, HH:MM:SS
DATETIME 8 날짜및 시간 저장, YYYY-MM-DD HH:MM:SS