DB · MySQL
MySQL
가볍고 빠르며 전 세계에서 가장 널리 쓰이는 오픈소스 관계형 데이터베이스 중 하나입니다. 특히 웹 서비스(블로그·쇼핑몰 등)에서 오랫동안 표준처럼 쓰여 왔어요.
한 줄로
MySQL? 도 PostgreSQL? 과 같은 관계형 DB라, 데이터를 테이블에 저장하고 SQL? 로 다룹니다. 설치가 쉽고 가벼워 빠르게 시작할 수 있고, 자료와 호스팅 지원이 매우 풍부합니다.
관계형 DB가 "자동차"라면, MySQL은 흔하고 부품·정비소가 어디에나 있는 "국민 보급형 모델". 어디서든 굴리기 쉽고 배우기 좋습니다.
왜 / 어디에 쓰나
- 웹 서비스 백엔드 — 워드프레스 등 수많은 웹 앱의 기본 DB
- 빠른 시작 — 가볍고 설치·운영이 단순해 초기 학습에 좋음
- 넓은 생태계 — 호스팅·도구·자료가 풍부해 문제 해결이 쉬움
- 읽기 위주 트래픽 — 조회가 많은 서비스에서 오래 검증됨
핵심 개념과 특징
| 항목 | 설명 |
|---|---|
| 오픈소스 | 무료로 사용 가능(상용 에디션도 별도 존재). |
| 스토리지 엔진 | 저장 방식을 고를 수 있음. 기본은 트랜잭션을 지원하는 InnoDB. |
| MariaDB | MySQL에서 갈라져 나온 호환 분기(fork). 명령어 대부분이 호환됨. |
| 방언(Dialect) | SQL 기본은 같지만, 함수·문법 일부가 PostgreSQL과 다름. |
기본 SQL
관계형 DB라 SELECT·INSERT·JOIN 같은 기본 SQL은 PostgreSQL과 거의 같습니다.
-- 조회
SELECT id, userid, name
FROM tb_user
WHERE name LIKE '%han%'
ORDER BY name;
-- 추가
INSERT INTO tb_user (userid, name)
VALUES ('hanks', '경수');
-- JOIN: 사용자와 역할 함께 조회
SELECT u.name, r.role_name
FROM tb_user u
JOIN tb_user_role ur ON ur.user_id = u.id
JOIN tb_role r ON r.id = ur.role_id;PostgreSQL과의 차이 한 줄
-- 자동 증가 기본키: MySQL은 AUTO_INCREMENT CREATE TABLE tb_user ( id BIGINT AUTO_INCREMENT PRIMARY KEY, -- PostgreSQL은 SERIAL / GENERATED userid VARCHAR(50) ); -- 결과 개수 제한: 둘 다 LIMIT 지원 (Oracle/MSSQL은 문법이 다름) SELECT * FROM tb_user LIMIT 10;
같은 SQL 표준 위에 있어 기본은 거의 같지만, 자동 증가·날짜 함수·문자열 함수 등 세부 방언이 다릅니다. PostgreSQL이 표준 준수와 고급 기능에 강하다면, MySQL은 가볍고 보급이 넓다는 점이 강점이에요.
이 프로젝트와의 관계
이 프로젝트는 DB로 PostgreSQL 을 쓰지만, 만약 MySQL을 쓴다면 무엇이 바뀔까요? 자바 코드(JPA)는 거의 그대로 두고, 접속 드라이버와 Dialect 설정, 그리고 일부 DB 전용 SQL만 바꾸면 됩니다. "SQL 공통 + 방언 차이"를 이해하면 DB 교체가 한결 수월해져요.
다음 단계
- 이 프로젝트가 실제로 쓰는 DB → PostgreSQL
- 상용 DB와 비교 → Oracle, SQL Server
- DB를 손쉽게 띄우기 → Docker