데이터베이스 조작 예제 💾
게시판 테이블 만들고 데이터 입력하기
여러분, "게시판 테이블을 직접 만들어 보고, 데이터를 손으로 넣어본 경험" 있으신가요? 직접 해보면 SQL이 훨씬 재밌어집니다!
안녕하세요!
데이터베이스를 처음 배우거나 실무에 막 발을 들인 분들께 도움이 될 만한 실습 예제를 준비했어요.
오늘은 가장 많이 쓰이는 예제 중 하나인 "게시판 테이블 생성과 데이터 입력"을 다뤄볼 거예요.
테이블 설계부터 SQL 문 작성, 실제 데이터 삽입까지 모든 과정을 친절하게 설명드릴게요.
복잡한 개념은 최소한으로 줄이고, 예제 중심으로 구성했으니 초보자도 걱정하지 마세요!
그럼 천천히 따라오시면서 직접 실습해보세요. 😊
목차
1. 게시판 테이블 설계 🛠️
게시판을 만든다고 하면 제일 먼저 떠오르는 건 무엇일까요?
바로 "게시글을 저장할 공간"이죠.
이 공간은 데이터베이스에서 "테이블"이라는 형태로 구현돼요.
게시판 테이블을 만들기 전에, 어떤 데이터를 저장해야 할지 먼저 설계해보는 게 중요해요.
이걸 잘 해두면 나중에 확장하거나 기능을 붙일 때 훨씬 수월하거든요.
📋 어떤 컬럼이 필요할까?
- id - 게시글 번호 (자동 증가, 기본 키)
- title - 게시글 제목
- content - 게시글 본문 내용
- writer - 작성자 이름
- created_at - 작성일시 (기본값 CURRENT_TIMESTAMP)
📊 테이블 구조 미리보기
컬럼명 | 데이터 타입 | 제약 조건 | 설명 |
---|---|---|---|
id | INT | PRIMARY KEY, AUTO_INCREMENT | 고유 게시글 번호 |
title | VARCHAR(100) | NOT NULL | 게시글 제목 |
content | TEXT | NOT NULL | 게시글 내용 |
writer | VARCHAR(50) | NOT NULL | 작성자 이름 |
created_at | DATETIME | DEFAULT CURRENT_TIMESTAMP | 작성 시간 |
이제 어떤 테이블을 만들어야 할지 확실히 감이 오셨죠?
다음 단계에서는 이 설계대로 실제 SQL 문장을 작성해서 게시판 테이블을 직접 만들어볼게요!
2. CREATE TABLE로 테이블 만들기 ✍️
자, 이제 우리가 설계한 게시판 테이블을 진짜로 만들어볼 차례입니다.
이럴 때 사용하는 SQL 명령어가 바로 CREATE TABLE
이에요.
먼저 구조를 이해하고, 바로 실습해볼 수 있도록 순서대로 안내드릴게요.
복잡하지 않으니 걱정 마세요.
하나하나 따라오면 금방 끝납니다!
🧾 기본 SQL 문법 설명
CREATE TABLE board (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
writer VARCHAR(50) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
위 코드를 보면 board라는 이름의 테이블을 만들고 있고, 각 컬럼의 타입과 제약 조건을 함께 정의하고 있어요.
한 줄씩 해석해 볼게요:
-
id INT AUTO_INCREMENT PRIMARY KEY
: 고유번호 자동 증가 + 기본 키 지정 -
title VARCHAR(100) NOT NULL
: 제목은 최대 100자, 빈칸 입력 금지 -
content TEXT NOT NULL
: 긴 본문 저장 가능, 빈칸 불가 -
writer VARCHAR(50) NOT NULL
: 작성자 이름, 50자 제한 -
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
: 현재 시간 자동 저장
💡 실전 팁: SQL 에러 방지
- 세미콜론(;) 누락 주의! SQL 명령은 끝에 꼭
;
붙이기 - 컬럼명 오타 주의! 영문 오타 많아요...
- 중복된 테이블명 있을 경우
DROP TABLE
먼저 실행
이제 SQL을 실행해보면 정말 테이블이 만들어질 거예요!
다음은 이 테이블에 실제로 데이터를 넣어보는 실습으로 넘어가볼게요 🙌
3. INSERT 문으로 데이터 입력하기 📥
게시판 테이블을 만들었으면 이제 본격적으로 데이터를 넣어봐야겠죠?
INSERT INTO 문은 데이터베이스에 새 행(row)을 추가할 때 사용하는 명령어예요.
입력 방법을 하나하나 실습하면서 확실히 익혀보죠!
✅ 기본 INSERT 구문 예시
INSERT INTO board (title, content, writer)
VALUES ('첫 번째 글입니다!', '이건 테스트 게시물의 본문입니다.', '홍길동');
보이시죠?
id
와 created_at
은 따로 입력하지 않았는데도 자동으로 들어갑니다.
그 이유는 id는 AUTO_INCREMENT, created_at은 기본값 CURRENT_TIMESTAMP로 설정했기 때문이에요.
🧪 실습용 샘플 데이터 더 넣어보기
INSERT INTO board (title, content, writer)
VALUES
('두 번째 글입니다', '내용은 이렇게 다양하게 넣을 수 있어요.', '이순신'),
('세 번째 글도 있어요', '본문에 마크다운이나 HTML 태그가 들어갈 수도 있겠죠?', '강감찬'),
('DB 입력이 재밌어요!', 'INSERT 문 반복해보면 감 잡힙니다.', '유관순');
이렇게 한꺼번에 여러 개의 데이터를 넣을 수도 있어요.
VALUES 뒤에 괄호 묶인 데이터를 쉼표로 구분만 하면 됩니다.
실무에서도 이런 방식 자주 써요.
⚠️ 입력 시 주의사항
- 문자열은 항상 작은 따옴표('')로 감싸야 합니다!
-
NULL
값을 허용하지 않는 칼럼은 반드시 값 입력 필요! - INSERT 전에
CREATE TABLE
이 제대로 실행됐는지 꼭 확인!
이제 여러 개의 게시글이 잘 저장되었을 거예요.
다음으로 넘어가서 SELECT 문으로 데이터를 확인해보는 실습을 해볼게요.
진짜 저장이 잘 됐는지 직접 눈으로 확인하는 시간이죠!
4. 입력된 데이터 확인하기 🔍
데이터베이스에 데이터를 잘 넣었다면, 이제 그걸 눈으로 확인해봐야겠죠?
이럴 때 사용하는 명령어가 바로 SELECT
입니다.
이 명령은 데이터를 조회할 때 사용돼요.
기본적인 형태부터 조건을 붙이는 방식까지 하나씩 익혀볼게요!
🔍 전체 데이터 조회하기
SELECT * FROM board;
이렇게 하면 board 테이블 안에 들어있는 모든 행(row)이 출력돼요.
각 게시글의 id, 제목, 내용, 작성자, 작성일시가 한눈에 보이겠죠?
DB 관리 도구나 터미널에서 직접 실행해보면 훨씬 와닿을 거예요.
🎯 특정 칼럼만 조회하기
SELECT title, writer FROM board;
모든 데이터를 볼 필요가 없을 땐 이렇게 필요한 컬럼만 골라서 조회할 수 있어요.
이건 실무에서 자주 쓰는 패턴이에요.
예를 들어
게시판 목록 페이지를 만들 때 제목과 작성자만 가져오면 딱 좋겠죠?
🔎 조건을 붙여서 조회하기 (WHERE)
SELECT * FROM board WHERE writer = '홍길동';
이 명령은 작성자가 '홍길동'인 게시글만 출력해줘요.
WHERE
조건은 SQL의 핵심 기능 중 하나인데, 이렇게 간단한 조건뿐만 아니라 숫자 비교, 날짜 비교, LIKE 검색 등도 가능합니다.
🧹 조회 결과 정렬하기 (ORDER BY)
SELECT * FROM board ORDER BY created_at DESC;
게시판에서 최신 글이 위에 나오도록 정렬하고 싶다면 ORDER BY
를 사용하면 돼요.
DESC는 내림차순, ASC는 오름차순 정렬이에요.
기본은 오름차순이죠.
📌 자주 쓰는 SELECT 패턴 요약
용도 | SQL 예시 |
---|---|
모든 행 전체 보기 | SELECT * FROM board; |
제목만 보기 | SELECT title FROM board; |
작성자 조건 검색 | SELECT * FROM board WHERE writer = '이순신'; |
최신순 정렬 | SELECT * FROM board ORDER BY created_at DESC; |
SELECT 문은 데이터베이스와 "대화"하는 가장 기본적인 수단이에요.
잘만 다루면 복잡한 데이터 분석도 가능하답니다.
다음 파트에서는 실무에서 자주 발생하는 상황과 예외 처리 팁을 알아볼게요!
5. 실무에서 쓰는 팁과 예외 처리 ⚠️
SQL 문법만 아는 걸로는 부족해요. 실제 서비스에서는 예외 상황과 안정성이 중요하거든요.
이번 섹션에서는 초보자들이 자주 실수하는 부분과 실전 꿀팁들을 정리해봤어요.
실무에서도 유용하게 쓰일 거예요!
🚫 자주 하는 실수 TOP 5
- 세미콜론(;)을 빼먹어서 실행이 안 됨
- 문자열을 작은따옴표로 안 감싸서 에러 발생
- NOT NULL인데 값을 안 넣고 INSERT 시도
- 오타로 인해 존재하지 않는 컬럼/테이블 호출
- 같은 테이블을 여러 번 만들려고 해서 오류 발생
💡 DROP TABLE IF EXISTS 사용하기
DROP TABLE IF EXISTS board;
이미 같은 이름의 테이블이 존재할 경우 새로 만들려고 하면 에러가 나요.
이럴 땐 위 명령어로 먼저 삭제해주는 게 안전합니다.
IF EXISTS를 붙이면 테이블이 존재할 때만 삭제하므로 실습 시 특히 유용해요!
🧠 INSERT 전에 데이터 유효성 검사하기
프론트엔드에서 유효성 검사를 하더라도, 백엔드나 DB단에서도 꼭 한 번 더 검증을 해주는 게 좋아요.
예를 들어 제목이나 작성자가 비어있으면 저장을 막거나, 내용의 길이가 너무 짧은 경우 경고 메시지를 띄우는 방식이죠.
🔐 트랜잭션(Transaction) 기본 개념
- 여러 SQL 작업을 하나의 단위로 묶어서 처리
- 중간에 에러가 발생하면 ROLLBACK으로 전체 취소
- 모든 작업이 문제없이 끝났을 때만 COMMIT으로 저장
START TRANSACTION;
INSERT INTO board (title, content, writer) VALUES ('트랜잭션 글', '테스트 중입니다.', '관리자');
-- 중간에 에러 발생 시 ROLLBACK;
COMMIT;
이 개념은 조금 어려울 수 있지만, 진짜 실무에서는 꼭 필요해요.
특히 결제, 주문, 포인트 적립 같은 작업은 반드시 트랜잭션으로 감싸야 합니다.
이제 SQL의 기초부터 실전 팁까지 꽤 많이 배웠어요!
6. 마무리 ➡️
여기까지 따라오신 여러분, 정말 수고 많으셨습니다!
이제 여러분은 단순히 SQL 문법을 아는 수준을 넘어서,
게시판 테이블을 설계하고 직접 데이터를 입력하고 확인하는 실습까지 마스터하신 거예요.
이건 단순한 이론이 아니라, 실제 웹 서비스에서 사용하는 핵심 기능이에요. 👍
이제 여러분이 할 수 있는 다음 단계는 이런 것들이에요:
- 댓글 테이블을 따로 만들어서 게시글과 연결해보기 (외래키 연습)
- 게시글 수정과 삭제 기능 추가 (UPDATE, DELETE 문 활용)
- 웹 프레임워크(FastAPI, Django 등)와 연동해서 게시판 페이지 구현
이제 SQL이 조금 더 익숙해지셨을 거예요.
처음엔 생소했던 CREATE, INSERT, SELECT 명령이 점점 손에 익는 느낌이 들지 않으셨나요?😉
다음 실습에서는 JOIN과 정규화 개념도 살펴볼 예정이니 기대해주세요!
'Database' 카테고리의 다른 글
조건문과 연산자 실습예제 : 실무 데이터로 배우는 SQL 조건 활용법 (1) | 2025.04.08 |
---|---|
WHERE 절 마스터하기 : 다양한 조건문과 연산자 총정리 (1) | 2025.04.08 |
데이터 정의어(DDL)의 핵심! CREATE, ALTER, DROP 완전 정복 (0) | 2025.04.07 |
데이터 조작어(DML) 완전 정복: SELECT, INSERT, UPDATE, DELETE (0) | 2025.04.07 |
MySQL/MariaDB 설치 및 계정·DB 실습 가이드 (윈도우·리눅스·맥) (0) | 2025.04.07 |