MySQL 최종 수정일 2026-06-19 02:01 조회수 12
대시보드

MySQL

기본 정보

  • 이름: MySQL
  • 분류: 관계형 데이터베이스 관리 시스템(RDBMS)
  • 개발사: Oracle Corporation
  • 최초 공개: 1995년
  • 라이선스: GPL(Community Edition), 상용(Enterprise Edition)
  • 주요 용도: 웹 서비스, ERP, 쇼핑몰, 게시판, API 서버
  • 관련 주제: #MySQL #DBMS #SQL #데이터베이스 #백엔드

개요

MySQL은 세계에서 가장 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나이다.

데이터를 테이블 형태로 저장하며, SQL(Structured Query Language)을 이용해 데이터를 조회·추가·수정·삭제할 수 있다.

PHP, Java, Node.js, Python 등 대부분의 프로그래밍 언어와 연동 가능하며, WordPress, 그누보드 등 다양한 웹 서비스에서 사용된다.


주요 특징

  • 관계형 데이터베이스(RDBMS)
  • SQL 표준 지원
  • 높은 성능
  • 트랜잭션 지원(InnoDB)
  • 복제(Replication) 지원
  • 다양한 운영체제 지원
  • 오픈소스 기반

데이터베이스 구조

Server

└── Database

    └── Table

        ├── Row (레코드)

        └── Column (필드)

데이터베이스 생성

CREATE DATABASE mydb;

데이터베이스 선택

USE mydb;

테이블 생성

CREATE TABLE member (

    mb_id INT AUTO_INCREMENT PRIMARY KEY,

    mb_name VARCHAR(100),

    mb_email VARCHAR(255),

    created_at DATETIME

);

데이터 조회

SELECT *

FROM member;

특정 컬럼 조회

SELECT mb_name, mb_email

FROM member;

조건 조회

SELECT *

FROM member

WHERE mb_id = 1;

데이터 추가

INSERT INTO member (

    mb_name,

    mb_email

)

VALUES (

    '구름',

    'cloud@test.com'

);

데이터 수정

UPDATE member

SET

mb_name='홍길동'

WHERE mb_id=1;

데이터 삭제

DELETE

FROM member

WHERE mb_id=1;

정렬

SELECT *

FROM member

ORDER BY mb_id DESC;

개수 조회

SELECT COUNT(*)

FROM member;

LIKE 검색

SELECT *

FROM member

WHERE mb_name LIKE '%홍%';

LIMIT

SELECT *

FROM member

LIMIT 10;

페이징

LIMIT 0,10;

JOIN

SELECT *

FROM member m

JOIN point p

ON m.mb_id=p.mb_id;

여러 테이블을 연결하여 조회할 수 있다.


GROUP BY

SELECT

mb_level,

COUNT(*)

FROM member

GROUP BY mb_level;

INDEX

CREATE INDEX idx_name

ON member(mb_name);

검색 성능 향상을 위해 사용된다.


PRIMARY KEY

PRIMARY KEY (mb_id)

테이블의 고유 식별자이다.


FOREIGN KEY

FOREIGN KEY (user_id)

REFERENCES member(mb_id)

테이블 간 관계를 정의한다.


트랜잭션

START TRANSACTION;

UPDATE member

SET point=point-100

WHERE mb_id=1;

COMMIT;

오류 발생 시

ROLLBACK;

으로 이전 상태로 복구할 수 있다.


대표 자료형

자료형설명
INT정수
BIGINT큰 정수
VARCHAR문자열
CHAR고정 문자열
TEXT긴 문자열
DATE날짜
DATETIME날짜+시간
TIMESTAMP타임스탬프
DECIMAL정확한 소수
FLOAT실수
BOOLEAN논리값

Storage Engine

InnoDB

  • 트랜잭션 지원
  • Foreign Key 지원
  • Row Lock 지원

현재 기본 엔진이다.


MyISAM

  • 읽기 성능 우수
  • 트랜잭션 미지원
  • 테이블 Lock 방식

레거시 프로젝트에서 주로 볼 수 있다.


주요 활용 분야

  • 게시판
  • 쇼핑몰
  • ERP
  • 회원관리
  • API 서버
  • CMS
  • 블로그
  • 게임 서버

장점

  • 무료 사용 가능
  • 높은 성능
  • 다양한 언어 지원
  • 대규모 커뮤니티
  • 쉬운 설치
  • 안정적인 운영

단점

  • 복잡한 분석 쿼리는 전문 분석 DB보다 제한적일 수 있음
  • 대규모 분산 환경에서는 추가 설계 필요
  • 잘못된 인덱스 설계 시 성능 저하 가능

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • utf8mb4 문자셋 사용
  • InnoDB 엔진 사용
  • Primary Key 지정
  • 필요한 컬럼에 Index 생성
  • SELECT * 사용 최소화
  • Prepared Statement 사용
  • SQL Injection 방지
  • 정기 백업 수행
  • EXPLAIN으로 실행 계획 확인
  • Slow Query 로그 활성화

MySQL과 함께 사용하는 기술


대표 관리 도구

  • MySQL Workbench
  • phpMyAdmin
  • DBeaver
  • HeidiSQL
  • Navicat

관련 문서


출처

  • MySQL 공식 홈페이지
  • MySQL Reference Manual
  • 위키백과 「MySQL」