코딩 스쿨 MySQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP
▶ MySQL References
MySQL Data Types
MySQL Functions

MySQL Data Types

MySQL Data Types: 데이터 타입 종류와 설명

MySQL에서 데이터를 저장할 때 적절한 데이터 타입을 선택하는 것은 매우 중요합니다. 데이터 타입에 따라 데이터가 저장되는 방식, 데이터의 크기, 성능 등에 영향을 미치기 때문입니다. MySQL은 크게 세 가지 범주로 데이터를 분류할 수 있습니다: 숫자, 날짜 및 시간, 문자열(텍스트). 이 글에서는 각 데이터 타입에 대한 설명과 특징을 제공하겠습니다.

1. 숫자 데이터 타입 (Numeric Data Types)

숫자 데이터 타입은 정수와 실수(소수점이 포함된 수)를 저장할 수 있습니다. 숫자 데이터 타입은 부호(음수와 양수) 여부에 따라 다양한 크기를 가질 수 있습니다.

1.1 정수 데이터 타입 (Integer Types)

정수는 소수점이 없는 숫자입니다. MySQL은 여러 크기의 정수 데이터 타입을 제공합니다.

  • TINYINT: 1바이트 크기의 작은 정수
    • 범위: -128 ~ 127 (부호 있을 때), 0 ~ 255 (부호 없을 때)
  • SMALLINT: 2바이트 크기의 작은 정수
    • 범위: -32,768 ~ 32,767 (부호 있을 때), 0 ~ 65,535 (부호 없을 때)
  • MEDIUMINT: 3바이트 크기의 정수
    • 범위: -8,388,608 ~ 8,388,607 (부호 있을 때), 0 ~ 16,777,215 (부호 없을 때)
  • INT (또는 INTEGER): 4바이트 크기의 일반 정수
    • 범위: -2,147,483,648 ~ 2,147,483,647 (부호 있을 때), 0 ~ 4,294,967,295 (부호 없을 때)
  • BIGINT: 8바이트 크기의 큰 정수
    • 범위: -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (부호 있을 때), 0 ~ 18,446,744,073,709,551,615 (부호 없을 때)

1.2 실수 데이터 타입 (Floating-Point and Fixed-Point Types)

실수는 소수점을 포함하는 숫자입니다.

  • FLOAT(M,D): 4바이트 크기의 부동 소수점
    • M은 전체 자릿수, D는 소수 자릿수
    • 예: FLOAT(7,4)는 최대 7자리 중 소수점 이하 4자리까지 나타낼 수 있음 (예: 123.4567).
  • DOUBLE (또는 REAL): 8바이트 크기의 부동 소수점
    • 더 큰 정밀도의 실수를 저장할 수 있음.
  • DECIMAL(M,D) 또는 NUMERIC(M,D): 고정 소수점 실수
    • M은 전체 자릿수, D는 소수 자릿수.
    • 고정된 소수 자릿수를 가지며, 금융 데이터나 높은 정밀도가 필요한 경우 사용.

2. 날짜 및 시간 데이터 타입 (Date and Time Types)

날짜와 시간 데이터를 다룰 때 MySQL에서 제공하는 여러 데이터 타입이 있습니다.

  • DATE: 날짜를 저장하는 데이터 타입 (형식: YYYY-MM-DD)
    • 예: 2024-10-11
  • TIME: 시간을 저장하는 데이터 타입 (형식: HH:MM:SS)
    • 예: 12:45:30
  • DATETIME: 날짜와 시간을 함께 저장 (형식: YYYY-MM-DD HH:MM:SS)
    • 예: 2024-10-11 12:45:30
  • TIMESTAMP: 날짜와 시간을 UTC 기준으로 저장하고, 타임존을 자동으로 변환
    • 1970-01-01 00:00:01 UTC 이후 시간을 저장
    • 자동으로 현재 시간으로 업데이트되거나 트리거로 사용할 수 있음.
  • YEAR(M): 연도를 저장하는 데이터 타입
    • YEAR(4)는 4자리 연도(예: 2024)를 저장
    • YEAR(2)는 2자리 연도(예: 99)를 저장 (1999 또는 2099로 해석됨)

3. 문자열 데이터 타입 (String Data Types)

문자열 데이터 타입은 텍스트 또는 바이너리 데이터를 저장하는 데 사용됩니다.

3.1 텍스트 데이터 타입

  • CHAR(M): 고정 길이 문자열 (최대 255자)
    • 길이가 항상 고정되어 있으며, 빈 공간은 공백으로 채움.
  • VARCHAR(M): 가변 길이 문자열 (최대 65,535자)
    • 실제 데이터 길이만큼만 저장되며, 효율적.
  • TEXT: 대용량 텍스트 데이터를 저장 (최대 65,535자)
    • 매우 긴 텍스트 데이터(예: 블로그 글)를 저장하는 데 사용.
  • TINYTEXT: 작은 크기의 텍스트 데이터 (최대 255자)
  • MEDIUMTEXT: 중간 크기의 텍스트 데이터 (최대 16,777,215자)
  • LONGTEXT: 매우 큰 크기의 텍스트 데이터 (최대 4,294,967,295자)

3.2 바이너리 데이터 타입

  • BINARY(M): 고정 길이의 바이너리 데이터 저장
    • CHAR와 유사하지만, 텍스트가 아닌 이진 데이터를 저장.
  • VARBINARY(M): 가변 길이의 바이너리 데이터 저장
    • VARCHAR와 유사하지만, 이진 데이터를 저장.
  • BLOB: 바이너리 데이터를 저장 (최대 65,535바이트)
    • 큰 바이너리 데이터(예: 이미지, 파일)를 저장하는 데 사용.
  • TINYBLOB: 작은 크기의 바이너리 데이터를 저장 (최대 255바이트)
  • MEDIUMBLOB: 중간 크기의 바이너리 데이터를 저장 (최대 16,777,215바이트)
  • LONGBLOB: 매우 큰 크기의 바이너리 데이터를 저장 (최대 4,294,967,295바이트)

4. 기타 데이터 타입

  • ENUM('value1', 'value2', ...): 열거형 데이터 타입. 사전에 정의된 값 중 하나를 선택할 수 있음.
    • 예: ENUM('small', 'medium', 'large')
  • SET('value1', 'value2', ...): 여러 값을 선택할 수 있는 데이터 타입. 사전에 정의된 값 중에서 하나 이상의 값을 선택할 수 있음.
    • 예: SET('a', 'b', 'c') → 'a', 'b', 'c' 중 하나 또는 여러 값을 저장 가능.

데이터 타입 선택 시 고려사항

  • 데이터 크기 최적화: 데이터 타입을 선택할 때 데이터 크기를 고려하는 것이 중요합니다. 불필요하게 큰 데이터 타입을 사용하면 스토리지 공간을 낭비할 수 있습니다.
  • 정밀도: 금융 데이터나 과학적 계산에서는 DECIMAL이나 NUMERIC과 같은 고정 소수점 타입을 사용하는 것이 좋습니다. 부동 소수점 타입(FLOAT, DOUBLE)은 정밀도에 한계가 있습니다.
  • 인덱싱 및 성능: 문자열 타입이 너무 길면 인덱싱 성능에 영향을 미칠 수 있습니다. 자주 인덱싱되는 컬럼에는 CHAR 또는 짧은 VARCHAR를 사용하는 것이 좋습니다.

요약

MySQL에서는 다양한 데이터 타입을 제공하여 데이터를 효율적으로 저장하고 관리할 수 있습니다. 숫자, 날짜 및 시간, 문자열 데이터는 각각의 목적에 맞는 타입을 선택해야 하며, 데이터 크기와 성능을 고려하여 적절한 데이터 타입을 사용하는 것이 중요합니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com