SQL-subquery Doe mee met Outer Query

Sql Subquery Doe Mee Met Outer Query



Als het gaat om het werken met relationele databases, moet u beheersen hoe u de query's kunt manipuleren en combineren om de gewenste taken uit te voeren. Dat is de reden waarom elke relationele database-engine zijn smaak van de SQL-taal implementeert door te proberen uitzonderlijke functies, efficiëntie en gebruiksgemak voor zijn gebruikers te bieden.

Een van de krachtigste functies van SQL zijn subquery's. Subquery's zijn een reeks geneste query's binnen een grotere en complexere query. Met subquery's kunt u de gegevens ophalen of complexere bewerkingen uitvoeren als een enkele entiteit.







We kunnen de subquery's gebruiken om gegevens te filteren, sorteren, aggregeren op meerdere tabellen en meer.



Een andere functie die echter verborgen is onder SQL-subquery's, wordt subquery-joins genoemd. Deze zijn vergelijkbaar met subquery's; in plaats daarvan zijn het joins waarmee u de subquery's binnen een outer query kunt gebruiken om de tabellen samen te voegen.



Als uw hoofd tolt, hoeft u zich geen zorgen te maken, want subquery-joins kunnen een uitdaging zijn om onder de knie te krijgen, vooral in het begin. Deze tutorial probeert echter de subquery-joins in elementaire stappen op te splitsen zonder al te veel aan het toeval over te laten.





Houd er rekening mee dat we ervan uitgaan dat u niet nieuw bent met SQL, SQL Joins, SQL Subqueries en dergelijke. Als dat zo is, bekijk dan onze tutorials over de onderwerpen om meer te ontdekken.

Beheers de SQL Outer Joins

Als u wilt begrijpen hoe u met subquery-joins moet werken, is het belangrijk om te leren werken met de outer joins.



Als u niet bekend bent, kunt u met een SQL outer join alle rijen uit de ene tabel ophalen en de overeenkomende rijen uit de tweede tabel. Het is een beetje ingewikkelder dan dat, inclusief de linker outer join, rechter outer join, volledige outer join, etc.

In een SQL left outer join retourneert de query alle rijen uit de linkertabel en de overeenkomende rijen uit de rechtertabel. De query bevat de NULL-waarden in de resulterende kolommen als er geen overeenkomende rijen in de rechtertabel zijn.

In het geval van een right outer join retourneert de query alle rijen uit de rechtertabel, maar alleen de overeenkomende rijen uit de linkertabel. Evenzo bevat de query de NULL-waarden als er geen overeenkomende rijen uit de linkertabel zijn.

Ten slotte hebben we de volledige outer join. Deze join retourneert alle rijen van de rechter- en linkertabellen en de NULL-waarden voor alle niet-overeenkomende records.

SQL-subquery-joins

Nu we de SQL-subquery's begrijpen, gaan we het hebben over subquery-joins. Met subquery-joins kunnen we de subquery's binnen een outer-query gebruiken om aan de tabellen deel te nemen.

Als je het vraagt, is dat het dan? Ja, dat is alles wat subquery joins doen.

Om dit beter te demonstreren, nemen we het volgende syntaxisvoorbeeld dat hieronder wordt gedemonstreerd:

SELECTEER *
VAN tafel1
LINKS BUITEN DOE (
SELECTEER kolom1, kolom2
VAN tafel2
) AS-subquery
AAN tabel1.kolom3 = subquery.kolom1;


In de vorige syntaxis selecteren we alle kolommen uit tabel één met behulp van een left outer join om deze samen te voegen met een subquery. De rol van de subquery is om de gedefinieerde kolommen uit tabel 2 op te halen. We voegen deze vervolgens samen met tabel 1 op voorwaarde dat kolom 2 uit tabel 1 en kolom 1 uit de subquery komen.

Praktisch voorbeeld:

Theoretisch lijkt het minder intuïtief, maar laten we een real-world scenario nemen door de Sakila-database te nemen.

Stel dat we de lijst van alle films in de database en hun respectieve talen willen ophalen. De talen van de films worden opgeslagen in de taaltabel en de filmnamen worden opgeslagen in de filmtabel.

De filmtabel heeft echter een externe sleutel, de kolom 'language_id' uit de taaltabel. Daarom kunnen we een subquery join gebruiken met een left outer join om de twee tabellen samen te voegen, zoals aangetoond in de volgende query:

SELECT f.titel, l.naam AS taal
VAN film f
LINKS BUITEN DOE (
SELECTEER taal_id, naam
UIT taal
) ALS l
AAN f.language_id = l.language_id;


In de vorige voorbeeldquery selecteren we de titelkolom uit de filmtabel en de naamkolom uit de taaltabel.

Vervolgens gebruiken we een subquery om de language_id en de naamkolom uit de talentabel te selecteren. De volgende stap is om het samen te voegen met de filmtabel op voorwaarde dat de language_id van de filmtabel gelijk is aan de language_id van de taaltabel.

Om ervoor te zorgen dat alle films in het resultaat worden opgenomen, moeten we de linker outer join gebruiken die bestaat uit alle resultaten van de linkertabel, in dit geval de filmtafel.

Een voorbeelduitvoer is als volgt:


We kunnen hetzelfde doen met een rechter outer join. De syntaxis is als volgt:

SELECTEER *
VAN tafel1
RECHTS BUITENKANT (
SELECTEER kolom1, kolom2
VAN tafel2
) AS-subquery
AAN tabel1.kolom3 = subquery.kolom1;


Dit gedraagt ​​zich op dezelfde manier, maar omvat alle records in de rechtertabel, zelfs als er geen overeenkomende records zijn.

Handige dingen om te weten

Het is goed om te begrijpen dat, hoewel de subquery-joins ongelooflijk nuttig zijn en uw workflow kunnen optimaliseren, u er voorzichtig mee moet zijn.

Vermijd bijvoorbeeld het gebruik van subquery-joins bij een grote dataset. Dit komt omdat ze de uitgebreide records kunnen retourneren die van invloed kunnen zijn op de databaseprestaties.

Overweeg om de hulpprogramma's voor het analyseren van query's te gebruiken voordat u subquery-joins uitvoert.

Conclusie

Deze zelfstudie verkende de grondbeginselen van het werken met subquery's en subquery-joins in SQL. Aan het einde van deze zelfstudie begrijpt u nu hoe u met subquery-joins werkt, waarom u ze mogelijk moet gebruiken en een praktisch voorbeeld van hoe ze u kunnen helpen in uw workflow.