PostgreSQLでテーブルを別スキーマへ移動する方法を完全解説|初心者でもわかるデータベースとスキーマの基礎
生徒
「PostgreSQLを触り始めたんですが、スキーマって何ですか?テーブルと何が違うんですか?」
先生
「スキーマは、テーブルを整理するための“引き出し”のようなものです。同じデータベースの中に、用途ごとに箱を分けて収納できる仕組みです。」
生徒
「じゃあ、テーブルを別の引き出しに移動することもできるんですか?」
先生
「できます。PostgreSQLでは、コマンドひとつでテーブルを別スキーマへ移動できます。今日はその方法を、パソコンが初めての人でも分かるように説明します。」
1. PostgreSQLとは何か?
PostgreSQL(ポストグレスキューエル)は、たくさんのデータを安全に保存して管理できる「データベース管理システム」です。名簿や住所録、商品一覧表のようなデータを、パソコンの中で整理して保管するための仕組みだと考えてください。
紙のノートに情報を書く代わりに、パソコンの中に「表(テーブル)」として保存します。その表を操作するために使う言葉がSQLです。
2. データベース・テーブル・スキーマの関係
初心者がつまずきやすいのが、「データベース」「テーブル」「スキーマ」の違いです。家に例えると分かりやすくなります。
- データベース:家そのもの
- スキーマ:部屋や引き出し
- テーブル:引き出しの中のノート
PostgreSQLでは、1つのデータベースの中に複数のスキーマを作れます。スキーマを使うことで、同じ名前のテーブルを用途別に分けて管理できます。
3. スキーマを使うメリット
スキーマを使う最大のメリットは、整理整頓です。テーブルが増えてくると、どれが何の目的なのか分からなくなります。
例えば、会員情報用のテーブルと管理者用のテーブルを分けたい場合、それぞれ別スキーマに入れておくと見通しが良くなります。
また、スキーマ単位でアクセス権限を設定できるため、セキュリティ面でも役立ちます。
4. テーブル移動前の状態を確認しよう
ここでは、publicスキーマにあるusersテーブルを、memberスキーマへ移動する例で説明します。まずは、移動前のテーブルの中身を確認します。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
SELECT *
FROM public.users;
id | name | age | email
----+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
5. 移動先のスキーマを作成する
テーブルを移動する前に、移動先のスキーマが必要です。スキーマが存在しない場合は、先に作成します。
CREATE SCHEMA member;
CREATE SCHEMA
この命令は、「memberという名前の引き出しを作る」という意味です。
6. ALTER TABLEでテーブルを別スキーマへ移動する
PostgreSQLでテーブルを別スキーマへ移動するには、ALTER TABLE文を使います。とてもシンプルです。
ALTER TABLE public.users
SET SCHEMA member;
ALTER TABLE
これで、usersテーブルはpublicスキーマからmemberスキーマへ移動しました。中のデータは消えず、そのまま保たれます。
7. 移動後のテーブルを確認する
移動後は、スキーマ名を付けてテーブルを指定します。
SELECT *
FROM member.users;
id | name | age | email
----+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
データがそのまま残っていることが分かります。
8. スキーマ移動時によくある注意点
テーブルを別スキーマへ移動するときに注意したい点があります。
- SQLで参照するときは「スキーマ名.テーブル名」が必要になる
- 権限設定によってはアクセスできなくなる
- アプリケーション側のSQL修正が必要な場合がある
特に初心者のうちは、どのスキーマにテーブルがあるかを意識することが大切です。