PostgreSQL | 스키마(Schema) | 스키마 생성(CREATE SCHEMA)
CREATE SCHEMA 명령을 사용하여 PostgreSQL로 스키마를 새로 만드는 방법을 설명한다.
새로운 스키마 생성
스키마를 만들려면 CREATE SCHEMA 명령을 사용한다. 형식은 다음과 같다.
CREATE SCHEMA schema_name
스키마 이름(schema_name)를 지정하여 현재 연결된 데이터베이스에 새 스키마를 만든다. 스키마 이름은 임의의 이름을 지정할 수 있지만, pg_
로 시작하는 이름은 특별한 의미를 가지므로 사용할 수 없다.
스키마를 생성하려면 명령을 실행하는 역할이 수퍼 유저이거나 스키마를 만들 데이터베이스에서 CREATE 권한을 가지고 있어야한다.
–
그러면 실제로 해보도록 하자. 스키마를 생성할 데이터베이스에 연결한다. 이번에는 devkuma 데이터베이스에 스키마를 만든다.
postgres=# \c devkuma
접속정보: 데이터베이스="devkuma", 사용자="postgres".
devkuma=#
devkuma 데이터베이스에 현재 생성된 스키마를 확인하기 위해 psql 메타 명령 \dn
명령을 실행한다.
devkuma=# \dn
스키마(schema) 목록
이름 | 소유주
--------+----------
public | postgres
(1개 행)
devkuma=#
기본적으로 생성되는 public 스키마가 생성되어있는 것을 확인할 수 있다.
그러면 새로운 스키마를 만든다. 다음과 같이 실행한다.
devkuma=# create schema myschema;
CREATE SCHEMA
devkuma=#
새로운 스키마가 작성되었다. 확인을 위해 다시 \dn
명령을 실행한다.
devkuma=# \dn
스키마(schema) 목록
이름 | 소유주
----------+----------
myschema | postgres
public | postgres
(2개 행)
devkuma=#
myschema 스키마가 생성되어있는 것을 확인할 수 있다.
생성할 스키마의 소유자 지정
스키마를 작성한 경우 작성된 스키마의 소유자는 스키마를 만든 역할되지만 소유자로 다른 역할을 지정하여 스키마를 만들 수 있다. 형식은 다음과 같다.
CREATE SCHEMA schema_name AUTHORIZATION role_specification
스키마 이름 (schema_name)과 스키마의 소유자(role_specification)를 지정해 새로운 스키마를 만든다. 이 형식으로 스키마를 만들려면 명령을 수행하는 역할이 소유하는 롤의 직접 또는 간접적인 구성원이거나 수퍼 유저이여야 한다.
그러면 실제로 해보록 하자. 스키마를 만들 데이터베이스에 연결한 후 다음과 같이 실행한다.
devkuma=# create schema orange_schema authorization orange;
CREATE SCHEMA
devkuma=#
moorangemo 역할을 소유자로 orange_schema 스키마를 작성하였다. 확인을 위해 \dn 명령을 실행한다.
devkuma=# \dn
스키마(schema) 목록
이름 | 소유주
---------------+----------
myschema | postgres
orange_schema | orange
public | postgres
(3개 행)
devkuma=#
이미 생성된 스키마 이외에 orange 역할이 소유자인 orange_schema가 새로 생성되어 있는 것을 확인할 수 있다.
새로운 스키마를 생성할때 스키마에 테이블과 같은 개체를 생성하기
새로운 스키마를 만들 때, 스키마에 테이블이나 인덱스와 같은 개체를 동시에 만들 수 있다. 형식은 다음과 같다.
CREATE SCHEMA schema_name
[ AUTHORIZATION role_specification ]
schema_element [ ... ]
schema_element에 동시에 작성하는 SQL 명령을 작성한다. 작성할 수 있는 명령은 CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER, GRANT 중 하나이다. 여러 명령을 하는 경우에는 SQL 명령의 마지막에 세미콜론 (;)을 하지 말아야 한다.
그러면 실제로 해보록 하자. 스키마를 생성할 때 데이터베이스에 연결한 후 다음과 같이 실행한다.
devkuma=# create schema testschema create table testtbl (id integer);
CREATE SCHEMA
devkuma=#
testschema 스키마를 생성하고 생성된 스키마에 testtbl 테이블을 만들었다. 확인을 위해 \dt
명령을 실행한다.
devkuma=# \dt testschema.*
릴레이션(relation) 목록
스키마 | 이름 | 종류 | 소유주
------------+---------+--------+----------
testschema | testtbl | 테이블 | postgres
(1개 행)
devkuma=#
만든 testschema에 testtbl 테이블이 생성되어 있는 것을 확인할 수 있다.
–
여기까지 CREATE SCHEMA 명령을 사용하여 새 스키마를 만드는 방법에 대해 알아보았다.