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)

'DataBase > PostgreSQL' 카테고리의 다른 글
| [환경설정] 시간대(time zone) 설정 관련 (0) | 2023.09.11 |
|---|---|
| [Docker] DB서버 및 DB 구축, GUI 연결 (0) | 2023.07.17 |
| [객체] 시퀀스 (0) | 2023.05.24 |
| [함수] 시간연산관련, 시리즈 생성 (0) | 2023.05.02 |
| [함수] 타입변환 관련 (0) | 2023.05.02 |
댓글