Du använder variabler i MySQL -frågor för att lagra värden som hämtats från databasen eller ställs in under frågeställningen. Detta möjliggör dynamiska och återanvändbara frågor. Här är en uppdelning av hur man använder variabler i MySQL:
1. Förklarar variabler:
- Användardefinierade variabler: Använd symbolen `` `följt av det variabla namnet. Dessa variabler är sessionspecifika.
`` `SQL
Ställa in @my_variable ='viss värde';
`` `
- Lokala variabler: Deklareras inom lagrade procedurer eller funktioner med hjälp av nyckelordet "deklarera". Dessa har ett begränsat omfattning.
`` `SQL
Skapa procedur my_procedure ()
BÖRJA
Deklarera total_orders int;
- ... resten av din procedur
AVSLUTA;
`` `
2. Tilldela värden till variabler:
- med `set`:
`` `SQL
Ställ in @user_id =123;
`` `
- från en utvald fråga:
`` `SQL
Välj räkning (*) till @Total_Products från produkter;
`` `
- inom en lagrad procedur eller funktion:
`` `SQL
Deklarera produkt_name varchar (255);
Välj namn i Product_Name från produkter där id =1;
`` `
3. Använda variabler i frågor:
- där klausuler:
`` `SQL
Välj * från användare där id =@user_id;
`` `
- i utvalda listor:
`` `SQL
Välj namn, @Discount_Percentage * Pris som Discontered_Price från produkter;
`` `
- i insert, uppdatering och radera uttalanden:
`` `SQL
Uppdatera produkter Ställ in pris =@new_price där id =@product_id;
`` `
Exempel:
Låt oss säga att du vill hitta alla beställningar av en användare med ett specifikt användar -ID och beräkna det totala beställningsvärdet:
`` `SQL
- Ställ in användar-ID
Ställ in @user_id =1;
- Beräkna det totala ordervärdet för användaren
VÄLJA
O.order_id,
Summa (oi.quantity * p.price) som total_order_value
Från order o
Gå med i order_items oi på o.order_id =oi.order_id
Gå med i produkter P på oi.product_id =P.ID
Där o.user_id =@user_id
Grupp av o.order_id;
`` `
Den här frågan ställer först in variabeln `@user_id` till 1. Sedan använder den denna variabel i WHERE -klausul för att filtrera order som placeras av användaren med ID 1.
Nyckelpunkter:
-Användardefinierade variabler är sessionspecifika och deras värden går förlorade när sessionen slutar.
- Lokala variabler är endast tillgängliga inom den lagrade proceduren eller funktionen där de deklareras.
- Undvik att använda samma variabla namn för användardefinierade och lokala variabler för att förhindra oväntat beteende.
- Använd variabler på ett klokt sätt för att förbättra frågan om läsbarhet och återanvändbarhet.