PostgreSQL | スキーマ | スキーマの作成(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=#
orange ロールを所有者として 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 コマンドを使用して新しいスキーマを作成する方法について説明した。