이번 포스팅에서는 MySQL에서 자주 사용하는 데이터 타입과 기본 연산 및 함수들을 정리해볼거다.
개념정리와 실습 화면을 함께 정리해 볼 예정
컴퓨터 데이터의 최소 단위는 bit(비트)이고, 8비트는 1바이트이다.
8비트로 표현 가능한 값의 개수는 (2^8 = 256) 개이며,
음수를 표현하려면 1비트를 부호용으로 사용해 대략 -128~127 범위를 표현한다.
TINYINT
UNSIGNED 사용 시 0 ~ 255INT
BIGINT
ALTER TABLE author
ADD COLUMN age TINYINT UNSIGNED;
외래키(FK)가 걸린 컬럼의 타입을 변경할 때는 순서대로 진행해야 한다.
ALTER TABLE post
DROP FOREIGN KEY fk_post_author;
ALTER TABLE author
MODIFY COLUMN id BIGINT;
ALTER TABLE post
MODIFY COLUMN author_id BIGINT;
ALTER TABLE post
MODIFY COLUMN id BIGINT;
ALTER TABLE post
ADD CONSTRAINT fk_post_author
FOREIGN KEY (author_id)
REFERENCES author(id);
![]() |
|---|
| FK 제약으로 인해 위 순서대로 실행한 예시 |
DECIMAL(m, d)는 고정 소수점 숫자 타입이다.
m : 전체 자리수(정수부 + 소수부)d : 소수부 자리수ALTER TABLE author
ADD COLUMN height DECIMAL(4, 1);
INSERT INTO author (id, name, email, height)
VALUES (7, '홍길동3', 'sss@naver.com', 173.5);
소수부가 자리수보다 많으면 자동 반올림된다.
![]() |
|---|
| 자리수가 넘치게 insert된 경우 반올림된 예시 |
CHAR(m) : 고정 길이, 부족하면 공백 채움VARCHAR(m) : 가변 길이 (실제 문자 길이만큼 저장)TEXT : 긴 텍스트, 가변 길이LONGTEXT : 매우 긴 텍스트ALTER TABLE author
ADD COLUMN id_number CHAR(16);
ALTER TABLE author
ADD COLUMN self_introduction TEXT;
이미지 등 이진 데이터를 저장할 때 사용한다.
현실적으론 파일 경로 등 메타정보만 DB에 저장하는 경우가 많다.
ALTER TABLE author
ADD COLUMN profile_image LONGBLOB;
INSERT INTO author (id, name, email, profile_image)
VALUES (9, 'blob', 'blob@naver.com', LOAD_FILE('C:\\\\test.jpg'));
![]() |
|---|
| GUI툴 이용 시 BLOB 데이터 타입의 실제 이미지를 별도의 변환없이 바로 확인해 볼 수 있다 |
미리 정해진 값들 중 하나만 허용하는 타입.
ALTER TABLE author
ADD COLUMN role ENUM('admin', 'user');
ALTER TABLE author
MODIFY COLUMN role ENUM('admin', 'user') NOT NULL DEFAULT 'user';
INSERT INTO author (id, name, email, role)
VALUES (11, 'admin', 'admin@naver.com', 'admin');
![]() |
|---|
| ENUM에 지정된 데이터를 insert / 지정되지 않은 데이터 inert(오류발생), 지정하지 않고 insert 예시 이미지 |
DATE : YYYY-MM-DDDATETIME : YYYY-MM-DD HH:MM:SSCREATE TABLE post (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
created_time DATETIME DEFAULT CURRENT_TIMESTAMP
);
![]() |
|---|
| CURRENT_TIMESTAMP는 많이 사용되는 패턴이다 |
= : 같음!=, <> : 다름<, <=, >, >= : 크기 비교IS NULL / IS NOT NULLBETWEEN min AND max (min과 max 포함)IN (val1, val2, ...) / NOT INSELECT * FROM author WHERE email IS NULL;
SELECT * FROM author WHERE id BETWEEN 2 AND 4;
SELECT * FROM author WHERE id IN (2, 3, 4);
-- AND / &&
SELECT * FROM author WHERE name = '홍길동' AND email = 'abc@naver.com';
-- OR / ||
SELECT * FROM author WHERE name = '홍길동' OR email = 'abc@naver.com';
-- NOT / !
SELECT * FROM author WHERE NOT (name = '홍길동');
LIKE : 와일드카드 % 사용 REGEXP : 정규표현식 패턴 검색SELECT * FROM post WHERE title LIKE 'h%';
SELECT * FROM author WHERE name REGEXP '^[가-힣]+$';
-- CAST 예시
SELECT CAST('12' AS UNSIGNED);
-- DATE_FORMAT 예시
SELECT DATE_FORMAT(created_time, '%Y-%m-%d') AS created_date FROM post;
-- 문자열 패턴
SELECT * FROM post WHERE created_time LIKE '2025-11%';
-- 정확한 범위 지정 (시작일 이상, 종료일 다음날 미만)
SELECT * FROM post
WHERE created_time >= '2025-11-01'
AND created_time < '2025-11-20';

연산이나 다양한 제약조건등을 한꺼번에 다루려고하니 순서가 조금 헷갈린다
연습을 해야 익혀질 듯
와우 ;; 그럼 비트코인을 8개모으면 바이트코인이된다는 찌라시가진짜엿군요 감사합니다 오늘부터 채굴합니다