본문 바로가기
C.W.K.
Stream
Lesson 01 of 10 · published

테이블, 행, 열

~12 min · schema, basics

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

규칙을 가진 스프레드시트

테이블은 겉으로 보면 행과 열이 있는 표지만, 각 열에 이름과 자료형, 제약이 붙는다는 점이 달라. 행 하나는 같은 구조를 따르는 개별 대상을 나타내고, 열 하나는 그 대상의 한 속성을 맡아. 관계대수에서는 행을 record 또는 tuple, 열을 attribute라고 불러. 스키마는 테이블·열·자료형·제약을 모아 데이터가 어떤 모양이어야 하는지 정의해. 이 규칙은 설명서에만 적히는 게 아니라 값을 넣는 순간 PostgreSQL이 직접 검사해.

CREATE TABLE을 문장처럼 읽기

테이블 정의는 “이 세계에 어떤 대상이 있고 무엇이 반드시 참이어야 하는가”를 적은 문장이야. 이름은 대상을 드러내고, 자료형은 허용되는 값을 좁히며, NOT NULL·CHECK·UNIQUE·외래 키는 잘못된 상태가 생기지 못하게 해. 스키마가 정직하면 앱 1개가 아니라 모든 앱과 스크립트가 같은 규칙을 공유해.

Code

일반 테이블·sql
CREATE TABLE employees (
    id         INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    first_name TEXT NOT NULL,
    last_name  TEXT NOT NULL,
    email      TEXT UNIQUE NOT NULL,
    hired_on   DATE NOT NULL DEFAULT CURRENT_DATE,
    salary     NUMERIC(10,2)
);

INSERT INTO employees (first_name, last_name, email) VALUES
    ('Ada',   'Lovelace', 'ada@example.com'),
    ('Grace', 'Hopper',   'grace@example.com'),
    ('Alan',  'Turing',   'alan@example.com');

SELECT id, first_name, last_name, hired_on
FROM   employees
ORDER  BY hired_on, last_name;
psql 메타 명령어로 검사하기·bash
\dt                  -- 테이블 목록
\d+ employees        -- 상세: 컬럼, 타입, 인덱스, 제약
\sf my_function      -- 함수 소스 보기

External links

Exercise

'todos' 테이블을 설계해. id와 필수 title, 선택 body와 due_date, 'low'·'medium'·'high'만 허용하는 priority, false가 기본인 completed, 현재 시각이 기본인 created_at을 넣어. 행 3개를 추가한 뒤 priority와 due_date 순으로 조회해.

Progress

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

댓글 0

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

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