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文で自由に再利用できます。条件となる値を直接書き込むのではなく変数として扱うことで、スクリプトの可読性や保守性が向上し、同じスクリプトを別の値で使い回すことも可能になります。なお、セッション変数は接続が切断されると失われるため、値を永続的に保持したい場合は通常のテーブルへの格納を検討してください。
-
MySQLでSQLスクリプトを実行する方法を初心者向けに解説
MySQLでSQLスクリプトを実行するには、MySQL Workbenchを使用するのが最も簡単な方法です。この記事では、MySQL Workbenchを使ってSQLファイルを読み込み、実行するまでの手順をスクリーンショット付きの手順に沿って詳しく解説します。 1. MySQL Workbenchを起動する まず、MySQL Workbenchを開きます。起動すると、以下のようなホーム画面が表示されます。 2. SQLスクリプトファイルを開く 次に、メニューバーから「File」→「Open SQL Script」を選択して、実行したいSQLスクリプトファイルを開きます。 メニュー操作の代
-
Pythonで例外に変数を渡す方法をわかりやすく解説
Pythonでは、独自の情報を持たせた例外を作成し、その例外オブジェクトに変数を渡すことができます。これにより、エラー発生時の状況や詳細なメッセージを柔軟に扱えるようになります。ここでは、組み込みの Exception クラスを継承したカスタム例外 ExampleException を定義し、__init__ メソッドで引数を受け取る方法を紹介します。そして、try-except ブロックを使って例外を発生させ(raise)、変数を例外に渡します。コード例class ExampleException(Exception): def __init__(self, foo):