모든 테이블이 출발하는 자리
SQLite DB는 결국 테이블의 모음이고, 테이블은 전부 CREATE TABLE로 태어나. 모양은 단순해.
CREATE TABLE table_name (
column_name TYPE [constraints],
...
);SQLite도 제대로 된 schema를 주는데, 한 가지 비틀림이 있어. 기본값이 type affinity거든. TYPE이 힌트로서 의미는 갖지만, 다음 lesson에서 볼 STRICT 모드를 명시하지 않으면 엔진은 어떤 타입의 값이든 받아줘. 일단은 관습을 따라. 의도한 타입을 선언하고, 그걸 코드와 함께 지켜야 할 계약처럼 대해.
실제로 95%를 차지하는 타입은 다섯 개야.
INTEGER— 부호 있는 8바이트 정수.REAL— IEEE 754 double.TEXT— UTF-8 문자열.BLOB— 손대지 않은 raw bytes.NUMERIC— 정수를 선호하면서 소수도 받는 affinity인데, 애매해서 잘 안 써.
Principle: SQLite가 기본적으로 타입에 헐렁하더라도,
CREATE TABLE은 엄격한 것처럼 써. 미래의 너도, 미래의 피파도, 미래의 독자도 고마워할 거야. 의도는 schema에 적어. 쓰는 쪽 코드에 적지 말고.