sql >> Database >  >> RDS >> Mysql

Hoe een variabele declareren in MySQL?

Er zijn hoofdzakelijk drie soorten variabelen in MySQL:

  1. Door de gebruiker gedefinieerde variabelen (voorafgegaan door @ ):

    U hebt toegang tot elke door de gebruiker gedefinieerde variabele zonder deze te declareren of te initialiseren. Als u verwijst naar een variabele die niet is geïnitialiseerd, heeft deze de waarde NULL en een type tekenreeks.

    SELECT @var_any_var_name
    

    U kunt een variabele initialiseren met SET of SELECT verklaring:

    SET @start = 1, @finish = 10;    
    

    of

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

    Aan gebruikersvariabelen kan een waarde worden toegewezen uit een beperkte set gegevenstypes:geheel getal, decimaal, drijvende-komma, binaire of niet-binaire tekenreeks, of NULL-waarde.

    Door de gebruiker gedefinieerde variabelen zijn sessiespecifiek. Dat wil zeggen, een gebruikersvariabele die door de ene client is gedefinieerd, kan niet door andere clients worden gezien of gebruikt.

    Ze kunnen worden gebruikt in SELECT query's met behulp van Geavanceerde MySQL-technieken voor gebruikersvariabelen .

  2. Lokale variabelen (geen voorvoegsel) :

    Lokale variabelen moeten worden gedeclareerd met DECLARE voordat je het opent.

    Ze kunnen worden gebruikt als lokale variabelen en de invoerparameters in een opgeslagen procedure:

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

    Als de DEFAULT clausule ontbreekt, is de beginwaarde NULL .

    Het bereik van een lokale variabele is de BEGIN ... END blok waarbinnen het is gedeclareerd.

  3. Serversysteemvariabelen (voorafgegaan door @@ ):

    De MySQL-server onderhoudt veel systeemvariabelen geconfigureerd naar een standaardwaarde. Ze kunnen van het type GLOBAL . zijn , SESSION of BOTH .

    Globale variabelen beïnvloeden de algehele werking van de server, terwijl sessievariabelen de werking voor individuele clientverbindingen beïnvloeden.

    Om de huidige waarden te zien die worden gebruikt door een actieve server, gebruikt u de SHOW VARIABLES statement of SELECT @@var_name .

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

    Ze kunnen worden ingesteld bij het opstarten van de server met behulp van opties op de opdrachtregel of in een optiebestand. De meeste kunnen dynamisch worden gewijzigd terwijl de server draait met behulp van SET GLOBAL of 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. De versie van SQL Server die in gebruik is, ondersteunt het datatype datetime2 niet?

  2. Een LINKER ANTI SEMI JOIN doen in SQL Server

  3. Oracle's standaard DATE-indeling

  4. Kan de postgreSQL niet verbinden met psycopg2