MySQL - 데이터 타입

안녕하세요, 데이터베이스 열정가 되고자 하는 여러분! MySQL 데이터 타입의 세계로 여러분을 안내하게 되어 매우 기쁩니다. 10년 이상 컴퓨터 과학을 가르쳐온 경험을 가진 저는 데이터 타입을 이해하는 것은 소설을 쓰기 전에 알파벳을 배우는 것과 같다고 말씀드릴 수 있습니다. 이것은 기본적이고, 용기 있게 말하면, 재미있는 일입니다! 그麼, 이제 데이터베이스 설계의 기본 블록을 이해하기 위해 빠르게 다가가보겠습니다.

MySQL - Data Types

MySQL 데이터 타입

구체적인 내용에 들어가기 전에 데이터 타입이 무엇이고 왜 중요한지에 대해 이야기해보겠습니다. 거대한 도서관을 조직하는 상상해보세요. 책, DVD, 잡지를 모두 같은 방식으로的书갈이할 수는 없죠? MySQL에서 데이터 타입이 하는 일은 정확히 이와 같습니다. 다양한 종류의 정보를 효율적으로 정리하는 것입니다.

MySQL은 다양한 데이터 타입을 제공하며, 각각은 특정 종류의 데이터를 저장하도록 설계되었습니다. 적절한 데이터 타입을 사용하는 것은 다음 세 가지 주요 이유로 중요합니다:

  1. 저장 공간 효율성
  2. 성능 최적화
  3. 데이터 무결성

이제 MySQL 데이터 타입의 주요 카테고리를 탐구해보겠습니다.

수학 데이터 타입

아, 숫자! 컴퓨팅의 근간입니다. MySQL은 작은 정수에서 거대한 부동소수점 숫자에 이르기까지 다양한 수학 데이터 타입을 제공합니다.

정수 타입

타입 저장 공간 (바이트) 최소 값 최대 값
TINYINT 1 -128 127
SMALLINT 2 -32,768 32,767
MEDIUMINT 3 -8,388,608 8,388,607
INT 4 -2,147,483,648 2,147,483,647
BIGINT 8 -9,223,372,036,854,775,808 9,223,372,036,854,775,807

다음과 같은 테이블을 만들어 보겠습니다:

CREATE TABLE number_examples (
tiny_num TINYINT,
small_num SMALLINT,
medium_num MEDIUMINT,
regular_num INT,
big_num BIGINT
);

이제 데이터를 추가해보겠습니다:

INSERT INTO number_examples VALUES (127, 32767, 8388607, 2147483647, 9223372036854775807);

이 추가 문장은 각 정수 타입의 최대 값을 추가합니다. 더 큰 숫자를 추가하려고 시도하면 MySQL이 오류를 발생시킵니다. 마치象을 스마트 카를에 넣으려고 하는 것과 같은 이치입니다.

부동소수점 및 고정소수점 타입

十進수 숫자에 대해 다음과 같습니다:

타입 정밀도
FLOAT 단일 정밀도
DOUBLE 이중 정밀도
DECIMAL 고정소수점

다음은 예제입니다:

CREATE TABLE price_list (
item_name VARCHAR(50),
float_price FLOAT,
double_price DOUBLE,
decimal_price DECIMAL(10,2)
);

INSERT INTO price_list VALUES
('Widget', 19.99, 19.99, 19.99),
('Gadget', 249.99, 249.99, 249.99);

DECIMAL(10,2)은 총 10자리까지 저장할 수 있으며, 소수점 이하 2자리입니다. 이는 원하는 경우 동전 계산 오류 없이 통화 값을 저장하는 데 완벽합니다.

날짜와 시간 데이터 타입

데이터베이스를 즐기는 동안 시간은 빠르게 흐릅니다! MySQL이 시간 데이터를 어떻게 처리하는지 살펴보겠습니다:

타입 형식 저장 공간
DATE YYYY-MM-DD 3 바이트
TIME HH:MM:SS 3 바이트
DATETIME YYYY-MM-DD HH:MM:SS 8 바이트
TIMESTAMP YYYY-MM-DD HH:MM:SS 4 바이트
YEAR YYYY 1 바이트

재미있는 예제를 보겠습니다:

CREATE TABLE party_planning (
event_name VARCHAR(50),
event_date DATE,
start_time TIME,
end_time TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO party_planning (event_name, event_date, start_time, end_time)
VALUES ('MySQL Mania', '2023-12-31', '20:00:00', '23:59:59');

이 테이블은 최고의 새해맞이 데이터베이스 파티를 계획하는 데 도움이 될 수 있습니다! created_at 열은 행이 삽입될 때 현재 타임스탬프를 자동으로 저장합니다.

문자 데이터 타입

마지막으로, 문자 데이터 타입에 대해 이야기해보겠습니다. 이들은 데이터베이스의 핵심 역할을 하며, 이름에서 긴 텍스트 문서에 이르기까지 다양한 데이터를 처리합니다.

타입 최대 길이 사용 사례
CHAR 255 문자 고정 길이 문자열
VARCHAR 65,535 문자 가변 길이 문자열
TEXT 65,535 문자 긴 텍스트
MEDIUMTEXT 16,777,215 문자 더 긴 텍스트
LONGTEXT 4,294,967,295 문자 매우 긴 텍스트

다음과 같은 테이블을 만들어 보겠습니다:

CREATE TABLE book_club (
member_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
favorite_quote CHAR(50),
book_review TEXT,
life_story MEDIUMTEXT
);

INSERT INTO book_club (name, favorite_quote, book_review, life_story)
VALUES (
'Jane Doe',
'To be or not to be',
'This book changed my life! The character development was superb, and the plot twists kept me guessing until the very end.',
'I was born on a warm summer day...'
);

이 예제에서 name은 VARCHAR를 사용하여 이름의 길이가 다를 수 있도록 합니다. favorite_quote는 CHAR를 사용하여 모든 인용구가 정확히 50자리입니다(짧다면 패딩됩니다). book_review는 TEXT를 사용하여 더 긴 내용을 저장하고, life_story는 MEDIUMTEXT를 사용하여 매우 긴 이야기를 저장합니다.

기억하시라, 적절한 문자 타입을 선택하면 데이터베이스의 성능과 저장 공간 효율성에 큰 영향을 미칩니다. 이는 남는 공간을 최소화하거나 과도한 공간을 낭비하는 것과 같은 이치입니다!

그렇게, 여러분과 MySQL 데이터 타입의 세계를 여행했습니다. 가장 작은 TINYINT에서 거대한 LONGTEXT에 이르기까지. 적절한 데이터 타입을 선택하는 것은 예술이자 과학입니다. 데이터를 이해하고, 미래의 필요를 예측하며, 때로는 시험과 실수를 통해 배워야 합니다.

MySQL 여정을 계속하면서 다양한 데이터 타입을 실험해보세요. 테이블을 만들고, 데이터를 삽입하고, 어떻게 동작하는지 관찰해보세요. 더 많이 연습할수록 직관적이게 될 것입니다. 그리고谁知道呢? 잘 설계된 데이터베이스 스키마의 우아한 단순성에 사랑에 빠질 수도 있습니다.

행복하게 코딩하시고, 여러분의 쿼리가 항상 빠르게 실행되길 바랍니다!

Credits: Image by storyset