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

MySQLで指定した範囲の値をテーブルに自動挿入する方法

MySQLでは、ストアドプロシージャを作成することで、指定した範囲の値をテーブルへ自動的に挿入できます。本記事では、10から20までの連続した数値をテーブルに一括登録する手順を、サンプルコード付きでわかりやすく解説します。

1. サンプルテーブルの作成

まず、値を挿入するためのテーブルを作成します。

mysql> create table DemoTable
    -> (
    -> Value int
    -> );
Query OK, 0 rows affected (0.55 sec)

ここでは「Value」というint型カラムを1つだけ持つシンプルなテーブル「DemoTable」を作成しました。

2. 値を自動挿入するストアドプロシージャの作成

次に、10から20までの範囲の値を自動的にテーブルへ挿入するストアドプロシージャを作成します。

mysql> DELIMITER //
mysql> CREATE PROCEDURE AutoInsertValuesToTable()
    -> BEGIN
    ->     DECLARE startingRange INT DEFAULT 10;
    ->     WHILE startingRange <= 20 DO
    ->         INSERT DemoTable(Value) VALUES (startingRange);
    ->         SET startingRange = startingRange + 1;
    ->     END WHILE;
    -> END
    -> //
Query OK, 0 rows affected (0.23 sec)
mysql> DELIMITER ;

ポイント:

  • DELIMITER // で区切り文字を変更し、プロシージャ内のセミコロンがSQL文の終端として誤認識されないようにしています。
  • DECLARE で開始値「10」を持つ変数 startingRange を定義します。
  • WHILE ループにより、変数が20以下である間、INSERT文を繰り返し実行し、値を1ずつ増やしていきます。
  • 処理完了後、DELIMITER ; で区切り文字を元に戻します。

3. ストアドプロシージャの実行

作成したストアドプロシージャを呼び出すには、以下のクエリを実行します。

mysql> call AutoInsertValuesToTable();
Query OK, 1 row affected (1.10 sec)

4. 挿入結果の確認

実際にテーブルへ値が挿入されたかどうかを確認してみましょう。

mysql> select *from DemoTable;

このクエリを実行すると、以下のような結果が出力されます。

+-------+
| Value |
+-------+
|    10 |
|    11 |
|    12 |
|    13 |
|    14 |
|    15 |
|    16 |
|    17 |
|    18 |
|    19 |
|    20 |
+-------+
11 rows in set (0.00 sec)

このように、10から20までの11件の値が正常にテーブルへ挿入されていることが確認できました。ストアドプロシージャとWHILEループを組み合わせれば、任意の範囲のデータを簡単に自動生成できるため、テストデータの作成などにも非常に便利です。

  1. MySQLでテーブルAとBを比較し、Bに存在しないデータをテーブルCに挿入する方法

    MySQL:テーブルAとBを比較し、Bに存在しないデータをCへ挿入する方法テーブルAのデータとテーブルBを比較し、Bに存在しないレコードだけをテーブルCに挿入したい場合は、LEFT JOIN(左外部結合)を使うのが最もシンプルで確実な方法です。ここでは、3つのテーブル(demo20=テーブルA、demo21=テーブルB、demo22=テーブルC)を使って、具体的な手順を順番に解説します。ステップ1:テーブルA(demo20)を作成するまず、比較元となる最初のテーブルを作成します。mysql> create table demo20 −> ( −> id

  2. MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法

    あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82     -> (