DB · MySQL

MySQL

가볍고 빠르며 전 세계에서 가장 널리 쓰이는 오픈소스 관계형 데이터베이스 중 하나입니다. 특히 웹 서비스(블로그·쇼핑몰 등)에서 오랫동안 표준처럼 쓰여 왔어요.

한 줄로

MySQL?PostgreSQL? 과 같은 관계형 DB라, 데이터를 테이블에 저장하고 SQL? 로 다룹니다. 설치가 쉽고 가벼워 빠르게 시작할 수 있고, 자료와 호스팅 지원이 매우 풍부합니다.

관계형 DB가 "자동차"라면, MySQL은 흔하고 부품·정비소가 어디에나 있는 "국민 보급형 모델". 어디서든 굴리기 쉽고 배우기 좋습니다.
왜 / 어디에 쓰나
  • 웹 서비스 백엔드 — 워드프레스 등 수많은 웹 앱의 기본 DB
  • 빠른 시작 — 가볍고 설치·운영이 단순해 초기 학습에 좋음
  • 넓은 생태계 — 호스팅·도구·자료가 풍부해 문제 해결이 쉬움
  • 읽기 위주 트래픽 — 조회가 많은 서비스에서 오래 검증됨

핵심 개념과 특징

항목설명
오픈소스무료로 사용 가능(상용 에디션도 별도 존재).
스토리지 엔진저장 방식을 고를 수 있음. 기본은 트랜잭션을 지원하는 InnoDB.
MariaDBMySQL에서 갈라져 나온 호환 분기(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 교체가 한결 수월해져요.

다음 단계