MySQLには主に3つのタイプの変数があります:
-
ユーザー定義変数 (接頭辞
@
):宣言したり初期化したりせずに、任意のユーザー定義変数にアクセスできます。初期化されていない変数を参照する場合、その値は
NULL
になります。 と文字列の種類。SELECT @var_any_var_name
SET
を使用して変数を初期化できます またはSELECT
ステートメント:SET @start = 1, @finish = 10;
または
SELECT @start := 1, @finish := 10; SELECT * FROM places WHERE place BETWEEN @start AND @finish;
ユーザー変数には、整数、10進数、浮動小数点、バイナリまたは非バイナリ文字列、またはNULL値などの限られたデータ型のセットから値を割り当てることができます。
ユーザー定義変数はセッション固有です。つまり、1つのクライアントによって定義されたユーザー変数は、他のクライアントには表示または使用できません。
SELECT
で使用できます 高度なMySQLユーザー変数テクニックを使用したクエリ 。 -
ローカル変数 (プレフィックスなし):
ローカル変数は、
DECLARE
を使用して宣言する必要があります アクセスする前に。これらは、ストアドプロシージャ内のローカル変数および入力パラメータとして使用できます。
DELIMITER // CREATE PROCEDURE sp_test(var1 INT) BEGIN DECLARE start INT unsigned DEFAULT 1; DECLARE finish INT unsigned DEFAULT 10; SELECT var1, start, finish; SELECT * FROM places WHERE place BETWEEN start AND finish; END; // DELIMITER ; CALL sp_test(5);
DEFAULT
の場合 句がありません。初期値はNULL
です。 。ローカル変数のスコープは
BEGIN ... END
です。 宣言されているブロック。 -
サーバーシステム変数 (接頭辞
@@
):MySQLサーバーは、多くのシステム変数 を維持しています。 デフォルト値に設定されています。タイプは
GLOBAL
にすることができます。 、SESSION
またはBOTH
。グローバル変数はサーバーの全体的な動作に影響を与えますが、セッション変数は個々のクライアント接続の動作に影響を与えます。
実行中のサーバーで使用されている現在の値を確認するには、
SHOW VARIABLES
を使用します ステートメントまたはSELECT @@var_name
。SHOW VARIABLES LIKE '%wait_timeout%'; SELECT @@sort_buffer_size;
これらは、コマンドラインまたはオプションファイルのオプションを使用してサーバーの起動時に設定できます。これらのほとんどは、サーバーの実行中に
SET GLOBAL
を使用して動的に変更できます。 またはSET SESSION
:-- Syntax to Set value to a Global variable: SET GLOBAL sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000; -- Syntax to Set value to a Session variable: SET sort_buffer_size=1000000; SET SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@local.sort_buffer_size=10000;