SQL (strukturerat frågespråk) anses vara ett icke-proceduralt språk eftersom det fokuserar på * vilka * data att hämta, inte * hur * att hämta det. Däremot specificerar procedurspråk de exakta stegen som datorn måste vidta för att uppnå ett resultat.
Här är vad som gör SQL icke-procedural:
* deklarativ natur: Du beskriver önskat resultat (t.ex. "Välj alla kunder från" kunder "-tabellen där landet är" USA "), och SQL -motorn bestämmer det mest effektiva sättet att utföra frågan. Du dikterar inte de specifika algoritmerna eller stegen.
* Optimering efter databassystemet: Databashanteringssystemet (DBMS) ansvarar för att skapa en exekveringsplan - en sekvens av operationer - för att uppnå önskat resultat. Denna plan kan involvera indexering, sammanfogningar, sortering och andra tekniker som är öppna för användaren. Användaren anger inte hur dessa operationer utförs.
* setorienterade operationer: SQL fungerar på uppsättningar av data (tabeller) snarare än enskilda poster. Ett enda SQL -uttalande kan manipulera tusentals eller miljoner rader samtidigt. Detta står i kontrast till procedurspråk, som vanligtvis behandlar data en post åt gången.
däremot skulle ett procedurspråk (som C eller Python) kräva att du skriver kod som uttryckligen:
1. Öppnar databasanslutningen.
2. Upptäckt genom varje post i "kunder" -tabellen.
3. Kontrollerar varje skivans land.
4. Om landet är 'USA', lägger till posten till en resultatuppsättning.
5. Stänger databasanslutningen.
SQL sammanfattar alla dessa steg, vilket gör det mycket enklare och effektivare för datamanipuleringsuppgifter, särskilt när man hanterar stora datasätt. "Hur" lämnas till databassystemets optimering.