カテゴリ: PostgreSQL 更新日: 2026/02/22

PostgreSQLでテーブルを別スキーマへ移動する方法を完全解説|初心者でもわかるデータベースとスキーマの基礎

PostgreSQLでテーブルを別スキーマへ移動する方法
PostgreSQLでテーブルを別スキーマへ移動する方法

先生と生徒の会話形式で理解しよう

生徒

「PostgreSQLを触り始めたんですが、スキーマって何ですか?テーブルと何が違うんですか?」

先生

「スキーマは、テーブルを整理するための“引き出し”のようなものです。同じデータベースの中に、用途ごとに箱を分けて収納できる仕組みです。」

生徒

「じゃあ、テーブルを別の引き出しに移動することもできるんですか?」

先生

「できます。PostgreSQLでは、コマンドひとつでテーブルを別スキーマへ移動できます。今日はその方法を、パソコンが初めての人でも分かるように説明します。」

1. PostgreSQLとは何か?

1. PostgreSQLとは何か?
1. PostgreSQLとは何か?

PostgreSQL(ポストグレスキューエル)は、たくさんのデータを安全に保存して管理できる「データベース管理システム」です。名簿や住所録、商品一覧表のようなデータを、パソコンの中で整理して保管するための仕組みだと考えてください。

紙のノートに情報を書く代わりに、パソコンの中に「表(テーブル)」として保存します。その表を操作するために使う言葉がSQLです。

2. データベース・テーブル・スキーマの関係

2. データベース・テーブル・スキーマの関係
2. データベース・テーブル・スキーマの関係

初心者がつまずきやすいのが、「データベース」「テーブル」「スキーマ」の違いです。家に例えると分かりやすくなります。

  • データベース:家そのもの
  • スキーマ:部屋や引き出し
  • テーブル:引き出しの中のノート

PostgreSQLでは、1つのデータベースの中に複数のスキーマを作れます。スキーマを使うことで、同じ名前のテーブルを用途別に分けて管理できます。

3. スキーマを使うメリット

3. スキーマを使うメリット
3. スキーマを使うメリット

スキーマを使う最大のメリットは、整理整頓です。テーブルが増えてくると、どれが何の目的なのか分からなくなります。

例えば、会員情報用のテーブルと管理者用のテーブルを分けたい場合、それぞれ別スキーマに入れておくと見通しが良くなります。

また、スキーマ単位でアクセス権限を設定できるため、セキュリティ面でも役立ちます。

4. テーブル移動前の状態を確認しよう

4. テーブル移動前の状態を確認しよう
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. 移動先のスキーマを作成する

5. 移動先のスキーマを作成する
5. 移動先のスキーマを作成する

テーブルを移動する前に、移動先のスキーマが必要です。スキーマが存在しない場合は、先に作成します。


CREATE SCHEMA member;

CREATE SCHEMA

この命令は、「memberという名前の引き出しを作る」という意味です。

6. ALTER TABLEでテーブルを別スキーマへ移動する

6. ALTER TABLEでテーブルを別スキーマへ移動する
6. ALTER TABLEでテーブルを別スキーマへ移動する

PostgreSQLでテーブルを別スキーマへ移動するには、ALTER TABLE文を使います。とてもシンプルです。


ALTER TABLE public.users
SET SCHEMA member;

ALTER TABLE

これで、usersテーブルはpublicスキーマからmemberスキーマへ移動しました。中のデータは消えず、そのまま保たれます。

7. 移動後のテーブルを確認する

7. 移動後のテーブルを確認する
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. スキーマ移動時によくある注意点

8. スキーマ移動時によくある注意点
8. スキーマ移動時によくある注意点

テーブルを別スキーマへ移動するときに注意したい点があります。

  • SQLで参照するときは「スキーマ名.テーブル名」が必要になる
  • 権限設定によってはアクセスできなくなる
  • アプリケーション側のSQL修正が必要な場合がある

特に初心者のうちは、どのスキーマにテーブルがあるかを意識することが大切です。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方