MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでビューからテーブルを作成する方法|CREATE TABLE ... SELECT構文の使い方を解説

ビューからテーブルを作成する基本構文

MySQLでは、CREATE TABLE ... SELECT構文を使うことで、既存のビューを元に新しいテーブルを簡単に作成できます。基本の構文は以下のとおりです。

CREATE TABLE yourTableName AS SELECT
yourColumnName1,yourColumnName2,yourColumnName3,........N from yourViewName;

このクエリを実行するには、事前準備として「元となるテーブルの作成」と「そのテーブルに対するビューの作成」が必要です。準備が整ったら、上記のクエリを実行します。以下、具体的な手順を順番に見ていきましょう。

手順1:元となるテーブルを作成する

まず、ベースとなるテーブルを作成します。テーブル作成のクエリは以下のとおりです。

mysql> create table StuedntInformation
    -> (
    -> Id int,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.54 sec)

これで「Id」と「Name」の2つのカラムを持つテーブルが作成されました。

手順2:ビューを作成する

続いて、作成したテーブルに対してビューを定義します。ビュー作成のクエリは以下のとおりです。

mysql> CREATE VIEW view_Student AS SELECT Id,Name from StuedntInformation;
Query OK, 0 rows affected (0.11 sec)

これで「view_Student」という名前のビューが作成されました。SHOW CREATE VIEWコマンドを実行すると、ビューの定義内容を確認できます。

mysql> SHOW CREATE VIEW view_Student;

出力結果

+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View         | Create View                                                                                                                                                                                        | character_set_client | collation_connection |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| view_student | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `view_student` AS select `stuedntinformation`.`Id` AS `Id`,`stuedntinformation`.`Name` AS `Name` from `stuedntinformation` | utf8                 | utf8_general_ci      |
+--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)

ビューが正しく定義されていることが確認できました。

手順3:ビューからテーブルを作成する

それでは、先ほど作成した「view_Student」ビューを使って、新しいテーブルを作成します。ビューを元にテーブルを作成するクエリは以下のとおりです。

mysql> CREATE TABLE CreatingTableUsingViewStudent AS
    -> select Id,Name from view_Student;

Query OK, 0 rows affected (0.50 sec)
Records: 0 Duplicates: 0 Warnings: 0

たった1つのクエリで、ビューのSELECT結果と同じカラム構成を持つテーブルが自動的に生成されました。

手順4:作成したテーブルのDDLを確認する

SHOW CREATE TABLEコマンドを使えば、作成されたテーブルのDDL(定義情報)を確認できます。

mysql> show create table CreatingTableUsingViewStudent;

出力結果

+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table                         | Create Table                                                                                                                                                                      |
+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CreatingTableUsingViewStudent | CREATE TABLE `creatingtableusingviewstudent` ( `Id` int(11) DEFAULT NULL, `Name` varchar(100) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci     |
+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

出力結果を見ると、ビューで選択していた「Id」「Name」のカラム構成がそのまま引き継がれたテーブルが作成されていることがわかります。

まとめと注意点

CREATE TABLE ... AS SELECT構文は、ビューや既存テーブルを元に新規テーブルを素早く作成できる便利な構文です。ただし、利用時には以下の点に注意しましょう。

  • 元のテーブルの主キー・インデックス・AUTO_INCREMENT属性などは引き継がれません。必要な場合は作成後に別途追加が必要です。
  • データ型は概ね維持されますが、厳密な型定義が必要な場合は明示的に指定することをおすすめします。
  • ビューを指定した場合でも、コピーされるのはビューが参照しているテーブルの現在のデータです。

これらの特性を理解したうえで活用すれば、バックアップ用テーブルの作成やデータの検証作業などを効率的に行えます。

  1. MySQLでインデックス付きのテーブルを作成する方法を徹底解説

    MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp

  2. MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説

    MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam