- Lagrade procedurer i MySQL inkapslar SQL-operationer, vilket förbättrar kodens modularitet och återanvändning.
- De erbjuder säkerhet och dataåtkomstkontroll på procedurnivå.
- De minskar klient-/servertrafiken och förbättrar prestandan vid utförande av uppgifter.
- De är lätta att återanvända och kan anropas från olika programmeringsspråk.
Lagrade procedurer är rutiner lagrade i MySQL-databasen som kapslar in SQL-operationer och programmeringslogik. De fungerar som miniprogram som kan anropas för att utföra repetitiva eller komplexa uppgifter.
De erbjuder flera fördelar som modularitet, kodåteranvändning, större säkerhet och bättre prestanda. Därför är det viktigt att behärska lagrade procedurer för alla MySQL-utvecklare eller administratörer.
Nedan ser vi exakt vad de är, deras fördelar, hur man skapar och använder lagrade procedurer i MySQL steg för steg och några praktiska exempel så att du kan få ut det mesta av dem.
Vad är lagrade procedurer i MySQL?
Lagrade procedurer är uppsättningar av förkompilerade SQL-instruktioner som lagras i MySQL-databasen med ett namn och in- och utdataparametrar.
De kan anropas med namn genom att skicka värden för deras parametrar. När de körs utför de de operationer som definieras inom dem, såsom frågor, uppdateringar, flödeskontrolllogik och mer.
De är som miniprogram som finns i databasen som kapslar in komplexa operationer för:
- Förenkla repetitiva administrativa uppgifter
- Centralisera affärslogik på servern
- Minska klient/servertrafik
- Förbättra prestandan när du förkompilerar en fråga
När de lagras på servern ger de önskvärda funktioner som:
- Modularitet: De bryter ner logiken i hanterbara bitar.
- Återanvändning: Eliminera kodduplicering.
- säkerhet: Behörigheter på procedurnivå.
- Dölja logik: Kunden ser inte interna detaljer.
Kort sagt, lagrade procedurer är ett mycket användbart verktyg för MySQL-utvecklare. Låt oss titta på dess främsta fördelar mer i detalj.
Fördelar med att använda lagrade procedurer
Lagrade procedurer ger viktiga fördelar:
1. Bättre organisation och underhåll av kod
De tillåter komplexa operationer att moduleras till separata, lätthanterliga delar. Koden kan återanvändas från flera ställen genom att anropa den lagrade proceduren.
Detta leder till mer organiserad, underhållbar kod med mindre duplicering.
2. Minskning av trafik mellan klient och server
Genom att lagras på servern minskar överföringen av information eftersom det inte är nödvändigt att skicka SQL-frågor varje gång. Detta förbättrar prestandan.
3. Snabbare operationer och transaktioner
MySQL kompilerar bara proceduren en gång och återanvänder den. Detta påskyndar exekveringen genom att eliminera behovet av att kompilera om varje gång.
Dessutom kan de användas för att kapsla in komplexa transaktioner som kommer att utföras snabbare.
4. Ökad säkerhet och behörigheter
Behörigheter och privilegier kan tilldelas på nivån för lagrad procedur, snarare än att ge full åtkomst till databastabeller.
Detta möjliggör större kontroll över data och operationer som användare kan utföra.
5. Lätt att använda och underhålla av andra utvecklare
Eftersom de delas i databasen kan alla utvecklare med behörigheter utföra procedurerna utan att känna till sin interna kod. För att lära dig mer om behörighetshantering, se Användare i MySQL.
Detta underlättar underhållet och minskar felen.
6. Portabilitet mellan olika applikationer
Eftersom dess logik finns i databasen kan den anropas från vilket programmeringsspråk som helst som stöder den, inklusive att skapa funktioner i MySQL.
Hur man skapar lagrade procedurer i MySQL
Att skapa en lagrad procedur i MySQL är enkelt med SQL-syntax:
SKAPA PROCEDUR procedurnamn()
BÖRJA
instruktioner;
SLUT
Proceduren skapas med ett unikt namn och mellan BEGIN – END placerar vi SQL-satserna som ska köras när den anropas.
Till exempel registrerar den här proceduren en ny försäljning:
SKAPA PROCEDUR insert_sale(
p_värde FLYTTTAL,
p_klient VARCHAR(50)
)
BÖRJA
INSERT INTO sales(värde, kund)
VÄRDEN(p_värde, p_klient);
SLUT
Denna procedur tar emot parametrarna p_valor och p_cliente, infogar en ny försäljning i försäljningstabellen och returnerar det automatiskt genererade ID:t. Om du vill utöka dina kunskaper om datahantering, se MySQL-frågor i PHP med exempel.
Procedurer stöder även mer avancerad kod som lokala variabler, markörer, felhantering med BEGIN-EXCEPTION-END, etc.
Hur man använder lagrade procedurer i MySQL
När den lagrade proceduren väl har skapats kan den anropas i valfri SQL-fråga med CALL:
CALL procedurnamn(parametervärde1, parametervärde2);
Till exempel, för att infoga en rea:
CALL infoga_försäljning(125.50, 'Juan Perez');
Procedurer kan också anropas från vilket programmeringsspråk som helst genom att skicka värden till parametrarna. Som ett exempel, i PHP:
$resultat = $mysqli->query("CALL insert_sale(125.50, 'Juan Perez')");
Och från Java:
CallableStatement stmt = conn.prepareCall("{CALL insert_sale(?, ?)}");
stmt.setDouble(1, 125.50);
stmt.setString(2, "John Perez");
stmt.executeUpdate();
Exempel på lagrade procedurer i MySQL
Låt oss titta på några praktiska exempel för att bättre utnyttja denna kraftfulla MySQL-funktion:
Få total försäljning per kund
SKAPA PROCEDUR total_sales_customer(IN p_customer VARCHAR(50))
BÖRJA
VÄLJ SUMMA(värde) SOM total
FRÅN försäljning
DÄR klient = p_klient;
SLUT
använda:
CALL total_sales_customer('Ana Valdez');
Lista produkter under ett givet pris
SKAPA PROCEDUR billiga_produkter(IN p_pris DECIMAL(10,2))
BÖRJA
VÄLJ ID, namn, pris FRÅN produkter
DÄR pris <= p_pris;
SLUT
använda:
CALL billiga_produkter(500);
Ta bort och infoga poster igen
SKAPA PROCEDUR regenerate_table()
BÖRJA
TA BORT FRÅN min_tabell;
— Infoga nya poster
END;
Användbart för att återskapa testtabeller. För ytterligare information om databasstruktur, se databaselement.
Ring en annan intern procedur
SKAPA PROCEDUR my_procedure()
BÖRJA
CALL annan_procedur();
— fler instruktioner
END;
Låter dig bryta ner i återanvändbara delar.
Överför pengar mellan konton
SKAPA PROCEDUR överföring(
p_cuentaorigen INT,
p_cuentaDestino INT,
p_decimalbelopp(10,2)
)
BÖRJA
STARTA TRANSAKTIONEN;
UPPDATERA konton
SET saldo = saldo – p_belopp
DÄR id = p_cuentaOrigen;
UPPDATERA konton
SET saldo = saldo + p_belopp
DÄR id = p_cuentaDestino;
BEGÅ;
END;
Kapslar in överföringslogiken i en transaktion.
Slutsatser om lagrade procedurer
Lagrade procedurer är en kraftfull funktion i MySQL som alla utvecklare bör behärska. För att lära dig mer om andra relaterade funktioner, se relationsdatabaser.
De låter dig modularisera komplexa operationer, återanvända kod, minska trafiken mellan klient och server, förbättra prestanda och säkerhet.
Förutom lagrade procedurer erbjuder MySQL en mängd olika funktioner som också är viktiga för alla utvecklare. Dessa funktioner gör att specifika och komplexa operationer kan utföras på ett effektivt och modulärt sätt. Några av de mest använda funktionerna i MySQL inkluderar "CONCAT" för att sammanfoga strängar, "SUBSTRING" för att extrahera delsträngar och matematiska funktioner som "ROUND" och "CEIL" för avrundning. och du kan också