sql >> データベース >  >> RDS >> Mysql

MySQLで変数を宣言する方法は?

    MySQLには主に3つのタイプの変数があります:

    1. ユーザー定義変数 (接頭辞@ ):

      宣言したり初期化したりせずに、任意のユーザー定義変数にアクセスできます。初期化されていない変数を参照する場合、その値は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ユーザー変数テクニックを使用したクエリ

    2. ローカル変数 (プレフィックスなし):

      ローカル変数は、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です。 宣言されているブロック。

    3. サーバーシステム変数 (接頭辞@@ ):

      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;
      


    1. SQLサーバーでID列の値が突然1001にジャンプします

    2. MariaDBでのRIGHT()のしくみ

    3. postgres / postgresql / psqlの文字/文字にコメントしますか?

    4. 最新のものを除くすべてのレコードを削除しますか?