sql >> Databasteknik >  >> RDS >> Mysql

Hur deklarerar man en variabel i MySQL?

Det finns huvudsakligen tre typer av variabler i MySQL:

  1. Användardefinierade variabler (med prefixet @ ):

    Du kan komma åt vilken användardefinierad variabel som helst utan att deklarera den eller initiera den. Om du hänvisar till en variabel som inte har initierats har den värdet NULL och en typ av sträng.

    SELECT @var_any_var_name
    

    Du kan initiera en variabel med SET eller SELECT uttalande:

    SET @start = 1, @finish = 10;    
    

    eller

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

    Användarvariabler kan tilldelas ett värde från en begränsad uppsättning datatyper:heltal, decimal, flyttal, binär eller icke-binär sträng eller NULL-värde.

    Användardefinierade variabler är sessionsspecifika. Det vill säga, en användarvariabel som definieras av en klient kan inte ses eller användas av andra klienter.

    De kan användas i SELECT frågor som använder Avancerade MySQL-tekniker för användarvariabler .

  2. Lokala variabler (inget prefix) :

    Lokala variabler måste deklareras med DECLARE innan du kommer åt den.

    De kan användas som lokala variabler och indataparametrarna i en lagrad procedur:

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

    Om DEFAULT sats saknas, initialvärdet är NULL .

    Omfattningen av en lokal variabel är BEGIN ... END block inom vilket det deklareras.

  3. Serversystemvariabler (med prefixet @@ ):

    MySQL-servern har många systemvariabler konfigurerade till ett standardvärde. De kan vara av typen GLOBAL , SESSION eller BOTH .

    Globala variabler påverkar den övergripande driften av servern medan sessionsvariabler påverkar dess funktion för individuella klientanslutningar.

    För att se de aktuella värdena som används av en körande server, använd SHOW VARIABLES uttalande eller SELECT @@var_name .

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

    De kan ställas in vid serverstart med alternativ på kommandoraden eller i en alternativfil. De flesta av dem kan ändras dynamiskt medan servern körs med SET GLOBAL eller 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. Oracles datakälla-konfiguration för Spring

  2. Byter namn på pluggbar databas

  3. Fatalt fel:Oupptäckt fel:Anrop till odefinierad funktion mysql_connect()

  4. Använda stora parametrar för Microsoft SQL lagrad procedur med DAO