Voorbereiding op SQL-sollicitatiegesprekken · Les

Compatibiliteit van aantal en typen kolommen

De regels waaraan resultatensets moeten voldoen om te kunnen worden gecombineerd en veelvoorkomende fouten door afwijkingen

Les 2 van 413 stappen

Compatibiliteit van aantal en typen kolommen is een gratis Voorbereiding op SQL-sollicitatiegesprekken-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op SQL-sollicitatiegesprekken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

De compatibiliteitsregels waarop interviewers letten

Elke setbewerking (UNION, INTERSECT, EXCEPT) vereist dat de twee resultaatsets compatibel zijn. Interviewers vragen hiernaar om te zien of je de minder opvallende manieren kent waarop deze queries kunnen misgaan.

Twee regels bepalen de compatibiliteit: een gelijk aantal kolommen en compatibele gegevenstypen per positie. Als één van beide niet klopt, krijg je een foutmelding of een verrassend resultaat.

Regel 1: hetzelfde aantal kolommen

Beide queries moeten hetzelfde aantal kolommen selecteren. Als de eerste query drie kolommen oplevert en de tweede twee, wijst de database de query af.

Dit is de meest voorkomende fout met setbewerkingen in sollicitatiegesprekken, vooral nadat iemand één tak heeft aangepast en de andere is vergeten.

SELECT id, name, city FROM a
UNION
SELECT id, name FROM b;
-- ERROR: each UNION query must have the same number of columns

Regel 2: compatibele typen per positie

Kolommen worden op positie, niet op naam gekoppeld. De eerste kolom van query één wordt gekoppeld aan de eerste kolom van query twee, enzovoort. Elk paar moet compatibele typen hebben.

Compatibel betekent meestal dat de waarden impliciet kunnen worden geconverteerd: INT en BIGINT zijn prima; INT en DATE meestal niet.

SELECT id, signup_date FROM a
UNION
SELECT id, signup_date FROM b;
-- positions: (int,date) vs (int,date) -> OK

De positie, niet de naam, is bepalend

Een subtiele valkuil: de kolommen mogen verschillende namen hebben en toch worden gecombineerd, zolang de posities en typen overeenkomen. Omgekeerd kunnen gelijke namen in de verkeerde volgorde de gegevens verkeerd uitlijnen.

Lees setbewerkingen altijd per kolompositie. Interviewers zetten expres verwisselde kolommen neer om dit te toetsen.

SELECT name, id FROM a
UNION ALL
SELECT id, name FROM b;
-- name<->id swapped: types may clash or data lands in wrong column

De namen van de uitvoerkolommen

De resultaatset neemt zijn kolomnamen uit de eerste query. De labels van de tweede query worden weggegooid. Geef de kolommen in de eerste tak een alias om de kopteksten te bepalen.

Daarom moet een daaropvolgende ORDER BY verwijzen naar de namen uit de eerste query of rangtelposities gebruiken.

SELECT id AS user_id, city AS location FROM a
UNION ALL
SELECT id, town FROM b;
-- output headers: user_id, location

Impliciete typeconversie

Wanneer twee kolommen die per positie aan elkaar zijn gekoppeld verschillende maar compatibele typen hebben, kiest de database-engine een resultaatstype dat breed genoeg is voor beide. Een combinatie van INT en DECIMAL levert meestal DECIMAL op.

Als je deze conversie in een sollicitatiegesprek noemt, laat je zien dat je de details begrijpt: de kolom veroorzaakt geen fout, maar wordt omgezet naar het bredere type.

SELECT amount FROM int_table   -- INT
UNION ALL
SELECT amount FROM dec_table;  -- DECIMAL
-- result column is DECIMAL

Ontbrekende kolommen aanvullen met NULL

Wanneer twee queries van nature een andere vorm hebben, breng je ze op één lijn door placeholderkolommen toe te voegen. Een veelgebruikte techniek is NULL selecteren, vaak geconverteerd naar een type, om een positie op te vullen die de andere tak wel heeft.

Door NULL naar een type te converteren, voorkom je dat de database-engine zelf een type moet raden en houd je de kolommen compatibel.

SELECT id, phone, CAST(NULL AS VARCHAR) AS email FROM a
UNION ALL
SELECT id, CAST(NULL AS VARCHAR), email FROM b;

Een uitgewerkt voorbeeld van een fout door niet-overeenkomende typen

Hier is de tweede kolom in de ene tak een datum en in de andere een tekenreeks. Strikte database-engines wijzen dit af; soepelere engines kunnen de waarden onvoorspelbaar converteren. De veilige oplossing is een expliciete CAST, zodat beide kanten hetzelfde type gebruiken.

Stel in sollicitatiegesprekken een expliciete typeconversie voor in plaats van te vertrouwen op impliciete conversie.

SELECT id, CAST(event_date AS VARCHAR) FROM a
UNION ALL
SELECT id, label FROM b;
-- both second columns now VARCHAR -> compatible

Deze regels gelden voor alle setoperatoren

De regels voor het aantal kolommen en typecompatibiliteit zijn identiek voor UNION, UNION ALL, INTERSECT en EXCEPT. Ze stapelen allemaal resultaatsets verticaal en vereisen allemaal compatibele invoer voor setbewerkingen.

Eén mentale checklist volstaat dus voor elke setbewerking: tel de kolommen, controleer de typen per positie en bepaal de namen vanuit de eerste query.

SELECT id, city FROM a
INTERSECT
SELECT id, city FROM b;
-- same compatibility rules as UNION

De controle vóór uitvoering

Controleer het volgende voordat je resultaatsets combineert:

  • Elke tak heeft hetzelfde aantal kolommen.
  • Elk paar op dezelfde positie heeft compatibele typen (voer een typeconversie uit als je twijfelt).
  • De kolommen staan in dezelfde logische volgorde.
  • In de eerste query zijn aliassen ingesteld voor duidelijke uitvoernamen.

Als je deze checklist hardop doorloopt in een sollicitatiegesprek, voorkom je onopvallende fouten door verkeerde uitlijning.

Alles met elkaar verbinden

Compatibiliteitsproblemen zijn meestal te voorkomen. De fouten zijn duidelijk wanneer aantallen kolommen verschillen, maar onopvallend wanneer kolommen zijn verwisseld of onverwacht zijn geconverteerd. Door queries per kolompositie te lezen en bewust typeconversies uit te voeren, blijven setbewerkingen correct.

Een zelfverzekerd antwoord noemt beide regels, vermeldt dat kolommen per positie worden gekoppeld en merkt op dat de uitvoernamen uit de eerste query komen.

Snelle controle

Hoe bepaalt SQL welke kolommen van twee UNION-takken bij elkaar horen?

Samenvatting

Belangrijkste punten:

  • Alle setoperatoren vereisen in elke tak hetzelfde aantal kolommen.
  • Kolommen worden per positie gekoppeld en elk paar moet typecompatibel zijn.
  • Compatibele typen kunnen worden geconverteerd naar een breder gemeenschappelijk type.
  • Gebruik CAST(NULL AS type) om vormen die van elkaar verschillen aan te vullen.
  • De uitvoernamen komen uit de eerste query.
Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “Compatibiliteit van aantal en typen kolommen” gratis?

Ja — de volledige tekst van “Compatibiliteit van aantal en typen kolommen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op SQL-sollicitatiegesprekken wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Wat leer ik in “Compatibiliteit van aantal en typen kolommen”?

De regels waaraan resultatensets moeten voldoen om te kunnen worden gecombineerd en veelvoorkomende fouten door afwijkingen Je oefent met Voorbereiding op SQL-sollicitatiegesprekken door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Voorbereiding op SQL-sollicitatiegesprekken te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op SQL-sollicitatiegesprekken op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Compatibiliteit van aantal en typen kolommen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op SQL-sollicitatiegesprekken?

Ja. Elke les over Voorbereiding op SQL-sollicitatiegesprekken bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. UNION versus UNION ALL
  2. Compatibiliteit van aantal en typen kolommen
  3. INTERSECT en EXCEPT voor vergelijkingen
  4. Setbewerkingen nabootsen met joins
← Terug naar Voorbereiding op SQL-sollicitatiegesprekken