MySQLで既存のテーブルから新しいテーブルを作成する方法(CTAS構文の使い方)
MySQLでは、CTAS(Create Table AS Select)と呼ばれる構文を使うことで、データベース内にすでに存在するテーブルをもとに、新しいテーブルを簡単に作成できます。この方法の大きな特徴は、元のテーブルの構造(カラム定義)とデータの両方をまとめてコピーできる点です。
CTAS(CREATE TABLE AS SELECT)とは
CTASは「CREATE TABLE 新しいテーブル名 AS SELECT ~」という形式で記述し、SELECT文の結果をそのまま新しいテーブルとして保存します。バックアップテーブルの作成や、テスト用のデータ複製などによく使われる便利な構文です。
実行例:Employeeテーブルからバックアップを作成する
ここでは、すでに存在する「Employee」テーブルから「EMP_BACKUP」という名前のテーブルを作成してみましょう。まず、元となるEmployeeテーブルの中身を確認します。
mysql> SELECT * FROM Employee; +------+--------+ | Id | Name | +------+--------+ | 100 | Ram | | 200 | Gaurav | | 300 | Mohan | +------+--------+ 3 rows in set (0.00 sec)
次に、以下のクエリを実行すると、Employeeテーブルの構造とデータをそのまま引き継いだ「EMP_BACKUP」テーブルが作成されます。
mysql> CREATE TABLE EMP_BACKUP AS SELECT * FROM EMPLOYEE; Query OK, 3 rows affected (0.15 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM EMP_BACKUP; +------+--------+ | Id | Name | +------+--------+ | 100 | Ram | | 200 | Gaurav | | 300 | Mohan | +------+--------+ 3 rows in set (0.00 sec)
実行結果を見ると、Employeeテーブルのすべてのデータと構造がEMP_BACKUPテーブルへ正しくコピーされていることが確認できます。
注意点:インデックスや主キーはコピーされない
CTASはデータと基本構造をコピーしますが、主キー(PRIMARY KEY)、インデックス、AUTO_INCREMENT属性、外部キー制約などは引き継がれない点に注意が必要です。これらの定義ごと完全に複製したい場合は、「CREATE TABLE 新しいテーブル名 LIKE 元のテーブル名」で構造のみを先にコピーしてから、INSERT文でデータを移行する方法が推奨されます。
-
MySQLでデータベース内のテーブル名一覧を取得する方法
MySQLでデータベースに存在するテーブル名の一覧を取得したい場合は、SHOW TABLESステートメントを使用します。SQLクライアントやコマンドラインから手軽に実行でき、指定したデータベース内の全テーブルを簡単に確認できます。基本構文テーブル名を取得するための基本構文は以下のとおりです。show tables from yourDatabaseName;yourDatabaseName の部分に、対象となるデータベース名を指定してください。実行例それでは、サンプルデータベース「hb_student_tracker」に対して実際にクエリを実行し、テーブル名を取得してみましょう。mysql&g
-
PythonとMySQLでデータベースからテーブルを削除する方法【DROP TABLE文の使い方】
データベースからテーブル全体を削除する必要が生じる場合があります。不要になったデータをデータベースに残しておくのは、ストレージの無駄につながります。たとえば、データベースに「Employees」というテーブルがあり、何らかの理由でそのテーブルが不要になったとしましょう。このような場合は、不要となったテーブルを削除してしまうのが最善の対応です。テーブルの削除には「DROP TABLE」コマンドを使用します。このコマンドを実行すると、データベースからテーブル全体が完全に削除されます。構文DROP TABLE table_nametable_name の部分には、削除したいテーブルの名前を指定します