새 테이블은 다음과 같이 테이블의 이름과 그 테이블을 구성하는 각 칼럼과 그 칼럼의 자료형을 지정해서 만듭니다:
CREATE TABLE weather ( city varchar(80), temp_lo int, -- low temperature temp_hi int, -- high temperature prcp real, -- precipitation date date );
psql
안에서는 하나의 SQL 명령이
여러 줄로 나뉘어져 있어도 되고, 한 줄로 모두 표현
되어도 상관 없습니다. 하지만, 하나의 명령은 반드시
세미콜론(;)으로 끝나야합니다.
SQL 문장을 작성할 때 공백문자(스페이스, 탭, 줄바꿈문자)들은
자유롭게 사용할 수 있습니다. 즉, 굳이 꼭 위와 같이 그대로
입력하지 않아도 됩니다. 한 줄로 길게 늘여 써도 상관
없습니다. 단지 주의할 것은 “--
”
문자는 주석을 표현하는 것인데, 이것이 있으면, 그 다음부터
줄 끝까지 무시됩니다. SQL 문법에서는 예약어(keyword, 명령이름,
구문 중간 중간에 나오는 on, default, not null 같은 것들)와
식별자(identifier, 테이블 이름, 칼럼 이름 같은 것들)의
대소문자를 구별하지 않습니다. 단지, 식별자가 큰따옴표(")로
둘러 쌓여지면, 그 식별자는 입력한 그대로의 대소문자를 유지합니다.
varchar(80)
이것은 최대길이가 80글자인
(주, byte가 아니라, '글자'입니다) 문자열을 저장할 수 있음을
나타내고, int
이것은 일반적인 정수형 숫자,
real
이것은 소수점을 사용하는 숫자, date
이것은 말 그대로 날짜형을 나타냅니다. (윗 명령에서
처럼 칼럼 이름 date
가 자료형
이름date
와 같을 수도 있습니다. 이런
방식이 편하기도 하겠지만, 헷갈리기도 할 것입니다. 선택은
테이블 만드는 사람의 몫입니다.)
PostgreSQL에서는
표준 SQL 자료형인 int
,
smallint
, real
, double
precision
, char(
,
N
)varchar(
, N
)date
,
time
, timestamp
,
interval
형을 사용할 수 있으며,
또한 일반적인 기타 자료형들과 지리 정보를 담기 위해서
사용되는 다양한 자료형을 사용할 수 있습니다.
또한 PostgreSQL에서는
사용자 정의 자료형을 만들 수 있습니다. 따라서 표준 SQL과의
호환성을 유지하기 위해서 특별히 문법적으로 예약어 기능을
해야하는 것들을 제외한 자료형 이름은 문법적인 예약어가
아닙니다. (주, 그래서, create table weather (...., data data);
같은 구문이 가능합니다)
다음 예제는 도시 이름과, 그 도시의 위치를 나타내는 지리정보를 담기위한 테이블을 만드는 것입니다:
CREATE TABLE cities ( name varchar(80), location point );
point
자료형은 PostgreSQL
고유 자료형입니다. (주, PostgreSQL 프로젝트의 시작이
테이블 상속과 지리정보를 담기 위한 것이였거든요)
끝으로, 더 이상 사용하지 않는 테이블을 삭제하거나, 똑 같은 이름의 테이블을 다른 구조로 다시 만들려면, 다음과 같은 명령을 사용합니다:
DROP TABLE 테이블이름
;