메이플스토리 분류
SQL로 아이템 지급하기
컨텐츠 정보
- 62 조회
- 0 추천
- 0 비추천
- 목록
본문
이번 강의에서는 실제 서버 운영 시 가장 많이 사용하는 작업 중 하나인 "아이템 지급" 방법을 알아보겠습니다.
이 강의는 SQL을 처음 접하는 분들도 따라할 수 있도록 최대한 쉽게 설명하겠습니다.
아이템 지급 원리 이해하기
예를 들어 캐릭터가 아이템을 가지고 있다는 것은
DB 어딘가에
캐릭터번호 : 1001
아이템번호 : 182400001
수량 : 10
이 저장되어 있다는 의미입니다.
즉,
우리가 직접 DB에 데이터를 추가하면 게임 안에서도 아이템이 보이게 됩니다.
작업 전 준비
먼저 HeidiSQL 또는 Navicat을 실행합니다.
서버 DB에 접속합니다.
일반적으로 다음과 같은 테이블이 존재합니다.
accounts
players
inventory
item_instance
warehouse
서버팩마다 이름은 다를 수 있습니다.
STEP 1. 캐릭터 정보 확인
먼저 아이템을 지급할 캐릭터를 찾습니다.
SELECT *
FROM players
WHERE name='테스트';
결과 예시
id = 1001
name = 테스트
level = 80
여기서 가장 중요한 것은
id = 1001
입니다.
대부분의 서버는 캐릭터 ID를 기준으로 아이템을 연결합니다.
STEP 2. 지급할 아이템 찾기
이번에는 아이템 번호를 찾습니다.
예시
SELECT *
FROM item_templates
WHERE name LIKE '%강화석%';
결과
item_id = 182400001
item_name = 최상급 강화석
이제
캐릭터ID = 1001
아이템ID = 182400001
을 확보했습니다.
STEP 3. 현재 인벤토리 확인
수정 전에 반드시 확인합니다.
SELECT *
FROM inventory
WHERE player_id = 1001;
이 작업을 통해
데이터 구조
컬럼 이름
기존 저장 방식
을 확인할 수 있습니다.
STEP 4. 아이템 지급
가장 기본적인 형태입니다.
INSERT INTO inventory
(player_id,item_id,count)
VALUES
(1001,182400001,10);
의미
1001번 캐릭터에게
182400001번 아이템
10개 지급
지급 후 확인
SELECT *
FROM inventory
WHERE player_id = 1001;
정상적으로 추가되었다면
새로운 데이터가 보입니다.
가장 많이 하는 실수
1. 캐릭터 ID 착각
초보 운영자들이 자주 하는 실수입니다.
캐릭터명 : 테스트
계정명 : admin
을 혼동하여
잘못된 캐릭터에게 지급하는 경우가 있습니다.
반드시 player_id를 확인하세요.
2. 수량 오입력
INSERT INTO inventory
(player_id,item_id,count)
VALUES
(1001,182400001,100000);
처럼 너무 큰 수량을 입력하면
서버 오류가 발생하거나 DB가 꼬일 수 있습니다.
3. 아이템 코드 실수
182400001
182400011
한 자리만 달라도 완전히 다른 아이템입니다.
반드시 조회 후 사용하세요.
여러 유저에게 한번에 지급하기
이벤트 보상 지급 시 자주 사용됩니다.
예시
UPDATE inventory
SET count = count + 10
WHERE item_id = 182400001;
의미
해당 아이템을 보유한 모든 유저에게
10개 추가 지급
하지만 초보자는 이런 일괄 수정은 추천하지 않습니다.
실수하면 전체 유저 데이터가 영향을 받기 때문입니다.
지급 취소하기
잘못 지급했다면 삭제할 수 있습니다.
DELETE FROM inventory
WHERE player_id = 1001
AND item_id = 182400001;
해당 아이템만 삭제됩니다.
운영자들이 실제로 사용하는 방법
대부분의 운영자는
1. SELECT로 확인
2. INSERT 또는 UPDATE
3. SELECT로 재확인
4. 게임 접속 후 최종 확인
순서로 작업합니다.
바로 수정하지 않고
반드시 조회 → 수정 → 검증 과정을 거칩니다.
작업 전 백업은 필수
실제 운영 중에는
mysqldump -u root -p gamedb > backup.sql
로 백업 후 작업하세요.
5초의 실수가 몇 달간 운영한 데이터를 날릴 수도 있습니다.
이 강의는 SQL을 처음 접하는 분들도 따라할 수 있도록 최대한 쉽게 설명하겠습니다.
아이템 지급 원리 이해하기
예를 들어 캐릭터가 아이템을 가지고 있다는 것은
DB 어딘가에
캐릭터번호 : 1001
아이템번호 : 182400001
수량 : 10
이 저장되어 있다는 의미입니다.
즉,
우리가 직접 DB에 데이터를 추가하면 게임 안에서도 아이템이 보이게 됩니다.
작업 전 준비
먼저 HeidiSQL 또는 Navicat을 실행합니다.
서버 DB에 접속합니다.
일반적으로 다음과 같은 테이블이 존재합니다.
accounts
players
inventory
item_instance
warehouse
서버팩마다 이름은 다를 수 있습니다.
STEP 1. 캐릭터 정보 확인
먼저 아이템을 지급할 캐릭터를 찾습니다.
SELECT *
FROM players
WHERE name='테스트';
결과 예시
id = 1001
name = 테스트
level = 80
여기서 가장 중요한 것은
id = 1001
입니다.
대부분의 서버는 캐릭터 ID를 기준으로 아이템을 연결합니다.
STEP 2. 지급할 아이템 찾기
이번에는 아이템 번호를 찾습니다.
예시
SELECT *
FROM item_templates
WHERE name LIKE '%강화석%';
결과
item_id = 182400001
item_name = 최상급 강화석
이제
캐릭터ID = 1001
아이템ID = 182400001
을 확보했습니다.
STEP 3. 현재 인벤토리 확인
수정 전에 반드시 확인합니다.
SELECT *
FROM inventory
WHERE player_id = 1001;
이 작업을 통해
데이터 구조
컬럼 이름
기존 저장 방식
을 확인할 수 있습니다.
STEP 4. 아이템 지급
가장 기본적인 형태입니다.
INSERT INTO inventory
(player_id,item_id,count)
VALUES
(1001,182400001,10);
의미
1001번 캐릭터에게
182400001번 아이템
10개 지급
지급 후 확인
SELECT *
FROM inventory
WHERE player_id = 1001;
정상적으로 추가되었다면
새로운 데이터가 보입니다.
가장 많이 하는 실수
1. 캐릭터 ID 착각
초보 운영자들이 자주 하는 실수입니다.
캐릭터명 : 테스트
계정명 : admin
을 혼동하여
잘못된 캐릭터에게 지급하는 경우가 있습니다.
반드시 player_id를 확인하세요.
2. 수량 오입력
INSERT INTO inventory
(player_id,item_id,count)
VALUES
(1001,182400001,100000);
처럼 너무 큰 수량을 입력하면
서버 오류가 발생하거나 DB가 꼬일 수 있습니다.
3. 아이템 코드 실수
182400001
182400011
한 자리만 달라도 완전히 다른 아이템입니다.
반드시 조회 후 사용하세요.
여러 유저에게 한번에 지급하기
이벤트 보상 지급 시 자주 사용됩니다.
예시
UPDATE inventory
SET count = count + 10
WHERE item_id = 182400001;
의미
해당 아이템을 보유한 모든 유저에게
10개 추가 지급
하지만 초보자는 이런 일괄 수정은 추천하지 않습니다.
실수하면 전체 유저 데이터가 영향을 받기 때문입니다.
지급 취소하기
잘못 지급했다면 삭제할 수 있습니다.
DELETE FROM inventory
WHERE player_id = 1001
AND item_id = 182400001;
해당 아이템만 삭제됩니다.
운영자들이 실제로 사용하는 방법
대부분의 운영자는
1. SELECT로 확인
2. INSERT 또는 UPDATE
3. SELECT로 재확인
4. 게임 접속 후 최종 확인
순서로 작업합니다.
바로 수정하지 않고
반드시 조회 → 수정 → 검증 과정을 거칩니다.
작업 전 백업은 필수
실제 운영 중에는
mysqldump -u root -p gamedb > backup.sql
로 백업 후 작업하세요.
5초의 실수가 몇 달간 운영한 데이터를 날릴 수도 있습니다.
-
등록일 2026.06.18
-
등록일 2026.06.18
-
등록일 2026.06.18
-
등록일 2026.06.17
관련자료
댓글 0
등록된 댓글이 없습니다.

