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

MySQLスクリプトに変数を渡す方法|セッション変数の設定と実践例

MySQLのスクリプトやSQL文に値を動的に渡したいときに便利なのがセッション変数(ユーザー定義変数)です。まずSETコマンドでセッション変数に値を設定し、その後その変数をスクリプト内のSQL文で参照するだけで、柔軟な処理を実現できます。

セッション変数の設定方法と基本的な使い方

ステップ1:SETコマンドで変数を設定する

SET @anyVariableName = 'yourValue';

ステップ2:変数をSQL文に渡して使う

UPDATE yourTableName
SET yourColumnName1 = yourColumnName1 + integerValue
WHERE yourColumnName2 = @anyVariableName;

それでは、上記の構文を理解するために、実際にサンプルテーブルを作成しながら確認していきましょう。

実践例:サンプルテーブルの作成

従業員情報を管理するテーブルを作成します。テーブル作成のクエリは以下の通りです。

mysql> create table Employee_Information
    -> (
    -> EmployeeId int NOT NULL AUTO_INCREMENT,
    -> EmployeeName varchar(20) NOT NULL,
    -> EmployeeSalary int,
    -> EmployeeStatus varchar(20),
    -> PRIMARY KEY(EmployeeId)
    -> );
Query OK, 0 rows affected (0.53 sec)

テストデータの挿入

次に、INSERTコマンドを使ってレコードをいくつか追加します。

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Sam',17650,'FullTime');
Query OK, 1 row affected (0.13 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Carol',12000,'Trainee');
Query OK, 1 row affected (0.18 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Bob',17650,'FullTime');
Query OK, 1 row affected (0.20 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('Mike',12000,'Trainee');
Query OK, 1 row affected (0.14 sec)

mysql> insert into Employee_Information(EmployeeName,EmployeeSalary,EmployeeStatus) values('John',17650,'FullTime');
Query OK, 1 row affected (0.16 sec)

登録されたデータの確認

SELECT文ですべてのレコードを表示します。

mysql> select *from Employee_Information;

実行結果は以下の通りです。

+------------+--------------+----------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary | EmployeeStatus |
+------------+--------------+----------------+----------------+
|          1 | Sam          |          17650 | FullTime       |
|          2 | Carol        |          12000 | Trainee        |
|          3 | Bob          |          17650 | FullTime       |
|          4 | Mike         |          12000 | Trainee        |
|          5 | John         |          17650 | FullTime       |
+------------+--------------+----------------+----------------+
5 rows in set (0.00 sec)

セッション変数を使ったUPDATE処理の実行

ここからが本題です。セッション変数「@EmpStatus」に「FullTime」を設定し、フルタイム勤務の従業員だけ給与を6500増やすUPDATE文を実行します。

mysql> set @EmpStatus = 'FullTime';
Query OK, 0 rows affected (0.03 sec)

mysql> update Employee_Information set EmployeeSalary = EmployeeSalary+6500 where EmployeeStatus = @EmpStatus;
Query OK, 3 rows affected (0.18 sec)
Rows matched: 3  Changed: 3  Warnings: 0

更新結果の確認

SELECT文でもう一度テーブルの内容を確認しましょう。FullTime勤務の従業員3名(Sam・Bob・John)の給与のみが6500増加し、Traineeの2名は変更されていないことが分かります。

mysql> select *from Employee_Information;

実行結果は以下の通りです。

+------------+--------------+----------------+----------------+
| EmployeeId | EmployeeName | EmployeeSalary | EmployeeStatus |
+------------+--------------+----------------+----------------+
|          1 | Sam          |          24150 | FullTime       |
|          2 | Carol        |          12000 | Trainee        |
|          3 | Bob          |          24150 | FullTime       |
|          4 | Mike         |          12000 | Trainee        |
|          5 | John         |          24150 | FullTime       |
+------------+--------------+----------------+----------------+
5 rows in set (0.00 sec)

まとめ

このように、SETコマンドで定義したセッション変数は、同一セッション内の任意のSQL文で自由に再利用できます。条件となる値を直接書き込むのではなく変数として扱うことで、スクリプトの可読性や保守性が向上し、同じスクリプトを別の値で使い回すことも可能になります。なお、セッション変数は接続が切断されると失われるため、値を永続的に保持したい場合は通常のテーブルへの格納を検討してください。

  1. MySQLでSQLスクリプトを実行する方法を初心者向けに解説

    MySQLでSQLスクリプトを実行するには、MySQL Workbenchを使用するのが最も簡単な方法です。この記事では、MySQL Workbenchを使ってSQLファイルを読み込み、実行するまでの手順をスクリーンショット付きの手順に沿って詳しく解説します。 1. MySQL Workbenchを起動する まず、MySQL Workbenchを開きます。起動すると、以下のようなホーム画面が表示されます。 2. SQLスクリプトファイルを開く 次に、メニューバーから「File」→「Open SQL Script」を選択して、実行したいSQLスクリプトファイルを開きます。 メニュー操作の代

  2. Pythonで例外に変数を渡す方法をわかりやすく解説

    Pythonでは、独自の情報を持たせた例外を作成し、その例外オブジェクトに変数を渡すことができます。これにより、エラー発生時の状況や詳細なメッセージを柔軟に扱えるようになります。ここでは、組み込みの Exception クラスを継承したカスタム例外 ExampleException を定義し、__init__ メソッドで引数を受け取る方法を紹介します。そして、try-except ブロックを使って例外を発生させ(raise)、変数を例外に渡します。コード例class ExampleException(Exception): def __init__(self, foo):