새 테이블 만들기
새 테이블 만들기 (Creating a New Table)
이제 드디어 우리가 사용할 **테이블(table)**을 만들어 볼 거예요. 테이블을 만들려면 테이블 이름, 그리고 각 컬럼(column)의 이름과 타입(type)을 지정해 주면 돼요. 처음 만드는 테이블은 날씨 정보를 담는 weather 테이블이에요.
첫 번째 테이블 만들기
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)
- 2.2. 핵심 개념 (Concepts) — 테이블·행·열 개념
- 2.4. 테이블에 행 채우기 (Populating a Table With Rows) — 만든 테이블에 데이터 넣기
- CREATE TABLE (SQL 명령) — 공식 명령 레퍼런스
- 데이터 타입 (Chapter 8) — PostgreSQL의 다양한 타입