Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie deklariere ich eine Variable in MySQL?

Es gibt hauptsächlich drei Arten von Variablen in MySQL:

  1. Benutzerdefinierte Variablen (mit vorangestelltem @ ):

    Sie können auf jede benutzerdefinierte Variable zugreifen, ohne sie zu deklarieren oder zu initialisieren. Wenn Sie auf eine nicht initialisierte Variable verweisen, hat sie den Wert NULL und eine Art String.

    SELECT @var_any_var_name
    

    Sie können eine Variable mit SET initialisieren oder SELECT Aussage:

    SET @start = 1, @finish = 10;    
    

    oder

    SELECT @start := 1, @finish := 10;
    
    SELECT * FROM places WHERE place BETWEEN @start AND @finish;
    

    Benutzervariablen kann ein Wert aus einer begrenzten Menge von Datentypen zugewiesen werden:Ganzzahl, Dezimalzahl, Fließkommazahl, binäre oder nichtbinäre Zeichenkette oder NULL-Wert.

    Benutzerdefinierte Variablen sind sitzungsspezifisch. Das heißt, eine von einem Client definierte Benutzervariable kann von anderen Clients nicht gesehen oder verwendet werden.

    Sie können in SELECT verwendet werden Abfragen mit Fortgeschrittene MySQL-Benutzervariablentechniken .

  2. Lokale Variablen (kein Präfix) :

    Lokale Variablen müssen mit DECLARE deklariert werden bevor Sie darauf zugreifen.

    Sie können als lokale Variablen und als Eingabeparameter innerhalb einer gespeicherten Prozedur verwendet werden:

    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);
    

    Wenn der DEFAULT Klausel fehlt, ist der Anfangswert NULL .

    Der Gültigkeitsbereich einer lokalen Variablen ist BEGIN ... END Block, in dem es deklariert ist.

  3. Server-Systemvariablen (mit vorangestelltem @@ ):

    Der MySQL-Server verwaltet viele Systemvariablen auf einen Standardwert konfiguriert. Sie können vom Typ GLOBAL sein , SESSION oder BOTH .

    Globale Variablen beeinflussen den Gesamtbetrieb des Servers, während Sitzungsvariablen seinen Betrieb für einzelne Client-Verbindungen beeinflussen.

    Um die aktuellen Werte zu sehen, die von einem laufenden Server verwendet werden, verwenden Sie SHOW VARIABLES -Anweisung oder SELECT @@var_name .

    SHOW VARIABLES LIKE '%wait_timeout%';
    
    SELECT @@sort_buffer_size;
    

    Sie können beim Serverstart mit Optionen auf der Befehlszeile oder in einer Optionsdatei gesetzt werden. Die meisten von ihnen können dynamisch geändert werden, während der Server läuft, indem SET GLOBAL verwendet wird oder 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;