1. 스토리지 엔진
1.1 스토리지 엔진 개념
MySQL에서 스토리지 엔진은 데이터를 디스크에 저장하는 방식을 결정하는 컴포넌트입니다. 파일 시스템의 파일 형식과 유사하며, InnoDB가 가장 널리 사용됩니다.
-- 테이블 생성 시 엔진 지정
CREATE TABLE user_data (
user_id INT,
user_name VARCHAR(50)
) ENGINE=InnoDB;
-- 테이블 엔진 확인
SHOW CREATE TABLE user_data;2. 데이터 타입
2.1 숫자 타입
- 정수형: TINYINT, INT, BIGINT
- 실수형: FLOAT, DOUBLE, DECIMAL
2.2 문자열 타입
- CHAR: 고정 길이, 빠른 접근
- VARCHAR: 가변 길이, 공간 효율적
2.3 시간 타입
DATE, TIME, DATETIME, TIMESTAMP 등이 있으며, NOW() 함수로 현재 시간을 얻을 수 있습니다.
3. 데이터베이스 관리
-- 데이터베이스 생성
CREATE DATABASE sales_db CHARACTER SET utf8mb4;
-- 데이터베이스 삭제
DROP DATABASE sales_db;
-- 데이터베이스 변경
ALTER DATABASE sales_db CHARACTER SET utf8;
-- 데이터베이스 확인
SHOW DATABASES;
SELECT DATABASE();4. 테이블 제약 조건
-- 기본 키 설정
CREATE TABLE products (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100) NOT NULL
);
-- 외래 키 설정
CREATE TABLE orders (
order_id INT PRIMARY KEY,
product_id INT,
CONSTRAINT fk_product FOREIGN KEY (product_id)
REFERENCES products(product_id)
ON DELETE CASCADE
);5. 데이터 조작
5.1 데이터 삽입
-- 단일 레코드 삽입
INSERT INTO employees (emp_id, emp_name)
VALUES (1, '김철수');
-- 다중 레코드 삽입
INSERT INTO employees VALUES
(2, '이영희'),
(3, '박민수');5.2 데이터 조회
-- 기본 조회
SELECT emp_id, emp_name FROM employees
WHERE emp_id > 1
ORDER BY emp_name
LIMIT 10;6. 테이블 조인
-- 내부 조인
SELECT e.emp_name, d.dept_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.dept_id;
-- 왼쪽 외부 조인
SELECT e.emp_name, d.dept_name
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.dept_id;7. 서브쿼리
-- 서브쿼리 예제
SELECT emp_name
FROM employees
WHERE dept_id IN (
SELECT dept_id FROM departments
WHERE location = '서울'
);