Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да декларирам променлива в MySQL?

Има основно три типа променливи в MySQL:

  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;
    

    На потребителските променливи може да се присвои стойност от ограничен набор от типове данни:цяло число, десетично число, с плаваща запетая, двоичен или недвоичен низ или стойност NULL.

    Дефинираните от потребителя променливи са специфични за сесията. Тоест, потребителска променлива, дефинирана от един клиент, не може да бъде видяна или използвана от други клиенти.

    Те могат да се използват в 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TRIGGERS, които причиняват неуспех на INSERT? Възможен?

  2. Присъединяване спрямо подзаявка

  3. Поправете „ГРЕШКА 1054 (42S22):Неизвестна колона „…“ в „клауза за поръчка“, когато използвате UNION в MySQL

  4. Невалиден номер на параметъра:параметърът не е дефиниран. Вмъкване на данни

  5. '0000-00-00 00:00:00' не може да бъде представен като java.sql.Timestamp грешка