대부분의 문법은 SQL 표준을 따르고 있다.
(CentOS에서 plus 부분을 enable하고 업데이트 하면 8.1.9 버전이 깔리게 되는데 이를 기준으로 한다.)
간단히 DB에 접속하는 방법만 나열하겠다.
> su postgres
# psql 접속할 database명
1. 테이블 생성
create table 테이블명 (field 설명);
ex> create table mytest (idnum serial primary key, name varchar(20) not null, test bigint default 0);
data type에 대한 문서는 이곳을 참고
2. 테이블 삭제
drop table 테이블명;
ex> drop table mytest;
3. 테이블 수정
alter table 테이블명 여러가지 조건
ex> alter table mytest rename name to nickname;
mytest 테이블의 name 필드명을 nickname으로 바꾼다.
테이블 수정에 대한 문서는 이곳을 참고
4. 게시물 등록, 삭제, 수정
이 부분에 대한 문서는 이곳을 참고
5. 인덱스 관련
인덱스 생성 : create index 인덱스명 on 테이블명(인덱스를 걸고 싶은 필드명);
ex> create index name_idx on mytest(name);
인덱스 삭제 : drop index 인덱스명;
ex> drop index name_idx;
인덱스에 대한 문서는 이곳을 참고
6. JOIN 관련
JOIN에 대한 문서는 이곳을 참고
7. 기타 PostgreSQL 명령어
콘솔에서의 명령어는 \?로 볼 수 있다.
대체적으로 많이 사용하게 되는 명령어는 다음과 같다.
\d - 현재 접속한 database의 모든 테이블과 sequence를 보여준다.
\d 테이블명 - 지정한 테이블의 속성과 이에 속한 index를 보여준다.
\di - 현재 접속한 database의 모든 index를 보여준다.
\di 인덱스명 - 지정한 인덱스의 속성을 보여준다.
\i 파일명 - 지정한 파일로부터 SQL 명령을 읽어 이를 수행한다.
\q - 콘솔을 종료한다.
sql과 함께 사용하는 명령어는 다음과 같다.
explain SQL문 - 지정한 SQL을 수행하면서 이 수행 과정을 보여준다.
explain analyze SQL문 - 지정한 SQL을 수행하면서 이 수행 과정을 보여주고 소요 시간을 보여준다.
콘솔에서 transaction을 사용할 수 있다.
먼저 transaction을 수행하려면 SQL의 표준과 같은 명령어를 입력한다.
# begin;
이 명령어를 입력하면 BEGIN이라는 응답이 표시된다. 이때부터 실행하는 모든 쿼리들은 원치 않으면 이 쿼리들이 실행되기 이전으로 되돌릴 수 있다.
transaction을 끝내려면 다음과 같은 명령어를 입력한다.
# commit;
또는
# rollback;
commit은 transaction이 실행되고 난 이후의 쿼리를 모두 DB에 적용시킨다는 의미이다.
rollbank은 transaction이 실행되고 난 이후의 쿼리를 모두 취소 한다는 의미이다.
단, 여기에서 rollback을 한다고 하더라도 sequence(간단하게 serial로 생성된 필드의 자동으로 입력되기 위한 값을 가지고 있는 테이블)의 값은 증가한 상태로 복원되지 않는다.
명령어는 아니지만 콘솔을 사용하면서 알아두면 편리한 것들.
- 각종 명령어를 입력하고 tab을 누르면 다음에 어떤 것이 오는 것을 선택할지 리스트로 보여준다(리눅스의 그것과 같음).
- 위로 키를 누르면 이전 명령어를 하나씩 보여준다(리눅스의 그것과 같음).
- page up, down, home, end 키 역시 리눅스와 같은 역할을 한다.