0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLの学習:ALTER TABLE・DROP TABLEでTableを変更・削除する

0
Posted at

PostgreSQLの学習:ALTER TABLE・DROP TABLEでTableを変更・削除する

今回はPostgreSQLで、既存のTableを変更・削除する方法について考えてみたいと思います。

これまで、

  • CREATE TABLEでTableを作成
  • INSERTでRowを追加
  • SELECTでデータを取得

という操作を学習しました。

今回は、すでに存在するTableに対して使用するALTER TABLEとDROP TABLEについて整理します。

特に、

  • DB Objectとは何か
  • ALTER TABLEとは何か
  • DROP TABLEとは何か
  • ALTER TABLEとDROP TABLEの違い
  • CREATE TABLE・ALTER TABLE・DROP TABLEの違い

について整理します。

所要時間は10分ほどです。

それでは、さっそく始めていきましょう!

DB Objectとは

DB Object(Database Object)とは、Database内で管理される構成要素です。

これまで扱ってきたTableもDB Objectの一例です。

今回の学習では、

Database
└── Schema
     └── Table
          ↑
       DB Object

という関係を前提として、Tableの変更と削除を行います。

ALTER TABLEとは

ALTER TABLEとは、既に存在するTableの定義を変更するためのSQLです。

今回は、Table名の変更を実際に行いました。

もともと、

costomers

という名前で作成していたTableを、

customers

へ変更します。

使用したSQLは以下です。

ALTER TABLE costomers
RENAME TO customers;

それぞれ、

ALTER TABLE costomers
→ costomers Tableを変更対象にする

RENAME TO customers
→ Table名をcustomersに変更する

という意味になります。

構造としては、

変更前

public
├── costomers
└── visits

      ↓ ALTER TABLE

変更後

public
├── customers
└── visits

となります。

ALTER TABLEでTable名を変更すると新しいTableが作られるのか

ここで重要なのは、ALTER TABLE ... RENAME TOを実行しても、新しいTableが追加で作られるわけではないということです。

今回、

ALTER TABLE costomers
RENAME TO customers;

を実行しましたが、

costomers
+
customers

という2つのTableになったわけではありません。

既存の、

costomers

というTableの名前が、

customers

へ変更されています。

そのため、

変更前
Table数 = 2

costomers
visits

      ↓ ALTER TABLE

変更後
Table数 = 2

customers
visits

となりました。

つまり、

ALTER TABLE
→ 既存Tableの定義を変更する

CREATE TABLE
→ 新しいTableを作る

という違いがあります。

PostgreSQLでALTER TABLEを実行する

まず、psqlの\dtで現在のTableを確認しました。

public | costomers | テーブル
public | visits    | テーブル

ここで、

ALTER TABLE costomers
RENAME TO customers;

を実行しました。

PostgreSQLから、

ALTER TABLE

と返されました。

その後、再び、

\dt

を実行すると、

public | customers | テーブル
public | visits    | テーブル

となり、

costomers
↓
customers

へTable名が変更されたことを確認できました。

なお、\dtはSQLではなく、psqlのメタコマンドです。

DROP TABLEとは

DROP TABLEとは、既に存在するTableというDB Objectそのものを削除するSQLです。

今回は、

customers

Tableを削除しました。

使用したSQLは、

DROP TABLE customers;

です。

構造としては、

削除前

public
├── customers
└── visits

      ↓ DROP TABLE

削除後

public
└── visits

となります。

DROP TABLEはRowだけを削除するのか

DROP TABLEについて特に重要なのは、Tableの中にあるRowだけを削除する操作ではないということです。

今回の、

DROP TABLE customers;

は、

× customersのRowだけを削除する

○ customersというTableそのものを削除する

という操作です。

つまり、TableというDB Object自体がなくなります。

PostgreSQLでDROP TABLEを実行する

実際に、

DROP TABLE customers;

を実行しました。

PostgreSQLから、

DROP TABLE

と返されました。

その後、

\dt

で確認すると、

public | visits | テーブル

のみになりました。

つまり、

customers
↓
DROP TABLE
↓
Tableそのものが削除された

ことを確認できました。

ALTER TABLEとDROP TABLEの違い

今回学習した2つを比較すると、

ALTER TABLE
→ 既存Tableの定義を変更する

DROP TABLE
→ 既存Tableそのものを削除する

という違いがあります。

今回の操作では、

costomers
    ↓
ALTER TABLE ... RENAME TO
    ↓
customers
    ↓
DROP TABLE
    ↓
削除

という流れになりました。

ALTER TABLEを実行した時点ではTableは存在し続けています。

一方、DROP TABLEを実行すると、そのTable自体がなくなります。

CREATE TABLE・ALTER TABLE・DROP TABLEの違い

ここまでに学習したTableに関するSQLを整理します。

SQL 役割
CREATE TABLE 新しいTableを作成する
ALTER TABLE 既存Tableの定義を変更する
DROP TABLE 既存Tableそのものを削除する

イメージすると、

Tableがない
    ↓
CREATE TABLE
    ↓
Tableができる
    ↓
ALTER TABLE
    ↓
Tableの定義が変わる
    ↓
DROP TABLE
    ↓
Tableがなくなる

という関係になります。

INSERT・SELECTとの違い

これまで学習したSQLも含めると、

CREATE TABLE
→ Tableを作る

ALTER TABLE
→ Tableの定義を変更する

DROP TABLE
→ Tableそのものを削除する

INSERT
→ TableにRowを追加する

SELECT
→ Tableなどからデータを取得する

となります。

特に、

TableというDB Objectそのものを操作しているのか

それとも

Tableに格納されているデータを操作しているのか

を区別すると、それぞれのSQLの役割を理解しやすくなります。

まとめ

今回はPostgreSQLのALTER TABLEとDROP TABLEについて整理しました。

ALTER TABLEは、

ALTER TABLE costomers
RENAME TO customers;

のように、既存Tableの定義を変更できます。

今回の場合は、

costomers
↓
customers

とTable名を変更しました。

一方、DROP TABLEは、

DROP TABLE customers;

のように、TableというDB Objectそのものを削除します。

今回の操作全体を整理すると、

costomers
    ↓ ALTER TABLE
customers
    ↓ DROP TABLE
削除

となります。

ここまでの学習によって、

SQL 役割
CREATE TABLE Tableを作る
ALTER TABLE Tableの定義を変更する
DROP TABLE Tableそのものを削除する
INSERT TableにRowを追加する
SELECT データを取得する

という基本的な役割の違いを整理できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?