실제 DB 환경 준비
DBeaver 설치 후 새 연결:
「Test Connection」 → 성공이면 「Finish」.
CREATE DATABASE spring_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE spring_db;
👉 본 과정에서 사용할 DB 의 이름은 spring_db.
utf8mb4 = 한글 + 이모지 지원.
CREATE TABLE mymember (
id VARCHAR(50) PRIMARY KEY,
pwd VARCHAR(20) NOT NULL
);
👉 처음에는 딱 두 칸 — 로그인 ID 와 비밀번호. pwd 는 평문 단계라 짧게(20). 나중에 BCrypt 가 들어올 때 ALTER TABLE 로 늘릴 예정.
CREATE TABLE myboard (
num INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
writer VARCHAR(50) NOT NULL,
content TEXT NOT NULL
);
👉 4 칸이 끝 — 글 번호 / 제목 / 작성자 / 본문. 작성 시각·조회수·첨부는 후속 차시에서 ALTER TABLE 로 추가.
완성된 테이블을 통째로 보여주면 — 학생은 「왜 이 컬럼이 처음부터 있지?」 라는 가장 중요한 질문을 못 합니다.
이 과정에서는 차시가 진행될수록 ALTER TABLE 로 컬럼이 자라납니다. 그 ALTER 하나하나가 곧 학습 내용입니다.
-- 회원 3 명
INSERT INTO mymember (id, pwd) VALUES
('hong', 'temp1234'),
('kim', 'temp1234'),
('lee', 'temp1234');
-- 게시글 3 개
INSERT INTO myboard (title, writer, content) VALUES
('첫 글입니다', 'hong', '안녕하세요'),
('두 번째 글', 'hong', '내용입니다'),
('환영합니다', 'kim', '반갑습니다');
👉 비밀번호는 「temp1234」 평문 — v3 에서 BCrypt 로 다시 저장할 예정.
SELECT * FROM mymember;
SELECT * FROM myboard;
-- 게시글 + 작성자 (mymember.id 를 writer 로 참조)
SELECT b.num, b.title, b.writer
FROM myboard b
INNER JOIN mymember m ON b.writer = m.id;
👉 결과가 정상 출력되면 — 본 과정의 DB 환경 준비 완료.
| 증상 | 원인 |
|---|---|
| "Access denied" | 비밀번호 오류 |
| "Unknown database" | USE 안 했거나 DB 안 만듦 |
| 한글 깨짐 | CHARACTER SET utf8mb4 누락 |
| 테이블 못 찾음 | USE 안 했거나 이름 오타 (mymember / myboard) |
| 포트 충돌 | 3306 사용 중 — 다른 MySQL 인스턴스 또는 변경 |
DB 와 SQL 은 책상 위 개념. 실제 DB 환경 없음.
MySQL 서버 가동, mymember·myboard 최소 테이블 + 테스트 데이터. 차시가 진행되며 ALTER 로 자라날 출발점.
mymember, myboard)