MySQLのユーザー定義変数とは?基本ルールとSET文による使い方を解説
本記事では、MySQLにおけるユーザー定義変数(ユーザー変数)の概要と、その具体的な活用方法について解説します。まず、押さえておくべき基本的なルールを見ていきましょう。
ユーザー定義変数の基本ルール
ユーザー変数は
@var_nameの形式で記述します。「var_name」には変数名が入り、英数字、ドット(.)、アンダースコア(_)、ドル記号($)を使用できます。文字列または識別子として引用符で囲んだ場合は、上記以外の文字も変数名に含めることが可能です。
ユーザー定義変数はセッションごとに固有のものです。
あるクライアントで定義したユーザー変数を、他のクライアントから参照したり利用したりすることはできません。
ただし唯一の例外として、Performance Schema の
user_variables_by_threadテーブルへのアクセス権を持つユーザーは、すべてのセッションのユーザー変数を閲覧できます。クライアントセッションが終了すると、そのセッション内で定義されたすべての変数は自動的に解放されます。
ユーザー変数名では大文字と小文字は区別されません。変数名の最大長は64文字です。
構文
ユーザー定義変数を設定する方法の一つが、SETステートメントの実行です。以下のコマンドで変数に値をセットできます。
SET @var_name = expr [, @var_name = expr] ...
SETステートメントを使用する際、代入演算子には「=」または「:=」のどちらでも利用できます。
値の代入
ユーザー変数に代入できる値は、限られたデータ型に制限されています。具体的には、整数、固定小数点数(DECIMAL)、浮動小数点数、バイナリおよび非バイナリ文字列、NULL値です。
DECIMAL型や実数値を代入した場合、元の値の精度やスケール(小数点以下の桁数)は保持されません。
許容されていない型の値を代入すると、許容されている型へ自動的に変換されます。
この型の決定ルール(coercibility)は、テーブルのカラム値に適用されるものと同一です。
MySQLのユーザー変数を活用すれば、クエリの実行結果をクライアント側の一時変数に保存することなく、サーバー側で記憶しておくことができます。
明示的にメモリ領域を割り当てることなくデータを保持できるため、一時的な値の扱いに便利です。
-
MySQLのユーザー定義変数とは?基本ルールとSET文による使い方を解説
本記事では、MySQLにおけるユーザー定義変数(ユーザー変数)の概要と、その具体的な活用方法について解説します。まず、押さえておくべき基本的なルールを見ていきましょう。 ユーザー定義変数の基本ルール ユーザー変数は @var_name の形式で記述します。「var_name」には変数名が入り、英数字、ドット(.)、アンダースコア(_)、ドル記号($)を使用できます。 文字列または識別子として引用符で囲んだ場合は、上記以外の文字も変数名に含めることが可能です。 ユーザー定義変数はセッションごとに固有のものです。 あるクライアントで定義したユーザー変数を、他のクライアントから参照したり利用したり
-
オプション指定によるMySQLプログラム変数の設定方法
多くのMySQLプログラムは、実行時にSETステートメントを使って設定できる内部変数を持っています。実は、これらのプログラム変数の大部分は、サーバー起動時にも、プログラムオプションを指定する場合と同じ構文を使って設定することが可能です。例1:max_allowed_packet変数の設定mysqlクライアントには、通信バッファの最大サイズを制御するmax_allowed_packetという変数が用意されています。この変数を16MBに設定したい場合は、以下のいずれかのコマンドを実行します。mysql --max_allowed_packet=16777216 (または) mysql --max_