Er zijn hoofdzakelijk drie soorten variabelen in MySQL:
-
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
NULLen een type tekenreeks.SELECT @var_any_var_nameU kunt een variabele initialiseren met
SETofSELECTverklaring: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
SELECTquery's met behulp van Geavanceerde MySQL-technieken voor gebruikersvariabelen . -
Lokale variabelen (geen voorvoegsel) :
Lokale variabelen moeten worden gedeclareerd met
DECLAREvoordat 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
DEFAULTclausule ontbreekt, is de beginwaardeNULL.Het bereik van een lokale variabele is de
BEGIN ... ENDblok waarbinnen het is gedeclareerd. -
Serversysteemvariabelen (voorafgegaan door
@@):De MySQL-server onderhoudt veel systeemvariabelen geconfigureerd naar een standaardwaarde. Ze kunnen van het type
GLOBAL. zijn ,SESSIONofBOTH.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 VARIABLESstatement ofSELECT @@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 GLOBALofSET 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;