본문 바로가기
DataBase/PostgreSQL

[psql] 터미널로 PostgreSQL 사용하기

by 예스p 2023. 7. 10.

psql

PostgreSQL을 GUI 도움 없이도 사용할 수 있게 해주는 psql의 사용법을 알아본다


 

psql이란?

  • PostgreSQL에 대한 터미널 기반 프론트 앤드
    * 프론트 앤드 : 사용자가 직접 상호작용한다는 의미
  • PostgreSQL 데이터베이스에 연결하여 대화식으로 쿼리를 입력하여 보낸 후, 쿼리 결과를 확인해 볼 수 있다
  • 스크립트를 작성하고 다양한 작업을 자동화할 수 있도록 많은 메타 명령어(meta-commands)와 shell-like 기능을 제공

 

psql 접속하기

  • 접속방법
    - 터미널을 연 후 아래의 명령을 실행한다
       psql -U 유저명 -d db명 -h 호스트주소 -p 포트
  • 옵션조건
    - 슈퍼유저(postgres)로 접속하는경우 -d는 생략 가능하다 (h,p도 생략)
      >> 슈퍼유저로 접속하면 프롬프트는 슈퍼유저명=# 으로 뜸
          cf. 이외의 경우는 db명=> 로 뜸
    - 로컬에서 실행하는 경우 -h는 생략 가능하다
    - 기본포트번호 5432를 사용하는경우 -p는 생략 가능하다
  • 쿼리바로실행
    - '-c' 옵션을 사용하면 접속과 동시에 쿼리를 실행할 수 있다
# 명령예시
rh@rh_pc:~$ psql -d postgres -h localhost -p 5432 -U postgres
psql (버전표기)
Type "help" for help.

postgres=#

#쿼리 바로 실행하기 (docker 외부에서 터미널 및 psql실행 및 쿼리 전달)
docker exec -i $name psql -p $port -U postgres -c \
    "CREATE USER $user WITH PASSWORD '$pwd';"

 

 

 

메타 명령어 입력

  • 메타명령어란?
    - SQL이 아니라 psql 콘솔 자체에서 사용되는 명령어
    - 데이터베이스 작업 및 콘솔 환경을 다양하게 제어할 수 있다
    - 백슬래시로 시작한다
  • 다양한 메타명령어
옵션 설명
\q  \quit. psql 프로그램을 종료한다.
\! 명령어  psql에서 일반 셸 명령어를 실행할 때 사용한다
\l  \list. 현재 서버의 db목록 나열
\du  현재 서버의 유저목록 나열
\c db명  \connect. 해당 db에 연결. [유저명]을 덧붙여 다른 유저로 접속할 수 있다
\dt  현재 db의 테이블 목록 표시
\d 테이블명  해당 테이블의 구조와 속성 표시
\df  현재 db의 함수 목록 표시
\password  현재유저의 암호변경. [유저명]을 덧붙여 다른 유저를 지정할 수 있다
\timing  SQL문을 실행되는데 걸리는 시간을 표시
\set  환경변수들의 값 출력
\pset  쿼리결과 테이블의 출력에 영향을 미치는 변수 출력
\di  인덱스 목록 조회

 

 

SQL문 입력

  • psql의 프롬프트에 SQL 명령을 입력하여 사용할 수 있다.
  • 문법
    - 엔터로 줄바꿈을 할 수 있으며 세미콜론(;)에 도달하면 입력라인이 서버로 전송된다
    - 설정에 따라 예약어를 대문자로 입력해야할 수 있다
  • 유용한 SQL문
    - 관련 포스팅 : 320번 포스팅
psql (12.7)
Type "help" for help.

mydatabase=# CREATE TABLE tablename (
mydatabase(#     column1 integer,
mydatabase(#     column2 text
mydatabase(# );
CREATE TABLE

mydatabase=# INSERT INTO tablename (column1, column2) VALUES
mydatabase-# (1, 'Value1'),
mydatabase-# (2, 'Value2'),
mydatabase-# (3, 'Value3');
INSERT 0 3

mydatabase=# SELECT column1, column2
mydatabase-# FROM tablename
mydatabase-# WHERE column1 > 1;
 column1 | column2
----------+---------
        2 | Value2
        3 | Value3
(2 rows)

 

 

 

 

 

 

 

 

 

댓글