SQL-query's zijn het vlees en de aardappelen van RDBMS CRUD (creëren, lezen, bijwerken, verwijderen). Maar wanneer uw applicatie- of bedrijfsdatabase groeit, wordt de behoefte aan intelligente query's om voorwaardelijke, vereiste-specifieke gegevens op te halen een must-have.
SQL is relatief veelomvattend en omvat veel functionaliteiten, die elk zeer geschikt zijn voor verschillende zakelijke toepassingen. Een dergelijke functionaliteit omvat het gebruik van subquery's.
Om uw codes efficiënt en effectief te maken, kunt u subquery's binnen uw SQL-codes gebruiken om gegevens op te halen, bestaande variabelen te manipuleren en meerdere doelen in één keer te bereiken.
Wat zijn SQL-subquery's?
Een subquery is een geneste query, die werkt als een parameter binnen een andere hoofdquery. De subquery is een innerlijke vraag, terwijl de belangrijkste vraag de. is buitenste vraag.
De subquery retourneert vermoedelijk de gegevens als een argument tussen haakjes voor de hoofdquery, terwijl de hoofdquery het uiteindelijke resultaat verder ophaalt.
Sub-query's zijn ingebed in de Selecteer verklaring of in de Waar clausule. Een dergelijke structuur stelt de subquery in staat zich te gedragen als een goed beschreven datafiltratievoorwaarde. Helaas kunnen subquery's alleen de. gebruiken Groeperen op commando's en niet Bestellen door commando's, aangezien deze alleen in de hoofdquery zijn toegestaan.
Verwant: Alles wat u moet weten over de SQL GROUP BY-instructie
Gewoonlijk bestaat elke subquery uit een enkele kolom met de Selecteer clausule. Er zijn echter scenario's waarin de hoofdquery meerdere kolommen heeft. Een subquery kan worden genest binnen een andere subquery, waardoor het een geneste subquery wordt.
De strictuur van een subquery is als volgt:
Selecteer kolomnaam uit tabel waar voorwaarde=
(SELECT conditional_column FROM tabel) als alias;
Stel dat u bijvoorbeeld de volgende tabel heeft:
ID kaart | Voornaam | Tweede naam | Agency_fee |
1 | John | Lont | 5000 |
2 | Robert | Graham | 4000 |
3 | Stephen | Hicks | 8000 |
4 | Bob | Marley | 1000 |
5 | Maria | Ellen | 9000 |
Als u in deze tabel de namen wilt ophalen van mensen die meer verdienen dan de gemiddelde bemiddelingskosten, kunt u een subquery schrijven in plaats van meerdere regels code te schrijven.
Verwant: Een tabel maken in SQL
Zo ziet de query eruit:
Selecteer * van agent_details
waar Agency_Fee > (selecteer gem (Agency_Fee) van agent_details);
Het commando voor de > teken is de buitenste vraag, terwijl alles na de > teken is de innerlijke vraag.
De inner query berekent de gemiddelde bemiddelingskosten binnen de subquery, en de outer query toont alle waarden die groter zijn dan de berekende gemiddelde waarde.
Hoe subquery's in SQL te gebruiken?
Er zijn een paar verschillende manieren waarop u subquery's in SQL kunt gebruiken.
Subquery's met Where-clausule
Een van de meest elementaire structuren van een subquery in SQL is binnen de Where-component. Het is de eenvoudigste manier om te definiëren waarnaar u op zoek bent. De select-instructie retourneert waarden volgens de subqueryvoorwaarde(n) en gebruikt deze als een parameter voor de hoofdquery.
Zoekopdrachtstructuur:
selecteer * uit tabelnaam
waar kolomnaam = (selecteer kolomnaam uit tabelnaam);
Laten we dit uitleggen met een voorbeeld.
Stel dat u de op één na hoogste bemiddelingskosten wilt vinden in de tabel agentschap_details. Om dit te doen, zijn er alternatieve functies binnen SQL; desalniettemin is de beste methode om een subquery te gebruiken.
U kunt de subquery als volgt definiëren:
selecteer *, max (Agency_fee)
van agent_details
waar Agency_fee < (selecteer max (Agency_fee) uit agent_details);
De resulterende verklaring zal u laten zien: 8000, wat de op één na hoogste vergoeding in de gegeven tabel is. Wanneer de query wordt uitgevoerd, berekent de subquery de maximale waarde uit de lijst met vergoedingen. Het hoogste bedrag (9000) wordt in het geheugen opgeslagen.
Nadat dit deel is berekend, wordt het tweede deel van de zoekopdracht berekend, waarbij de op één na hoogste vergoeding uit de tabel wordt gevonden (aangezien de < teken wordt gebruikt). Het eindresultaat is 8000, wat de op één na hoogste vergoeding in de tabel is.
Subquery's binnen de From-clausule
Een andere variatie binnen subquery's is het doorgeven van de voorwaarde in de van clausule. Als een soortgelijk concept wordt eerst de innerlijke query verwerkt en daarna de buitenste query. De innerlijke query filtert op de gegevens en geeft resultaten weer waarbij ID = 3.
Hier is de vraag ter referentie:
selecteer een.* van (
selecteer agency_fee van agent_details
waarbij ID= 3) als een;
Dit is een zeer basale structuur; hoe complexer uw gegevenstabellen echter zijn, u krijgt meer gegevensrijen die aan uw voorwaarden voldoen.
Subquery's gebruiken met invoegen in instructie
Als u een bestaande tabel wilt bijwerken met enkele nieuwe gegevensrijen, kunt u de Invoegen in stelling. Een subquery kan heel voordelig blijken te zijn, als u waarden wilt toevoegen op basis van een specifieke voorwaarde(n).
Zoekopdrachtstructuur:
invoegen in tabelnaam
selecteer * uit tabelnaam
waarbij kolomnaam = voorwaarden;
selecteer * uit tabelnaam;
Hier is een voorbeeld van hoe u de instructie insert into kunt gebruiken met de subquery:
invoegen in agent_details
selecteer * van agent_details
waar agency_fee in (1000, 5000);
selecteer * van agent_details;
Zodra de query is uitgevoerd, worden de waarden die overeenkomen met de voorwaarde opnieuw in de bestaande tabel ingevoegd. De selecteer * reference pakt alle kolommen samen en voegt deze in de agent_details tabel in zoals het is. De in statement wordt gebruikt om meerdere filtervoorwaarden tegelijk te definiëren.
Subquery's gebruiken met update-instructie
Er zijn situaties waarin u de onderliggende tabellen wilt bijwerken terwijl u de query's uitvoert. Om dit te doen, kunt u de bijwerken statement samen met de query-commando's.
Dit is hoe u de subquery schrijft om de informatie in de tabel in één keer bij te werken:
tabelnaam bijwerken
set column_name = nieuwe_waarde
waar kolomnaam =
(selecteer column_name van table_name waar =);
Hier is een voorbeeld dat het gebruik van de update-instructie laat zien:
UPDATE agent_details
SET agency_fee = 35000
WHERE agency_fee =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
selecteer * van agent_details;
De subquery filtert op de kolom agency_fee en selecteert de rij(en) waar First_Name overeenkomt John. De buitenste zoekopdracht wordt vervolgens uitgevoerd, waarbij de bemiddelingskosten worden bijgewerkt naar 35000 voor John Wick.
Je kunt een doorgeven selecteer * verklaring om de eindresultaten te controleren; u zult merken dat de bemiddelingskosten voor John Wick zijn bijgewerkt naar 35000, omdat er alleen een exemplaar is dat voldoet aan de voorwaarden die in de zoekopdracht zijn gedefinieerd.
Subquery's gebruiken met verwijderinstructie
Net als de update-instructie, waarin u de rijen met gegevens binnen een bestaande tabel bijwerkt, is de verwijderen instructie verwijdert rij (en) met gegevens op basis van een voorwaarde.
De structuur van de verwijderopdracht is:
verwijderen uit tabelnaam waar variabele/kolomnaam =
(selecteer column_name van table_name waar = voorwaarde);
Hier is een voorbeeld:
Verwijderen uit agent_details
waar Voornaam IN
(selecteer First_name van agent_details waar agency_fee = 9000);
selecteer * van agent_details;
Subquery's gebruiken binnen SQL
Subquery's zijn een uitstekende functie binnen SQL, die u kan behoeden voor het schrijven van eindeloze regels onnodige code. Wanneer u de basisfunctionaliteiten van subquery's kunt gebruiken om uw biedingen uit te voeren, hoeft u zich nooit zorgen te maken over de complexiteit van SQL-codering.
Het is altijd het beste om uw bestaande SQL-kennis te verbeteren om ervoor te zorgen dat u altijd op de hoogte bent van uw spel. Wees gerust, SQL-spiekbriefjes kunnen u in één oogopslag een goed idee geven over hoe u uw basiskennis kunt opfrissen.
Meer weten over SQL? Het beheersen van de verschillende SQL-querycommando's is een geweldige manier om vooruit te komen.
Lees volgende
- Programmeren
- Programmeren
- SQL
- Programmeerhulpmiddelen
Gaurav Siyal heeft twee jaar schrijfervaring en schreef voor een reeks digitale marketingbedrijven en documenten over de levenscyclus van software.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren