既存のMySQLテーブルから条件を指定してデータをコピーする方法
MySQLでは、CTAS(CREATE TABLE AS SELECT)スクリプトを使うことで、既存のテーブルから構造とデータをまとめてコピーできます。さらに、特定の条件に合致するデータだけをコピーしたい場合は、WHERE句を組み合わせることで簡単に実現できます。
基本構文
CREATE TABLE 新しいテーブル名 AS
SELECT * FROM 元のテーブル名
WHERE 条件;
実行例
以下の例では、「EMPLOYEE」テーブルから「id = 300」かつ「Name = 'Mohan'」という条件に一致する行だけを抽出し、新しいテーブル「EMP_BACKUP2」として作成しています。
mysql> Create table EMP_BACKUP2 AS SELECT * from EMPLOYEE WHERE id = 300 AND Name = 'Mohan';
Query OK, 1 row affected (0.14 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> Select * from EMP_BACKUP2;
+------+-------+
| Id | Name |
+------+-------+
| 300 | Mohan |
+------+-------+
1 row in set (0.00 sec)
このように、WHERE句で指定した条件に一致するデータのみが新しいテーブルへコピーされます。上記の例では、条件(idが300かつ名前がMohan)を満たす1行だけを含むテーブルが作成されました。
ポイント
- WHERE句には
ANDやORなどの論理演算子を組み合わせられるため、複数の条件を柔軟に指定できます。 - コピー元のテーブル構造(列定義)はそのまま引き継がれます。
- バックアップの作成や、特定レコードの部分的な抽出など、さまざまな場面で活用できる便利な手法です。
-
MySQLでテーブルのデータを削除した後にAUTO_INCREMENTを1から再開させる方法
MySQLでデータ削除後にAUTO_INCREMENTを1に戻す方法MySQLでは、DELETE文でレコードを削除してもAUTO_INCREMENTの値はリセットされず、次に挿入されるレコードには続きの番号が割り当てられます。自動インクリメントの値を1に戻したい場合は、TRUNCATE TABLEコマンドを使用します。本記事では、実際のSQL例を使ってその動作を確認していきます。検証用テーブルの作成まず、テーブルを作成します。mysql> create table DemoTable1796 ( StudentId int NOT NULL AUTO_INCREMENT
-
PythonとMySQLで条件に合うデータを抽出する方法:WHERE句の使い方を徹底解説
テーブルからすべてのデータを取得する必要があるケースは、実はそれほど多くありません。むしろ、何らかの条件や基準に基づいて、特定のデータや行だけを取り出したいという場面の方が多いでしょう。例えば、多くの生徒の名前と点数が登録されたテーブルがあるとします。ここから「点数が90以上の生徒の名前だけを取得したい」という場合、(点数>=90)という条件に基づいてデータを選択する必要があります。このような条件付きのデータ抽出を実現するために、MySQLでは「WHERE」句が用意されています。WHERE句を使えば、指定した条件を満たすデータだけをテーブルから選択できます。基本構文SELECT * FR