MySQLで変数を宣言する方法!SELECT・SETコマンドの使い方を実例付きで解説
MySQLでは、SELECTコマンドとSETコマンドを使って変数を宣言・操作できます。変数を扱う際は、変数名の前に記号「@」を付けるのが基本のルールです。
MySQLにおける変数の種類と接頭辞の違い
MySQLの変数は、接頭辞の付け方によって次のように区別されます。
- @(1つ) … ユーザー定義変数
- 接頭辞なし … ローカル変数(ストアドプロシージャ内などでDECLARE文により宣言)
- @@(2つ) … サーバーシステム変数
本記事では、このうちユーザー定義変数の宣言方法と値の設定・更新手順を、実際の実行例とともに解説します。
変数を宣言する構文
変数を宣言するには、SELECTコマンドを使用します。
SELECT @yourVariableName;
変数に値を設定する構文
宣言した変数に値を代入するには、SETコマンドを使用します。
SET @yourVariableName=value;
注意:SELECTステートメントを実行した時点では、変数「yourVariableName」にはNULL値が格納されています。SETコマンドで値を設定した後に、初めて指定した値が反映されます。
実際に変数を宣言して確認してみよう
それでは、上記のクエリを実際に実行して動作を確認しましょう。まず、変数を宣言します。
mysql> SELECT @engine;
上記のクエリを実行すると、変数には初期状態としてNULL値が入っています。以下が出力結果です。
+---------+ | @engine | +---------+ | NULL | +---------+ 1 row in set (0.00 sec)
SETコマンドで値を設定する
続いて、SETコマンドを使って変数に値を設定します。
mysql> SET @engine='start'; Query OK, 0 rows affected (0.00 sec)
値を設定した後、SELECTステートメントを使って正しく反映されているかを確認できます。
mysql> SELECT @engine;
上記のクエリを実行すると、更新された値が取得できます。以下が出力結果です。
+---------+ | @engine | +---------+ | start | +---------+ 1 row in set (0.00 sec)
変数の値を更新する
すでに値が入っている変数も、同じようにSETコマンドで上書き更新できます。
mysql> SET @engine='close'; Query OK, 0 rows affected (0.00 sec)
SELECTコマンドで、結果が正しく更新されているかを確認しましょう。
mysql> SELECT @engine;
上記のクエリを実行すると、以下のような出力が得られます。
+---------+ | @engine | +---------+ | close | +---------+ 1 row in set (0.00 sec)
この出力結果から、@engine変数が「close」という値に正しく更新されたことがわかります。
補足:ユーザー定義変数のスコープについて
ユーザー定義変数(@付きの変数)は、セッション単位で有効になります。そのため、同じ接続内であれば複数のクエリ間で値を共有できますが、接続を切断すると変数の値は失われます。一時的な計算結果の保持や、クエリ間でのデータ受け渡しなどに便利なので、ぜひ活用してみてください。
-
MySQLでsql_modeを永続的に設定する方法を解説
MySQLのsql_modeを永続的に設定する手順MySQLでは、セッションごとにSET sql_modeを実行してSQLモードを変更できますが、サーバーを再起動すると設定は元に戻ってしまいます。そこで本記事では、設定ファイル(my.cnf / my.ini)を編集することで、sql_modeを永続的に設定する方法を解説します。ステップ1:データディレクトリの場所を確認するまず、MySQLのデータディレクトリの場所を確認しましょう。以下のコマンドを実行します。mysql> select @@datadir;実行結果は次のようになります。+-------------------------
-
MySQLのSELECT文をカスタム変数に設定する方法
この記事では、MySQLでSELECT文(クエリ)の結果をカスタム変数(ユーザー定義変数)に設定する方法を解説します。まずサンプル用のテーブルを作成してデータを挿入し、その後SET句と「@」から始まる変数を使ってクエリを変数に格納する手順を、実際の実行例とともに見ていきましょう。 1. テーブルを作成する 最初に、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable2013 -> ( -> Name varchar(20)