8강 / 20강

필드 — 세로 한 칸, 그리고 '타입'이라는 약속

표에 규칙을 심는 곳

필드 — 세로 한 칸, 그리고 '타입'이라는 약속
필드는 세로 한 칸 전체. 그리고 각 필드는 타입을 가집니다.

표를 세로로 잘라 봅시다. 점수 열 하나를 통째로 들어 올린 것, 그것이 필드(field) 또는 열(column)입니다.

그런데 필드는 단순한 '칸'이 아닙니다. 필드는 약속을 가지고 있어요.

점수
→
INTEGER 정수만 들어올 수 있음 NOT NULL 비워 둘 수 없음 CHECK 0~100 0 미만이나 100 초과는 거부

이 약속을 제약 조건(constraint)이라고 부릅니다. 데이터베이스는 이 약속을 어기는 데이터를 단호하게 거부합니다.

SQLite의 타입 5종

SQLite는 세상에서 가장 단순한 타입 체계를 가지고 있습니다. 딱 다섯 개예요.

타입담는 것예시
INTEGER정수1001, 17, -5
REAL실수(소수)3.14, 88.5
TEXT글자'김민준', '2026-08-20'
BLOB덩어리(사진·파일)이미지 원본 바이트
NULL값이 없음아직 안 정해짐

🎮 규칙을 정하고, 어긋난 값을 넣어 보세요

타입과 제약조건을 골라 표를 만든 뒤 값을 넣어 봅니다. 규칙을 어기면 사람이 아니라 데이터베이스가 거절합니다. 진짜 오류 메시지를 확인해 보세요. INTEGER 칸에 소수를 넣으면 어떻게 되는지도 꼭 실험해 보세요 — SQLite는 조금 너그럽습니다.

타입·제약조건 실험실 — DBMS가 실제로 막아 줍니다
불러오는 중…

표의 설계도 그리기

필드 이름과 타입, 제약 조건을 모아 적은 것이 곧 테이블 설계도이고, SQL에서는 CREATE TABLE로 씁니다. 지금은 모양만 눈에 익혀 두세요. 직접 실행해 보는 건 13강부터입니다.

CREATE TABLE 학생 (
    학번  INTEGER PRIMARY KEY,          -- 이 학생을 유일하게 가리키는 번호
    이름  TEXT    NOT NULL,             -- 반드시 있어야 함
    학년  INTEGER NOT NULL,
    점수  INTEGER CHECK (점수 BETWEEN 0 AND 100)   -- 0~100만 허용
);

PRIMARY KEY(기본키)가 새로 나왔네요. 이건 "이 표에서 한 줄을 콕 집어내는 주민등록번호 같은 칸"입니다. 절대 중복될 수 없고 절대 비어 있을 수 없어요. 10강 관계형 데이터베이스에서 아주 중요한 역할을 합니다.

타입이 없을 때 벌어지는 일.
Python 브라우저에서 실행
🤔 확인 문제
NULL에 대한 설명으로 옳은 것은?