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

룰 있는 스프레드시트

테이블은 자기 자신에 대해 거짓말 안 하는 스프레드시트야. 모든 컬럼이 이름이랑 고정 데이터 타입을 가지고, 모든 행이 한 레코드. 스프레드시트랑 다르게, 숫자 컬럼에 문자열 슬쩍 넣거나 필수 필드 빼먹는 거 불가능 — DB 가 입구에서 거절.

익숙해질 어휘: 테이블이 들 (relational-algebra 교과서에선 record, tuple) 을 담고, 각 행은 테이블의 컬럼 (attribute) 에 대한 값을 가져. 스키마 = 테이블, 컬럼, 타입, 제약의 모음 = DB 가 어떤 모습일 줄 아는가.

CREATE TABLE 을 문장처럼 읽기

밑 예제를 이렇게 읽어: "employees 라는 테이블이 있다. 모든 행이 id (자동 생성, primary key), first_name + last_name (필수 텍스트), email (필수, 유일), 오늘 default 인 hired_on date 를 가진다." 이걸 능숙하게 할 수 있으면 다른 모든 PostgreSQL 개념이 쉬워져.

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 meta-command 로 검사·bash
\dt                  -- 테이블 목록
\d+ employees        -- 상세: 컬럼, 타입, 인덱스, 제약
\sf my_function      -- 함수 소스 보기

External links

Exercise

'todos' 테이블 CREATE TABLE 설계: id, title (필수), body (선택), priority ('low'/'medium'/'high' 만), due_date (선택), completed (default false), created_at (default now). 세 행 INSERT 후 priority + due_date 순으로 SELECT.

Progress

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

댓글 0

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

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