Sütun Sayısı ve Tür Uyumluluğu
Sonuç kümelerinin birleştirilebilmek için karşılaması gereken kuralları ve yaygın uyumsuzluk hatalarını öğrenin.
Sütun Sayısı ve Tür Uyumluluğu, CoddyKit'te ücretsiz bir Coding Interview Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Coding Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Coding Interview Prep kursu toplamda 4 dersten oluşur.
Mülakatçıların Sorguladığı Uyumluluk Kuralları
Her küme işlemi (UNION, INTERSECT, EXCEPT), iki sonuç kümesinin UNION ile uyumlu olmasını gerektirir. Mülakatçılar bunu, bu sorguların fark edilmeden bozulabileceği yolları bilip bilmediğinizi görmek için sorar.
Uyumluluğu iki kural belirler: sütun sayısının eşleşmesi ve konum konum uyumlu veri türleri. Bunlardan biri yanlış olursa hata veya şaşırtıcı bir sonuç alırsınız.
Kural 1: Aynı Sayıda Sütun
Her iki sorgu da aynı sayıda sütun döndürmelidir. İlk sorgu üç sütun, ikinci sorgu iki sütun döndürürse veritabanı ifadeyi reddeder.
Bu, özellikle biri dallardan birini düzenleyip diğerini unuttuğunda, mülakatlarda karşılaşılan en yaygın küme işlemi hatasıdır.
SELECT id, name, city FROM a
UNION
SELECT id, name FROM b;
-- ERROR: each UNION query must have the same number of columnsKural 2: Konuma Göre Uyumlu Türler
Sütunlar adlarına göre değil, konumlarına göre eşleştirilir. Birinci sorgunun ilk sütunu, ikinci sorgunun ilk sütunuyla; ikinci sütunu da ikinci sütunuyla eşleşir. Her çiftin uyumlu türlere sahip olması gerekir.
Uyumlu olması genellikle örtük olarak dönüştürülebilir olması demektir: INT ile BIGINT uygundur, INT ile DATE ise genellikle uygun değildir.
SELECT id, signup_date FROM a
UNION
SELECT id, signup_date FROM b;
-- positions: (int,date) vs (int,date) -> OKÖnemli Olan Ad Değil, Konumdur
İnce bir tuzak şudur: Türler açısından konumlar eşleştiği sürece sütunların farklı adları olabilir ve yine de birleştirilebilir. Buna karşılık, adları eşleşen sütunları yanlış sıraya koymak verilerin hizasını bozar.
Küme işlemlerini her zaman sütunları konumlarına göre okuyun. Mülakatçılar bunu sınamak için sütunların yerlerini değiştirir.
SELECT name, id FROM a
UNION ALL
SELECT id, name FROM b;
-- name<->id swapped: types may clash or data lands in wrong columnÇıktı Sütun Adları
Sonuç kümesi sütun adlarını ilk sorgudan alır. İkinci sorgunun etiketleri atılır. Başlıkları denetlemek için sütunlara ilk dalda takma ad verin.
Bu nedenle sonraki bir ORDER BY, ilk sorgunun adlarına veya sıra numaralarına başvurmalıdır.
SELECT id AS user_id, city AS location FROM a
UNION ALL
SELECT id, town FROM b;
-- output headers: user_id, locationÖrtük Tür Dönüştürme
Konumlarına göre eşleşen iki sütun farklı ancak uyumlu türlere sahip olduğunda, motor her ikisini taşıyacak kadar geniş bir sonuç türü seçer. INT ile DECIMAL birleştirildiğinde genellikle sonuç DECIMAL olur.
Bir mülakatta bu dönüşümden söz etmek, konuyu derinlemesine bildiğinizi gösterir: sütunun hata vermediğini, daha geniş türe yükseltildiğini bilirsiniz.
SELECT amount FROM int_table -- INT
UNION ALL
SELECT amount FROM dec_table; -- DECIMAL
-- result column is DECIMALEksik Sütunları NULL ile Doldurma
İki sorgunun yapısı doğal olarak farklı olduğunda, yer tutucu sütunlar ekleyerek bunları hizalayabilirsiniz. Yaygın bir teknik, diğer dalda bulunan bir alanı doldurmak için NULL seçmektir; NULL çoğu zaman bir türe dönüştürülür.
NULL değerini dönüştürmek, motorun bir tür tahmin etmesini önler ve sütunların uyumlu kalmasını sağlar.
SELECT id, phone, CAST(NULL AS VARCHAR) AS email FROM a
UNION ALL
SELECT id, CAST(NULL AS VARCHAR), email FROM b;Uygulamalı Tür Uyumsuzluğu Hatası
Burada bir daldaki ikinci sütun DATE, diğerindeki ise metindir. Katı motorlar bunu reddeder; esnek olanlar öngörülemez biçimde dönüştürebilir. Güvenli çözüm, her iki tarafın da aynı türü kullanmasını sağlamak için açık bir CAST uygulamaktır.
Mülakatlarda örtük dönüşüme güvenmek yerine açık dönüşüm önermelisiniz.
SELECT id, CAST(event_date AS VARCHAR) FROM a
UNION ALL
SELECT id, label FROM b;
-- both second columns now VARCHAR -> compatibleBu Kurallar Tüm Küme İşleçleri İçin Geçerlidir
Sütun sayısı ve tür uyumluluğu kuralları özdeştir ve UNION, UNION ALL, INTERSECT ile EXCEPT için aynıdır. Bunların hepsi sonuç kümelerini dikey olarak üst üste ekler ve UNION ile uyumlu girdiler gerektirir.
Bu nedenle her küme işlemi için tek bir zihinsel kontrol listesi yeterlidir: sütunları sayın, türleri konuma göre denetleyin ve adları ilk sorgudan yönetin.
SELECT id, city FROM a
INTERSECT
SELECT id, city FROM b;
-- same compatibility rules as UNIONÖn Kontrol Listesi
Sonuç kümelerini birleştirmeden önce şunları doğrulayın:
- Her dalda aynı sayıda sütun bulunması.
- Konuma göre eşleşen her çiftin tür açısından uyumlu olması (emin değilseniz dönüştürün).
- Sütunların aynı mantıksal sırada bulunması.
- Temiz çıktı adları için takma adların ilk sorguda belirlenmesi.
Bu kontrol listesini mülakatta sesli olarak uygulamak, fark edilmeyen hizalama hatalarını önler.
Hepsini Bir Araya Getirme
Uyumluluk hatalarının çoğu önlenebilir. Sütun sayıları farklı olduğunda hatalar açıkça görülür; sütunlar yer değiştirdiğinde veya beklenmedik biçimde dönüştürüldüğünde ise sessizce ortaya çıkar. Sorguları sütun konumlarına göre okumak ve dönüşümleri bilinçli yapmak, küme işlemlerini doğru tutar.
Kendinden emin bir yanıt her iki kuralı da belirtir, konuma göre eşleştirmeden söz eder ve çıktı adlarının ilk sorgudan geldiğini vurgular.
Hızlı Kontrol
SQL, iki UNION dalındaki hangi sütunların birbirine karşılık geldiğine nasıl karar verir?
Özet
Önemli noktalar:
- Tüm küme işleçleri, her dalda aynı sütun sayısını gerektirir.
- Sütunlar konuma göre eşleştirilir ve her çift tür açısından uyumlu olmalıdır.
- Uyumlu türler daha geniş ve ortak bir türe dönüştürülebilir.
- Farklı yapıdaki sonuçları doldurmak için
CAST(NULL AS type)kullanın. - Çıktı adları ilk sorgudan gelir.
Sıkça Sorulan Sorular
“Sütun Sayısı ve Tür Uyumluluğu” dersi ücretsiz mi?
Evet — “Sütun Sayısı ve Tür Uyumluluğu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Coding Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Coding Interview Prep kursu toplamda 4 dersten oluşur.
“Sütun Sayısı ve Tür Uyumluluğu” dersinde ne öğreneceğim?
Sonuç kümelerinin birleştirilebilmek için karşılaması gereken kuralları ve yaygın uyumsuzluk hatalarını öğrenin. Coding Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Coding Interview Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Coding Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Sütun Sayısı ve Tür Uyumluluğu” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Coding Interview Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Coding Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- UNION ve UNION ALL Karşılaştırması
- Sütun Sayısı ve Tür Uyumluluğu
- Karşılaştırma için INTERSECT ve EXCEPT
- Küme İşlemlerini Birleştirmelerle Taklit Etme