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
NULL
en een type tekenreeks.SELECT @var_any_var_name
U kunt een variabele initialiseren met
SET
ofSELECT
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 . -
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 beginwaardeNULL
.Het bereik van een lokale variabele is de
BEGIN ... END
blok waarbinnen het is gedeclareerd. -
Serversysteemvariabelen (voorafgegaan door
@@
):De MySQL-server onderhoudt veel systeemvariabelen geconfigureerd naar een standaardwaarde. Ze kunnen van het type
GLOBAL
. zijn ,SESSION
ofBOTH
.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 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 GLOBAL
ofSET 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;