sql >> Databáze >  >> RDS >> Mysql

Jak deklarovat proměnnou v MySQL?

V MySQL jsou hlavně tři typy proměnných:

  1. Uživatelsky definované proměnné (předponou @ ):

    Můžete přistupovat k libovolné uživatelem definované proměnné, aniž byste ji deklarovali nebo inicializovali. Pokud odkazujete na proměnnou, která nebyla inicializována, má hodnotu NULL a typ řetězce.

    SELECT @var_any_var_name
    

    Proměnnou můžete inicializovat pomocí SET nebo SELECT prohlášení:

    SET @start = 1, @finish = 10;    
    

    nebo

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

    Uživatelským proměnným lze přiřadit hodnotu z omezené množiny datových typů:celé číslo, desítkové číslo, s plovoucí desetinnou čárkou, binární nebo nebinární řetězec nebo hodnotu NULL.

    Uživatelem definované proměnné jsou specifické pro relaci. To znamená, že uživatelskou proměnnou definovanou jedním klientem nemohou ostatní klienti vidět ani používat.

    Mohou být použity v SELECT dotazy pomocí Pokročilé techniky uživatelských proměnných MySQL .

  2. Místní proměnné (bez předpony):

    Lokální proměnné je třeba deklarovat pomocí DECLARE před přístupem.

    Lze je použít jako lokální proměnné a vstupní parametry uvnitř uložené procedury:

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

    Pokud je DEFAULT klauzule chybí, počáteční hodnota je NULL .

    Rozsah lokální proměnné je BEGIN ... END bloku, ve kterém je deklarován.

  3. Systémové proměnné serveru (předponou @@ ):

    Server MySQL spravuje mnoho systémových proměnných nakonfigurovány na výchozí hodnotu. Mohou být typu GLOBAL , SESSION nebo BOTH .

    Globální proměnné ovlivňují celkový provoz serveru, zatímco proměnné relace ovlivňují jeho provoz pro připojení jednotlivých klientů.

    Chcete-li zobrazit aktuální hodnoty používané běžícím serverem, použijte SHOW VARIABLES nebo SELECT @@var_name .

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

    Lze je nastavit při spuštění serveru pomocí voleb na příkazovém řádku nebo v souboru voleb. Většinu z nich lze měnit dynamicky za běhu serveru pomocí SET GLOBAL nebo 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. Jak nastavit možnost maxrecursion pro CTE uvnitř funkce Table-Valued-Function

  2. Jak vytvořit balíčky PL/SQL v databázi Oracle

  3. Vzorce pro výpočet zeměpisné blízkosti

  4. Psycopg2 Vložit do tabulky se zástupnými symboly