PostgreSQL は、最も人気のあるオブジェクト リレーショナル データベース システムの 1 つです。複雑なデータ ワークロードを処理するための追加機能を使用して SQL 言語を拡張する、無料のオープン ソース ソフトウェアです。信頼性が高く安全な、さまざまなデータタイプを処理できます。 PostgreSQL の機能の詳細をご覧ください。
このガイドでは、PostgreSQL でスキーマにテーブルを作成する方法について詳しく学びます。
PostgreSQL のスキーマ
PostgreSQL データベースには、1 つ以上の名前付きスキーマが含まれている場合があり、各スキーマにはテーブルが含まれています。
複数のスキーマ間で競合することなく、同じオブジェクト名を割り当てることができます。たとえば、次のスキーマ/テーブル ツリーは有効です。
- schema_a
- 表1
- テーブル_2
- schema_b
- 表1
- テーブル_2
スキーマは、オペレーティング システム レベルのディレクトリのようなものと考えることができます。違いは、ネストされたスキーマが存在できないことです。スキーマの詳細については、こちらをご覧ください PostgreSQL のドキュメント .
スキーマを実装する理由は複数考えられます。
- 互いに競合することなく同じデータベースを使用する複数のユーザー。
- 論理グループへのデータベースの編成と管理の改善。
- サードパーティ アプリは、既存のスキーマや他のオブジェクトと衝突することなく、独自のスキーマを作成できます。
PostgreSQL のテーブル
リレーショナル データベースは、複数の関連するテーブルで構成され、それぞれが行と列で構成されます。 PostgreSQL には、さまざまなシステム情報を含むいくつかの組み込みテーブルが付属しています。ただし、ユーザー定義のデータベースとスキーマの下に新しいテーブルを作成することもできます。
前提条件:
このガイドで説明されている手順を実行するには、次のコンポーネントが必要です。
- 適切に構成された Linux システム。詳しくはこちら VirtualBoxにUbuntuをインストールする .
- PostgreSQL の適切なインストール。チェックアウト Ubuntu に PostgreSQL をインストールする .
- へのアクセス PostgreSQL ユーザー と USAGEパーミッション データベースに。
このガイドでは、 ポストグル PostgreSQL ですべてのアクションを実行します。
スキーマでのテーブルの作成
デモ データベースの作成
前述のように、スキーマはデータベースの下に存在します。デモンストレーションの目的で、ダミー データベースを作成し、既存のデータベースの中断を回避します。
次のように PostgreSQL シェルにアクセスします。 ポストグル :
$ sudo -i -u postgres psql
新しいデータベースを作成する デモデータベース:
$ CREATE DATABASE demo_db;
データベースが正常に作成されたかどうかを確認します。
$ \l
最後に、新しく作成したデータベースに接続します。
$ \connect demo_db;
公開スキーマ
PostgreSQL の新しいデータベースには、デフォルトのスキーマが付属しています – 公衆 .スキーマ名を指定せずにオブジェクトを作成しようとすると、デフォルトでパブリック スキーマが選択されます。
次のコマンドは、PostgreSQL データベースで使用可能なすべてのスキーマを出力します。
$ \dn
または、次の SQL クエリを使用することもできます。
$ SELECT * FROM pg_catalog.pg_namespace;
新しいスキーマの作成
特定のデータベースの下に新しいスキーマを作成するためのコマンド構造は次のとおりです。
$ CREATE SCHEMA <スキーマ名>;ルールに従って、新しいスキーマ demo_schema を作成しましょう。
$ CREATE SCHEMA demo_schema;
検証のためにスキーマ リストを確認します。
$ \dn
スキーマでのテーブルの作成
ターゲット スキーマが作成されたので、テーブルを設定できます。
テーブルを作成するための構文は次のとおりです。
CREATE TABLE <スキーマ>.<テーブル名> (...
)
ここ:
- スキーマ : このフィールドは、テーブルが作成されるスキーマの名前を指定します。値が指定されていない場合、テーブルは 公衆 スキーマ。
デモ用に、簡単なテーブルを作成します。
CREATE TABLE demo_schema.demo_table (名前CHAR(64)、
ID INT NOT NULL
);
ここ:
- フィールド 名前 64 文字の文字列を格納するように指定されています。
- フィールド ID 整数値が含まれます。用語 ' ヌルではない 」は、 ID 空または null にすることはできません。
次のクエリを使用して、テーブルの存在を確認できます。
$ SELECT * FROM demo_schema.demo_table;
テーブルへのデータの挿入
テーブルを配置したら、いくつかの値を挿入できます。
INSERT INTO demo_schema.demo_table (名前、ID)値
('PQR', 45),
('IJK', 99)
;
テーブルの内容を確認します。
$ SELECT * FROM demo_schema.demo_table;
スキーマ管理
スキーマの権限
スキーマ権限の助けを借りて、特定のスキーマに対してどのロールがどのアクションを実行できるかを管理できます。可能なすべての特権のうち、スキーマのみがサポートします 作成と使用。
特定のロールのスキーマ権限を更新するためのコマンド構造は次のとおりです。
$ GRANT
特定のロールのスキーマ権限を取り消すためのコマンド構造は次のとおりです。
$ REVOKE次のコマンドを使用して変更を確認します。
$ \dn+
スキーマ プロパティの変更
の助けを借りて スキーマの変更 ステートメントに従って、スキーマのさまざまなプロパティを変更できます。例: 所有権、スキーマ名など。
スキーマ名を変更するには、次のクエリを使用します。
$ ALTER SCHEMA
スキーマの所有権を変更するには、次のクエリを使用します。
$ ALTER SCHEMA
所有権を変更するには、現在のユーザーが 作成 スキーマへのアクセス許可。
スキーマの削除
スキーマが不要になった場合は、 落とす クエリ:
$ DROP SCHEMA
スキーマにオブジェクトが含まれている場合は、 カスケード 修飾子:
$ DROP SCHEMA
テーブル管理
テーブルの権限
スキーマと同様に、各テーブルにもパーミッション管理が付属しており、ロールがテーブルで実行できるアクションを定義します。
テーブルの権限を確認するには、psql で次のコマンドを使用します。
$ \dp <テーブル名>
テーブル プロパティの変更
の助けを借りて 他の机 ステートメントを使用すると、既存のテーブルのさまざまな側面を変更できます。
たとえば、列を削除する場合、クエリは次のようになります。
$ ALTER TABLE <テーブル名> DROP COLUMN <列>;
新しい列を追加するには、次のクエリを使用できます。
$ ALTER TABLE