C.W.K.
Stream
Lesson 01 of 10 · published

CREATE TABLE 기본

~14 min · schema, create-table, ddl

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

뼈대 statement

모든 SQLite DB 는 테이블의 모음이고, 모든 테이블은 CREATE TABLE 로 만들어. 모양은 단순해.

CREATE TABLE table_name (
  column_name TYPE [constraints],
  ...
);

SQLite 는 진짜 schema 를 주는데, 한 가지 트위스트가 있어 — 기본값으로 type affinity 를 써. TYPE hint 가 의미는 있지만, STRICT 모드 (다음 lesson) 명시 안 하면 엔진이 어떤 타입 값이든 받아줘. 일단은 컨벤션 따라 — 의도한 타입 선언하고 그걸 코드와 같이 지키는 계약처럼 다뤄.

95% 쓰는 핵심 타입 5 개:

  • INTEGER — 정수, 8 byte signed.
  • REAL — IEEE 754 double.
  • TEXT — UTF-8 문자열.
  • BLOB — raw bytes.
  • NUMERIC — integer 선호 + decimal 받는 affinity. 모호해서 잘 안 씀.
Principle: SQLite 가 기본 dynamically typed 라도, CREATE TABLE 은 strict 인 것처럼 써. 미래의 너, 미래의 피파, 미래의 reader 가 고마워해. 의도는 schema 에 적어 — 사용 코드에 적지 마.

Code

진짜 쓸만한 CREATE TABLE·sql
CREATE TABLE conversations (
  id          INTEGER PRIMARY KEY,
  title       TEXT NOT NULL,
  brain       TEXT NOT NULL DEFAULT 'claude',
  created_at  TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at  TEXT NOT NULL DEFAULT (datetime('now')),
  archived    INTEGER NOT NULL DEFAULT 0   -- 0/1 boolean
);
내가 만든 거 다시 읽기·sql
-- 자기 schema 읽는 두 가지
.schema conversations

SELECT name, sql FROM sqlite_schema WHERE type='table' AND name='conversations';

-- Per-column 메타 (PK, NOT NULL flag 포함)
SELECT cid, name, type, "notnull", dflt_value, pk
FROM   pragma_table_info('conversations');

External links

Exercise

conversations 와 짝이 되는 messages 테이블 디자인: id, conversations 로 가는 FK, role ('user'|'assistant'|'system'), content, created_at, optional brain. CREATE TABLE 작성하고 pragma_table_info 로 컬럼 다 의도대로 됐는지 검증.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.