PostgreSQL ALTER テーブル: 列の追加、列/テーブルの名前変更の例

ALTER TABLE コマンドは、テーブルの構造を変更するために使用されます。 PostgreSQL テーブル。テーブルの列やテーブル名を変更するコマンドです。

構文

の構文は次のとおりです。 PostgreSQL ALTER TABLE コマンド:

ALTER TABLE table-name action;

table-name パラメータは、変更する必要があるテーブルの名前です。

action パラメーターは、列の名前の変更、列のデータ型の変更など、実行する必要があるアクションです。

詳細説明

ALTER TABLE コマンドは、既存のテーブルの定義を変更します。次のサブフォームを使用します。

  • 列の追加: これは、テーブルに新しい列を追加するための CREATE TABLE コマンドと同様の構文を使用します。
  • ドロップ カラム: テーブル列を削除します。 列に課せられた制約とインデックスも削除されます。
  • デフォルトの設定/削除: 列のデフォルト値を削除するために使用します。 ただし、変更は次回以降にのみ適用されます。 INSERT ステートメント.
  • NOT NULL のセット/ドロップ: 列で NULL を許可するかどうかを変更します。
  • 統計を設定: ANALYZE 操作の各列の統計収集ターゲットを設定します。
  • ストレージの設定: 列の保存モードを設定します。 これにより、列がインラインか補足テーブルのどちらに保持されるかが決まります。
  • OIDなしでセット: テーブルの古い列を削除するために使用します。
  • RENAME: テーブル名またはカラム名を変更します。
  • テーブル制約の追加: テーブルに新しい制約を追加するために使用します。 と同じ構文を使用します。 テーブルを作成
  • ドロップコンストレイント: テーブル制約を削除するために使用します。
  • OWNER: テーブル、シーケンス、インデックス、またはビューの所有者を特定のユーザーに変更します。
  • CLUSTER: 将来のクラスター操作を実行するために使用するテーブルをマークします。

列の変更

列はさまざまな方法で変更できます。 このような変更は、ALTER TABLE コマンドを使用して行うことができます。 これらについて説明しましょう。

新しい列の追加

新しい列を追加するには PostgreSQL テーブルの場合、ALTER TABLE コマンドは次の構文で使用されます。

ALTER TABLE table-name
  ADD new-column-name column-definition;

table-name は、変更するテーブルの名前です。

new-column-name は、追加する新しい列の名前です。

列定義は データ・タイプ 新しいコラムの。

以下に示す書籍テーブルを参照してください。

新しい列を追加する PostgreSQL

テーブルには id と name の 2 つの列があります。テーブルに新しい列を追加し、author という名前を付ける必要があります。次のコマンドを実行します。

ALTER TABLE Book
  ADD author VARCHAR(50);

上記のコマンドを実行すると、Book テーブルは次のようになります。

新しい列を追加する PostgreSQL

新しい列が正常に追加されました。

テーブルの列の名前を変更する

ALTER TABLE コマンドを使用して列の名前を変更できます。この場合、コマンドは次の構文で使用されます。

ALTER TABLE table-name
  RENAME COLUMN old-name TO new-name;

table-name は、列の名前を変更するテーブルの名前です。

old-name は、列の古い/現在の名前です。

new-name は列の新しい名前です。 以下に示す表 Book について考えてみましょう。

本:

でのテーブル列の名前変更 PostgreSQL

book_author には列の作成者の名前が必要です。 コマンドは次のとおりです。

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

コマンドを実行すると、テーブルの構造を表示できます。

でのテーブル列の名前変更 PostgreSQL

カラム名は正常に変更されました。

列のデフォルト値の設定

列にデフォルト値を設定すると、INSERT 操作中にその列の値を指定しない場合でもデフォルト値が使用されるようになります。この場合、次の構文で ALTER TABLE コマンドを使用できます。

ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];

table-name は、列を変更するテーブルの名前です。

列名は、デフォルト値が設定される名前です。

値は列のデフォルト値です。

以下の Book テーブルを考えてみましょう。

列のデフォルト値の設定

book_author 列のデフォルト値を設定する必要があります。次のコマンドを実行します。

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';		

次に、テーブルに行を挿入しましょう。

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners');

id と name の XNUMX つの列のみに値を挿入したことに注意してください。 ただし、book_author 列にはデフォルト値が使用されています。

列のデフォルト値の設定

チェック制約の追加

チェック制約は、テーブルに挿入されるレコードを検証するのに役立ちます。 これを行うには、ALTER TABLE コマンドと ADD CHECK ステートメントを組み合わせます。 構文:

ALTER TABLE table-name ADD CHECK expression;

table-name は、変更するテーブルの名前です。

式は、テーブルの列に課される制約です。

Book テーブルの book_author 列を変更して、値 Nicholas と Samuel のみを受け入れるようにしましょう。

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));

ここで、Nicholas または Samuel 以外の値を Book テーブルの book_author 列に挿入してみます。

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

このステートメントは次のエラーを返します。

チェック制約の追加

チェック制約に違反したため、挿入操作は失敗しました。

テーブルの名前を変更する

テーブルの名前を変更するための ALTER TABLE コマンドの構文は次のとおりです。

ALTER TABLE table-name
  RENAME TO new-table-name;

table-name はテーブルの現在の名前です。

new-table-name は、テーブルに割り当てられる新しい名前です。

たとえば、Book テーブルの名前を Books に変更してみましょう。

ALTER TABLE Book
  RENAME TO Books;

pgAdminの使用

ここで、pgAdmin を使用してこれらのアクションをどのように実行できるかを見てみましょう。

新しい列の追加

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

pgAdmin を使用して新しい列を追加する

ステップ3) クエリ エディターにクエリを入力します。

ALTER TABLE Book
  ADD author VARCHAR(50);

ステップ4) 「実行」ボタンをクリックします。

pgAdmin を使用して新しい列を追加する

ステップ5) 列が追加されたかどうかを確認するには、次の手順を実行します。

  1. 左側のナビゲーションから「データベース」をクリックします。
  2. デモを展開します。
  3. スキーマを展開します。
  4. 「パブリック」を展開します。
  5. 「テーブル」を展開します。
  6. 本を展開します。
  7. 列を展開します。

pgAdmin を使用して新しい列を追加する

以下に示すように、列が追加されているはずです。

pgAdmin を使用して新しい列を追加する

テーブルの列の名前を変更する

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

pgAdmin を使用したテーブル列の名前変更

ステップ3) クエリ エディターにクエリを入力します。

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

ステップ4) 「実行」ボタンをクリックします。

pgAdmin を使用したテーブル列の名前変更

ステップ5) 変更が成功したかどうかを確認するには、次の手順を実行します。

  1. 左側のナビゲーションから「データベース」をクリックします。
  2. デモを展開します。
  3. スキーマを展開します。
  4. 「パブリック」を展開します。
  5. 「テーブル」を展開します。
  6. 本を展開します。
  7. 列を展開します。

pgAdmin を使用したテーブル列の名前変更

列は次のようになります。

pgAdmin を使用したテーブル列の名前変更

列は正常に変更されました。

列のデフォルト値の設定

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

列のデフォルト値の設定

ステップ3) クエリ エディターにクエリを入力します。

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';		

ステップ4) 「実行」ボタンをクリックします。

列のデフォルト値の設定

ステップ5) テストするには、クエリ エディターで次のコマンドを実行します。

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners')

ステップ6) これで、テーブルにクエリを実行して、デフォルト値が book_author 列に挿入されたかどうかを確認できます。

列のデフォルト値の設定

チェック制約の追加

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

pgAdminを使用したチェック制約の追加

ステップ3) クエリ エディターにクエリを入力します。

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))

ステップ4) 「実行」ボタンをクリックします。

pgAdminを使用したチェック制約の追加

ステップ5) これをテストするには、次の手順を実行します。

  1. クエリ エディターに次のクエリを入力します。
    INSERT INTO Book
    VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
    
  2. 「実行」ボタンをクリックします。

    pgAdminを使用したチェック制約の追加

    次のような結果が返されます。

pgAdminを使用したチェック制約の追加

テーブルの名前を変更する

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

pgAdmin を使用したテーブル名の変更

ステップ3) クエリ エディターにクエリを入力します。

ALTER TABLE Book
  RENAME TO Books;

ステップ4) 「実行」ボタンをクリックします。

pgAdmin を使用したテーブル名の変更

ステップ5) テーブルの名前が変更されたかどうかを確認するには、次の手順を実行します。

  1. 左側のナビゲーションから「データベース」をクリックします。
  2. デモを展開します。
  3. スキーマを展開します。
  4. 「パブリック」を展開します。
  5. 「テーブル」を展開します。

pgAdmin を使用したテーブル名の変更

テーブルの名前が正常に変更されました。

製品概要

  • ALTER TABLE ステートメントは、テーブルの構造を変更するために使用されます。
  • ALTER TABLE コマンドは、実行する必要があるタスクに応じてさまざまな形式を取ります。
  • 構造はテーブルの列またはテーブル自体にすることができます。
  • このステートメントを使用してテーブルの名前を変更できます。
  • ALTER TABLE コマンドを使用して、列のデフォルト値を設定できます。
  • このステートメントを使用して、テーブルの列に入力された値を検証できます。

このチュートリアルで使用するデータベースをダウンロードする