PostgreSQL テーブルの変更:列の追加と名前変更
⚡ スマートサマリー
PostgreSQL ALTER TABLE を使用すると、既存のテーブルの構造を変更でき、オブジェクトを再作成することなく、列の追加や削除、列またはテーブル全体の名前変更、デフォルト値の設定、チェック制約の適用などを行うことができます。

ALTER TABLE とは何ですか PostgreSQL?
その 他の机 コマンドは、 PostgreSQL テーブル。これは、削除せずにテーブルの列またはテーブル自体の名前を変更するために使用されるコマンドです。ping そして、そのオブジェクトを再現する。
構文
の構文は次のとおりです。 PostgreSQL ALTER TABLE コマンド:
ALTER TABLE table-name action;
table-name パラメータは、変更するテーブルの名前です。action パラメータは、列名の変更や列のデータ型の変更など、実行する必要のあるアクションです。
詳細説明
ALTER TABLE コマンドは、既存のテーブルの定義を変更します。次のサブフォームを使用します。
- 列の追加これは、CREATE TABLE コマンドと同様の構文を使用して、テーブルに新しい列を追加します。
- ドロップ カラム: ドロップ用ping テーブルの列。列に課せられていた制約とインデックスも削除されます。
- デフォルトの設定/削除: 列のデフォルト値を設定または削除するために使用されます。変更は後続の場合にのみ適用されます。 INSERT ステートメント.
- NOT NULL のセット/ドロップ: 列にNULL値を許可するかどうかを変更します。
- セット統計ANALYZE操作における各列の統計情報収集対象を設定するためのものです。
- ストレージの設定: 列の保存モード(インラインか補助テーブルか)を設定します。
- OIDなしでセット: テーブルの古い OID 列を削除するために使用されます。
- RENAME: テーブル名またはカラム名を変更します。
- テーブル制約の追加テーブルに新しい制約を追加するために使用されます。構文は、 テーブルを作成
- ドロップコンストレイント: ドロップに使用ping テーブル制約。
- OWNERテーブル、シーケンス、インデックス、またはビューの所有者を特定のユーザーに変更する場合。
- CLUSTER: 将来のクラスタ操作で使用するテーブルをマークするため。
列の変更
列は様々な方法で変更できます。これらの変更はALTER TABLEコマンドを使用して行います。以下でそれらについて説明します。
新しい列の追加
新しい列を追加するには PostgreSQL テーブルの場合、ALTER TABLE コマンドは次の構文で使用されます。
ALTER TABLE table-name ADD new-column-name column-definition;
テーブル名は、変更するテーブルの名前です。新しい列名は、追加する新しい列の名前です。列定義は、 データ・タイプ 新しい列について。下記の書籍表を参照してください。
テーブルには id と name の 2 つの列があります。テーブルに新しい列を追加し、author という名前を付ける必要があります。以下のコマンドを実行してください。
ALTER TABLE Book ADD author VARCHAR(50);
上記のコマンドを実行すると、Book テーブルは次のようになります。
新しい列が正常に追加されました。
テーブルの列の名前を変更する
ALTER TABLE コマンドを使用して列の名前を変更できます。この場合、コマンドは次の構文で使用されます。
ALTER TABLE table-name RENAME COLUMN old-name TO new-name;
テーブル名は、列名を変更するテーブルの名前です。旧名は列の現在の名前、新名は列の新しい名前です。以下に示すテーブル Book を例に考えてみましょう。
本:
列名「author」を「book_author」に変更する必要があります。コマンドは以下のとおりです。
ALTER TABLE Book RENAME COLUMN author TO book_author;
コマンドを実行すると、テーブルの構造を表示できます。
カラム名は正常に変更されました。
列のデフォルト値の設定
列にデフォルト値を設定することで、INSERT操作時にその列の値を指定しなくても、デフォルト値が使用されるようにすることができます。この場合、ALTER TABLEコマンドを次の構文で使用できます。
ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];
テーブル名は、列を変更するテーブルの名前です。列名は、デフォルト値を設定する列の名前であり、値はその列のデフォルト値です。以下の 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の2つの列にのみ値を挿入しました。ただし、book_author列にはデフォルト値が使用されています。
チェック制約の追加
チェック制約は、テーブルに挿入されるレコードを検証するのに役立ちます。 これを行うには、ALTER TABLE コマンドと ADD CHECK ステートメントを組み合わせます。 構文:
ALTER TABLE table-name ADD CHECK expression;
table-nameは変更するテーブルの名前であり、expressionはテーブル列に課す制約です。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の使用
これまでの操作はSQLシェルから実行してきました。次に、同じ操作をpgAdminを使って視覚的に実行する方法を見ていきましょう。
新しい列の追加
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
ALTER TABLE Book ADD author VARCHAR(50);
ステップ4) 「実行」ボタンをクリックします。
ステップ5) 列が追加されたかどうかを確認するには、次の手順を実行します。
- 左側のナビゲーションから「データベース」をクリックします。
- デモを展開します。
- スキーマを展開します。
- 「パブリック」を展開します。
- 「テーブル」を展開します。
- 本を展開します。
- 列を展開します。
以下に示すように、列が追加されているはずです。
テーブルの列の名前を変更する
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
ALTER TABLE Book RENAME COLUMN author TO book_author;
ステップ4) 「実行」ボタンをクリックします。
ステップ5) 変更が成功したかどうかを確認するには、以前と同様に書籍テーブルの列を展開してください。
列は次のようになります。
列は正常に変更されました。
列のデフォルト値の設定
ステップ1) pgAdmin アカウントにログインします。
ステップ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 列に挿入されたかどうかを確認できます。
チェック制約の追加
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))
ステップ4) 「実行」ボタンをクリックします。
ステップ5) これをテストするには、クエリ エディタに次のクエリを入力し、[実行] ボタンをクリックしてください。
INSERT INTO Book VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');
次のような結果が返されます。
テーブルの名前を変更する
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
ALTER TABLE Book RENAME TO Books;
ステップ4) 「実行」ボタンをクリックします。
ステップ5) テーブルの名前が変更されたかどうかを確認するには、[データベース] > [デモ] > [スキーマ] > [パブリック] > [テーブル] を展開します。
テーブルの名前が正常に変更されました。

























