[게임 서버] 7.4 데이터베이스 시작

게시:     수정

카테고리:

태그:

이 글은 아래의 책을 자세히 정리한 후, 정리한 글을 GPT에게 요약을 요청하여 작성되었습니다.
게임 서버 프로그래밍 교과서, 배현직 저자

📦 7. 데이터베이스 기초

👉🏻 4. 데이터베이스 시작

🛠️ 사용 도구

사용 소프트웨어:

  • SQL Server Management Studio 2022
  • SQL Server 2025 Express

📝 기본 작업

1. 새 데이터베이스 생성

create_db.png

2. 새 테이블 생성 및 필드 수정

create_table.png

update_field.png


📊 모든 데이터 형식

정수형

종류 설명 특징 예시
bigint 8바이트 정수 매우 큰 범위 (±9경) 9223372036854775807
int 4바이트 정수 가장 일반적으로 사용 345
smallint 2바이트 정수 작은 범위 정수 32000
tinyint 1바이트 정수 0~255 255
bit 논리값 0, 1, NULL 1

소수형

종류 설명 특징 예시
decimal(p,s) 고정 소수점 정확한 계산 (금융용) 123.45
numeric(p,s) decimal과 동일 정확한 고정 소수점 123.45
float 부동소수점 근사값, 오차 존재 123.45
real float의 소형 정밀도 낮음 123.45

통화형

종류 설명 특징 예시
money 통화 데이터 소수점 4자리 고정 1000.2500
smallmoney 작은 통화 데이터 범위 제한 있음 500.2500

문자열형

종류 설명 특징 예시
char(n) 고정 길이 문자열 부족하면 뒤에 공백 자동 채움 "a "
varchar(n) 가변 길이 문자열 최대 n 길이 "hello"
varchar(MAX) 대용량 문자열 최대 2GB 긴 본문 텍스트
nchar(n) 고정 길이 유니코드 UTF-16, 공백 패딩 "가 "
nvarchar(n) 가변 길이 유니코드 UTF-16 "안녕하세요"
nvarchar(MAX) 대용량 유니코드 최대 2GB 긴 한글 텍스트
text 구형 대용량 문자열 ❗Deprecated (varchar(MAX) 권장) 긴 텍스트
ntext 구형 유니코드 문자열 ❗Deprecated (nvarchar(MAX) 권장) 긴 한글 텍스트

바이너리형

종류 설명 특징 예시
binary(n) 고정 길이 바이너리 해시값 등에 사용 0xAF23
varbinary(n) 가변 길이 바이너리 바이너리 데이터 0x11FF
varbinary(MAX) 대용량 바이너리 파일/이미지 저장 이미지 파일
image 구형 이미지 타입 ❗Deprecated (varbinary(MAX) 권장) 이미지

날짜/시간형

종류 설명 특징 예시
date 날짜 yyyy-mm-dd 2026-03-02
time(n) 시간 소수점 초 정밀도 지정 12:30:45
datetime 날짜+시간 정밀도 낮음 (3.33ms) 2026-03-02 12:30:45
datetime2(n) 개선된 날짜+시간 더 넓은 범위 + 고정밀 2026-03-02 12:30:45.1234567
datetimeoffset(n) 시간대 포함 날짜 글로벌 서비스용 2026-03-02 12:30:45 +09:00
smalldatetime 작은 범위 날짜 정밀도 낮음 2026-03-02 12:30
timestamp rowversion 값 시간 아님, 행 변경 추적 0x00000000000007D3

특수형

종류 설명 특징 예시
uniqueidentifier GUID / UUID 전역 고유값 6F9619FF-8B86-D011-B42D-00C04FC964FF
geometry 평면 공간 데이터 좌표 기반 POINT(1 1)
geography 지구 좌표 데이터 GPS 기준 위도/경도 -
hierarchyid 계층 구조 표현 트리 구조 저장 /1/3/
sql_variant 여러 타입 저장 가능 권장되지 않음 다양한 값
json JSON 데이터 내부적으로 nvarchar 기반 {“name”:”kim”}
xml XML 데이터 XML 전용 함수 지원 <name>kim</name>
vector(n) 벡터 데이터 AI 임베딩/유사도 검색 [0.12, 0.98, …]

🔍 NULL 값

NULL 허용 설정:

  • 데이터베이스 필드에서 null 허용을 켜면 null을 저장할 수 있다

NULL의 의미:

  • null값 자체가 없음을 의미한다
  • null의 존재 이유는 0, ""(빈문자열)과 구별하기 위함이다

🧐 정리

자주 사용하는 타입:

  • 정수: int, bigint
  • 소수: decimal, float
  • 문자열: varchar, nvarchar
  • 날짜: datetime2, date
  • 고유값: uniqueidentifier

주의사항:

  • text, ntext, image는 Deprecated → MAX 타입 사용
  • 금융 계산은 decimal 사용 (float은 오차 있음)
  • 한글 저장 시 nvarchar 사용 (varchar는 한글 깨짐)
  • NULL과 빈 문자열/0은 다른 개념

GameServer 카테고리 내 다른 글 보러가기

댓글남기기