어제 오늘 내일

[postgres/SQL] database 생성, 수정, 삭제, 조회하기 본문

IT/postgres

[postgres/SQL] database 생성, 수정, 삭제, 조회하기

hi.anna 2022. 2. 28. 10:05

 

 

postgres에서 테이블을 생성하기 위해서는

그전에 database를 생성해야 합니다.

 

 

1. database 생성하기

create database my_db;

my_db 라는 데이터베이스를 생성하였습니다.

 

 

2. database 확인하기

select datname from pg_database;

등록된 모든 database의 이름을 조회합니다.

 

 

3. database 이름 변경하기

ALTER DATABASE my_db
RENAME TO new_my_db;

my_db 라는 database를 new_my_db 라는 이름으로 변경하였습니다.

 

 

 

4. database 삭제하기

drop database my_db;

my_db 데이터베이스를 삭제하였습니다.

 

 

  my_db 데이터베이스가 없을 경우  

ERROR: 오류: "my_db" 데이터베이스 없음
SQL state: 3D000

my_db 데이터베이스가 없을 경우,

위와 같이 에러가 발생합니다.

 

 

  if exists 구문 추가  

drop database if exists my_db;

에러를 방지하기 위해서 다음과 같이 'if exists' 구문을 추가해 줄 수 있습니다.

 

 

  my_db 데이터베이스가 없을 경우 - if exists 구문을 추가한 경우  

 

알림: "my_db" 데이터베이스 없음, 건너 뜀
DROP DATABASE

Query returned successfully in 45 msec

if exists 구문을 추가하여 database를 삭제한 경우,

my_db 데이터베이스가 없더라도

'알림' 메세지만 남기고,

쿼리는 에러를 발생시키지 않고 정상 종료됩니다.

 

 

5. database 수정/삭제 시 주의할 점

database를 수정하거나 삭제할 때,

해당 database를 사용하고 있는 활성 사용자가 있는 경우,

database를 수정/삭제할 수 없습니다. 

따라서, 이 작업을 수행하기 전에 활성 사용자를 체크하고,

활성 연결을 종료한 해 주어야 합니다.

 

  활성 연결 확인하기  

SELECT *
FROM pg_stat_activity
WHERE datname = 'my_db';

pg_stat_activity 테이블을 조회하여

my_db 데이터베이스에 활성 연결된 사용자의 pid를 조회할 수 있습니다.

 

 

  활성연결 종료하기  

SELECT
    pg_terminate_backend (pid)
FROM
    pg_stat_activity
WHERE
    datname = 'my_db';

pg_terminate_backend(pid) 함수를 이용하여

my_db 데이터 베이스에 활성 연결되어 있는 pid를 종료합니다.

pg_terminate_backend(pid)의 파라미터로

앞에서 조회한 pid를 넘겨줍니다.

 


 

postgres의 database를 생성, 수정, 삭제, 확인하는 SQL을 알아보았습니다.

 

 

 

 

반응형

'IT > postgres' 카테고리의 다른 글

[postgres] postgres 서버 버전 확인 하는 2가지 방법  (0) 2022.02.28
Comments