새 테이블 만들기

새 테이블 만들기 (Creating a New Table)

이제 드디어 우리가 사용할 **테이블(table)**을 만들어 볼 거예요. 테이블을 만들려면 테이블 이름, 그리고 각 컬럼(column)의 이름과 타입(type)을 지정해 주면 돼요. 처음 만드는 테이블은 날씨 정보를 담는 weather 테이블이에요.

출처: PostgreSQL 공식 문서 — 2.3. Creating a New Table

첫 번째 테이블 만들기

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- low temperature
    temp_hi         int,           -- high temperature
    prcp            real,          -- precipitation
    date            date
);

이 명령을 그냥 psql에 줄바꿈을 그대로 넣어 입력해도 돼요. psql은 세미콜론(;)이 나올 때까지 명령이 끝난 것으로 보지 않으니까요.

SQL 문법에 대한 작은 참고

  • SQL 명령에서는 공백(space, 탭, 줄바꿈)을 자유롭게 쓸 수 있어요. 그래서 위와 다르게 정렬해도, 심지어 한 줄로 다 붙여도 잘 동작해요.
  • 두 개의 대시(--)는 주석(comment)을 뜻해요. -- 뒤에 오는 내용은 줄이 끝날 때까지 무시돼요. 위 예제에서 -- low temperature 같은 게 바로 그 주석이에요.
  • SQL은 키워드와 식별자(identifier)에 대해 대소문자를 구분하지 않아요. 단, 예외적으로 식별자를 큰따옴표(")로 감싸면 대소문자가 그대로 유지돼요. (위 예제에서는 그렇게 하지 않았어요.)

컬럼 타입이 헷갈릴 땐

  • varchar(80)최대 80자 길이의 문자열을 저장할 수 있는 데이터 타입이에요.
  • int는 일반적인 정수 타입이에요.
  • real은 단정밀도(single precision) 부동소수점 숫자를 저장하는 타입이에요.
  • date는 이름만 봐도 알 수 있죠? 날짜 타입이에요. 여기서 재미있는 점은 타입 이름도 date인데 컬럼 이름도 date라는 거예요. 편할 수도, 헷갈릴 수도 있는 선택이에요 — 여러분의 몫이죠!

PostgreSQL은 표준 SQL 타입인 int, smallint, real, double precision, char(N), varchar(N), date, time, timestamp, interval을 비롯해, 그 밖의 다양한 범용 타입과 풍부한 기하(geometric) 타입을 지원해요. 게다가 사용자가 직접 임의의 데이터 타입을 정의할 수도 있어요. 그래서 타입 이름은 (SQL 표준에서 특별한 경우를 요구하는 상황이 아니라면) 문법상의 키워드가 아니에요.

두 번째 테이블 만들기

두 번째 예제는 도시와 그 지리적 위치를 저장할 거예요.

CREATE TABLE cities (
    name            varchar(80),
    location        point
);

여기서 point 타입은 PostgreSQL에만 존재하는 전용 데이터 타입의 예시예요. 좌표 쌍을 담는 타입이죠.

테이블을 더 이상 안 쓸 때는

테이블이 더 이상 필요 없거나, 아예 다시 만들고 싶다면 다음 명령으로 테이블을 삭제할 수 있어요.

DROP TABLE tablename;

DROP TABLE은 테이블 자체(구조와 데이터 모두)를 통째로 지워버리니, 실행하기 전에 한 번 더 생각해 보는 게 좋아요.

더 알아보기 (Learn more)