MySQLには主に3つのタイプの変数があります:
-
ユーザー定義変数 (接頭辞
@):宣言したり初期化したりせずに、任意のユーザー定義変数にアクセスできます。初期化されていない変数を参照する場合、その値は
NULLになります。 と文字列の種類。SELECT @var_any_var_nameSETを使用して変数を初期化できます または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;