인성장

[PostgreSQL] 스키마 관리 (생성, 삭제 등) 본문

카테고리 없음

[PostgreSQL] 스키마 관리 (생성, 삭제 등)

인성장 2024. 1. 3. 12:02
스키마 관리

 

PostgreSQL의 Schema 개념은 Oracle의 Schema 개념과 조금 다릅니다. Oracle의 Schema는 오브젝트를 가진 User를 의미하는 반면, PostgreSQL에서는 Table의 집합을 Schema라고 표현하며 이 Schema는 하나의 Database를 논리적으로 나누는 개념이라 볼 수 있습니다. 여러 User가 하나의 Schema 안에 Table을 생성할 수 있다는 의미인 것입니다.

 

스키마 생성

CREATE SCHEMA [IF NOT EXISTS] [schema_name] AUTHORIZATION [user_name];

CREATE SCHEMA testsch AUTHORIZATION postgres;

 

 

스키마 이름 수정

ALTER SCHEMA [schema_oldname] RENAME TO [schema_newname];

ALTER SCHEMA testsch RENAME TO newsch;

 

 

스키마 소유자 변경

ALTER SCHEMA [schema_name] OWNER TO [username];

ALTER SCHEMA newsch OWNER TO newowner;

 

 

스키마 조회 순서 확인

SHOW SEARCH_PATH;

 

 

SEARCH_PATH 일시적용

SET SEARCH_PATH TO Schema1, Schema2, ...;

SET SEARCH_PATH TO bbb, aaa;

 

 

SEARCH_PATH 영구적용

ALTER ROLE [username] SET SEARCH_PATH = Schema1, Schema2, ...;

ALTER ROLE postgres SET SEARCH_PATH = aaa, bbb;

 

 

SEARCH_PATH 초기화

ALTER ROLE [username] RESET SEARCH_PATH;

ALTER ROLE postgres RESET SEARCH_PATH;

 

 

스키마 삭제 방법

DROP SCHEMA [schema_name] [CASCADE | RESTRICT];

DROP SCHEMA aaa CASCADE;

* 기본값은 RESTRICT, CASCADE 옵션을 지정하면 Schema 하위에 연결 된 객체를 모두 강제 삭제하므로 사용에 주의