SQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS
Alt sorgu, başka bir sorgunun içindeki sorgudur. Her türü ve nereye uyduğunu öğrenin, ilişkili alt sorguları doğru şekilde anlayın ve sessizce hiçbir satır döndürmeyen NOT IN tuzağından kaçının.
- Alt sorgu, başka bir sorgunun içine yerleştirilmiş bir sorgudur ve dış sorgu bunun sonucunu kullanır.
- Alt sorgular
WHERE,FROM,SELECTveHAVING‘te görünebilir. - İlişkili bir alt sorgu dış satırı ifade eder, dolayısıyla satır başına mantıksal olarak değerlendirilir.
- NULL’lar mümkün olduğunda
NOT EXISTSilaNOT IN‘yi tercih edin.
Bazı soruların cevaplanması iki adım gerektirir. “Hangi siparişler ortalamanın üzerinde?” önce ortalamayı bulmanızı ve ardından her siparişi onunla karşılaştırmanızı gerektirir. SQL alt sorguları her iki adımı da tek bir ifade olarak yazmanıza olanak tanır.
Bu eğitimde iki küçük tablo kullanılarak her tür ele alınmaktadır. Bu sorguları SQLite 3.50’de çalıştırdık ve gösterilen sonuçlar bu çalıştırmadan geldi. Standart alt sorgu sözdizimi geniş çapta desteklenir ve veritabanlarının farklılık gösterdiği yerlere işaret ederiz.
Alt sorgu nedir?
İç sorgu veya iç içe geçmiş sorgu olarak da adlandırılan bir alt sorgu, başka bir ifadenin içine yuvarlak parantez içinde yerleştirilen bir SELECT ifadesidir. Kavramsal olarak iç sorgu, dış sorgunun daha sonra kullanacağı bir sonuç üretir.
SELECT id, total
FROM orders
WHERE total > (SELECT AVG(total) FROM orders);
Örnek tablolar
CREATE TABLE customers (id INT, name TEXT, city TEXT);
CREATE TABLE orders (id INT, customer_id INT, total INT);
INSERT INTO customers VALUES
(1,'Asha','Pune'), (2,'Ben','Delhi'), (3,'Chitra','Pune'), (4,'Dev','Goa');
INSERT INTO orders VALUES
(101,1,1200), (102,1,800), (103,2,300), (104,3,2500), (105,3,100);
Dev’in herhangi bir emri olmadığını unutmayın. Bu ayrıntı aşağıdaki birkaç örnek için önemlidir.
Bir bakışta alt sorgu türleri
| Tür | İade | Tipik konum | Ortak operatörler |
|---|---|---|---|
| Skaler | Tek değer | WHERE, SELECT |
=, >, < |
| Çok sıralı | Bir sütun, birçok satır | NEREDE |
IN, ANY, ALL |
| Tablo (türetilmiş) | Birçok sütun ve satır | BAŞLANGIÇ |
Masa gibi kullanılır |
| ilişkili | Dış sıraya bağlıdır | WHERE, SELECT |
Herhangi biri ve EXISTS |
Skaler alt sorgular
Skaler bir alt sorgu tam olarak bir değer döndürür, böylece onu tek bir değerin anlamlı olduğu her yerde kullanabilirsiniz. İşte daha önceki sorgunun sonucu. Tüm siparişlerin ortalaması 980’dir:
SELECT id, total
FROM orders
WHERE total > (SELECT AVG(total) FROM orders);
-- 101 | 1200
-- 104 | 2500
WHERE‘de toplamalara doğrudan izin verilmediğinden WHERE total > AVG(total) yazamazsınız. Alt sorgu, değeri ayrı olarak hesaplayarak bu sorunu çözer.
Bir “skaler” alt sorgu birkaç satır döndürürse ne olur? PostgreSQL, MySQL ve SQL Server da dahil olmak üzere çoğu veritabanı hataya neden olur. SQLite bunu yapmaz. Testimizde, gerçek bir hatayı gizleyebilecek yalnızca ilk satırı sessizce kullandı, bu nedenle bu davranışa güvenmeyin.
İÇİNDE ve İÇİNDE DEĞİL
İç sorgu bir liste döndürdüğünde IN kullanın. Bu, 1000’in üzerinde en az bir siparişi olan müşterileri bulur:
SELECT name FROM customers
WHERE id IN (SELECT customer_id FROM orders WHERE total > 1000);
-- Asha
-- Chitra
NOT IN ise tam tersini yaparak daha önce hiç sipariş vermemiş müşterileri buluyor:
SELECT name FROM customers
WHERE id NOT IN (SELECT customer_id FROM orders);
-- Dev
Bu burada işe yarıyor, ancak NOT IN‘in aşağıda ele alacağımız tehlikeli bir durumu var.
FROM içindeki alt sorgular
FROM‘deki bir alt sorgu, genellikle türetilmiş tablo olarak adlandırılan geçici bir tablo görevi görür. Her şehirdeki müşteri başına ortalama harcama için bu sorguda olduğu gibi, iki kez toplama yapmanız gerektiğinde kullanışlıdır:
SELECT city, AVG(spent) AS avg_spent
FROM (
SELECT c.city, SUM(o.total) AS spent
FROM customers c
JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.city
) AS per_customer
GROUP BY city;
-- Delhi | 300.0
-- Pune | 2300.0
İç sorgu her müşterinin toplamını alır ve dış sorgu bu toplamların ortalamasını alır. Türetilmiş tabloya bir takma ad vermek, bazı veritabanlarının gerektirdiği gibi iyi bir alışkanlıktır. GROUP BY sizin için yeniyse, bkz. SQL GROUP BY ve HAVING.
SELECT’teki alt sorgular
Skaler bir alt sorgu aynı zamanda hesaplanmış bir sütun da ekleyebilir. Bu, müşteri başına siparişleri sayar:
SELECT name,
(SELECT COUNT(*) FROM orders o WHERE o.customer_id = c.id) AS order_count
FROM customers c;
-- Asha | 2
-- Ben | 1
-- Chitra | 2
-- Dev | 0
Dev sıfırla görünür. Dev’in eşleşen satırı olmadığı için bir iç birleştirme Dev’i tamamen düşürürdü. Aynı sonucu LEFT JOIN ve GROUP BY ile de elde edebilirsiniz; bunu SQL birleşimlerinin açıklanması bölümünde açıklıyoruz.
İlişkili alt sorgular
Önceki örnek de ilişkilidir, çünkü iç sorgu dış sorgudaki c.id‘e atıfta bulunur. İlişkili olmayan bir alt sorgu tek başına çalıştırılabilir. İlişkili olan bunu yapamaz çünkü mevcut dış satırdaki bir değere bağlıdır.
Bu, aynı müşterinin kendi ortalamasının üzerindeki siparişleri bulur:
SELECT o.id, o.customer_id, o.total
FROM orders o
WHERE o.total > (
SELECT AVG(i.total)
FROM orders i
WHERE i.customer_id = o.customer_id
);
-- 101 | 1 | 1200
-- 104 | 3 | 2500
İşte nasıl okunacağı. Sipariş 101 için, iç sorgu müşteri 1’in siparişlerinin (1200 ve 800) ortalamasını alır ve bu da 1000 sonucunu verir. 1200 daha büyük olduğundan satır korunur. 102. sipariş için de aynı ortalama geçerlidir ancak 800 daha büyük olmadığından düşürülür. Müşteri 2’nin tek siparişi kendi ortalamasına eşit olduğundan o da düşürülür.
| Özellik | İlişkisiz | ilişkili |
|---|---|---|
| Dış sorgu değerlerini kullanıyor mu? | Hayır | Evet |
| Kendi başına koşabilir mi? | Evet | Hayır |
| Mantıksal yürütme | Bir kez | Dış satır başına bir kez |
| Performans riski | Genellikle düşük | Büyük masalarda yüksek olabilir |
“Satır başına bir kez” mantığı açıklar ve sorgu iyileştiriciler genellikle bunları çok daha verimli bir şekilde yeniden yazar. Yine de yavaş korelasyonlu bir alt sorgu araştırmaya değer. Buradaki orders.customer_id iç sütundaki bir indeks büyük bir fark yaratabilir. Bkz. SQL dizinlerinin açıklaması.
VAR ve MEVCUT DEĞİL
EXISTS evet veya hayır sorusu sorar: iç sorgu en az bir satır döndürüyor mu? İlk maçta durabilir ve içeride ne seçtiğinizin bir önemi yoktur, bu yüzden insanlar sıklıkla SELECT 1 yazıyor.
SELECT c.name FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
-- Asha, Ben, Chitra
SELECT c.name FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
-- Dev
NOT IN NULL tuzağı
Bu en yaygın alt sorgu hatalarından biridir. Bir gerçek kimlik ve bir NULL içeren bir tablo oluşturduk ve ardından her iki formu da bu tabloya karşı çalıştırdık:
CREATE TABLE r (customer_id INT);
INSERT INTO r VALUES (1), (NULL);
SELECT name FROM customers
WHERE id NOT IN (SELECT customer_id FROM r);
-- (no rows at all)
SELECT c.name FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM r WHERE r.customer_id = c.id);
-- Ben, Chitra, Dev
Neden ilki hiçbir şey döndürmüyor? id NOT IN (1, NULL), id <> 1 AND id <> NULL anlamına gelir. NULL ile yapılan herhangi bir karşılaştırma doğru olmaktan çok bilinmez, dolayısıyla koşulun tamamı asla doğru olamaz. Hiçbir hata mesajı veya uyarı yok, yalnızca makul görünen boş bir sonuç var.
İpucu: Birleşme önleme için varsayılan olarak NOT EXISTS‘yi kullanın. NOT IN kullanıyorsanız alt sorgunun içine WHERE customer_id IS NOT NULL ekleyin.
Alt sorgu vs JOIN vs CTE
Birçok sorgu birden fazla şekilde yazılabilir. Daha önce IN kullanarak büyük sipariş veren müşteriler bulmuştuk. İşte bir birleştirmeyle aynı sonuç:
SELECT DISTINCT c.name FROM customers c
JOIN orders o ON o.customer_id = c.id AND o.total > 1000;
-- Asha
-- Chitra
DISTINCT’e dikkat edin. Bir müşterinin birden fazla eşleşmesi varsa birleştirme kopyalar üretebilir, oysa IN ve EXISTS bunu yapamaz.
| Kullanım | Ne zaman |
|---|---|
| KATILIN | Her iki tablodan da sütunlara ihtiyacınız var |
| İÇİNDE veya MEVCUT | Yalnızca bir eşleşmenin mevcut olup olmadığına göre filtrelemeniz gerekir |
| Türetilmiş tablo | Önce toplamanız gerekir ve kısa kalır |
| CTE | Mantığın birkaç adımı var veya birden fazla kullanılıyor |
| Pencere işlevi | Her satırın yanında grup başına bir rakama ihtiyacınız var |
Performans, veritabanına ve verilere göre değişir ve modern optimize ediciler genellikle benzer planlar üretir. Bu yüzden önce en net formu seçin, ardından yavaş olup olmadığını EXPLAIN kontrol edin.
Yaygın hatalar
- Çok satırlı bir sonuçla
=kullanımı.INkullanın veya iç sorgunun bir satır döndürdüğünden emin olun. - Geçersiz olabilen bir sütunda
NOT INkullanma. Her satırı sessizce kaybedebilirsiniz. - Belirsiz takma adlar kullanma. İlişkili sorgularda her sütunu niteleyin, aksi takdirde yanlış tabloya bağlanabilir.
- Derin yerleştirme. Üç düzeyin okunması zordur, bu nedenle bunları CTE’lere dönüştürün.
- İçeriye
ORDER BYeklenmesi. Genellikle dış sonuç üzerinde hiçbir etkisi yoktur ve bazı veritabanları bunu reddeder.
Son sözler
Alt sorgular iki adımlı soruları ifade etmenin doğal bir yoludur. Skaler alt sorgular ve IN ile başlayın, ardından her seferinde tek bir dış satır üzerinden mantık yürüterek ilişkili olanları uygulayın. Ve NULL’ların mümkün olduğu durumlarda NOT EXISTS‘yi hatırlayın. Alıştırma yapmak için bir soruyu alt sorgu, birleştirme ve CTE ile üç şekilde yazın ve hem sonuçları hem de okunabilirliği karşılaştırın.
Sık sorulan sorular
SQL’de alt sorgu nedir?
Alt sorgu, parantez içinde başka bir SQL ifadesinin içine yerleştirilmiş bir SELECT ifadesidir. Dış ifade, sonucunu bir değer, liste veya tablo olarak kullanır.
İlişkili alt sorgu nedir?
Dış sorgudaki bir sütuna başvuran bir alt sorgudur. Geçerli dış sıraya bağlıdır, dolayısıyla kendi başına çalışamaz.
Hangisi daha hızlı; alt sorgu mu yoksa JOIN mi?
Bu, veritabanına ve verilere bağlıdır ve optimize ediciler genellikle benzer planlar üretir. Önce en net versiyonu yazın, ardından performans önemliyse yürütme planlarını karşılaştırın.
IN ve EXISTS arasındaki fark nedir?
IN, bir değeri bir sonuç listesiyle karşılaştırır. EXISTS herhangi bir satırın döndürülüp döndürülmediğini kontrol eder. Olumsuzlandıklarında NULL’larla farklı davranırlar.
Bir alt sorgu birden fazla sütun döndürebilir mi?
Evet, FROM’da türetilmiş bir tablo olarak kullanıldığında ve bazı veritabanları satır karşılaştırmalarına da izin verir. Skaler bir alt sorgu yalnızca bir sütun ve bir satır döndürmelidir.
Öğrenmeye devam et
Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?
Ekiplerin daha iyi yazılımlar sunmasına ve sitelerini büyütmesine yardımcı oluyoruz. Bize ne üzerinde çalıştığınızı söyleyin, biz de bir sonraki adım için net bir öneride bulunalım.
Daha fazla kılavuz test, yapay zeka ve modern geliştirme
Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.
Yapay Zeka Halüsinasyonları Açıklandı: Dil Modelleri Neden İşleri Düzeltiyor ve Nasıl Azaltılabilir?
Yapay zeka halüsinasyonları açıkladı: ne olduklarını, dil modellerinin bunları neden ürettiğini, yaygın türlerini, temellendirme ve yönlendirmelerle…
Makaleyi okuyun →DevOpsAçıklanan Ortam Değişkenleri: .env Dosyaları, Sırlar ve Yapılandırma Doğru Yapıldı
Çalıştırdığımız Python örnekleriyle açıklanan ortam değişkenleri: bunları okumak ve ayarlamak, neden her değerin bir dize olduğu, .env dosyaları, sü…
Makaleyi okuyun →Yazılım geliştirmeAPI Hız Sınırlamasının Açıklaması: Algoritmalar, Başlıklar ve 429 Hatalarının Ele Alınması
API hızı sınırlaması, çalıştırdığımız bir simülasyonla açıklanmıştır: belirteç kümesi, sabit pencere, kayan pencere, 429 yanıt, hız sınırı başlıklar…
Makaleyi okuyun →Test otomasyonuPython'da alay etme: Unittest.mock, patch ve Testleri Yalan Yapan Hatalar
Unittest.mock ile Python'da alay etme, test edildi: Sahte ve dönüş_değeri, yan_etki, bir adın kullanıldığı yerde yama uygulama, spesifikasyon ve oto…
Makaleyi okuyun →Yazılım testiKod Kapsamının Açıklaması: Hat ve Şube Kapsamı ve %100'ün Gerçek Anlamı
Kod kapsamı gerçek bir kapsama.py çalışmasıyla açıklanmıştır: hat, şube ve durum kapsamı, bir raporun okunması, %100 kapsamın neden hâlâ hataları ka…
Makaleyi okuyun →Veritabanları ve SQLSQL'de DELETE vs TRUNCATE vs DROP: Farklılıklar, Geri Alma ve Her Biri Ne Zaman Kullanılmalı
DELETE vs TRUNCATE vs DROP test edilmiş SQL ile açıklandı: her birinin neyi kaldırdığı, geri aldığı, tetiklediği, kimlik sıfırlaması, hızı ve Postgr…
Makaleyi okuyun →Veritabanları ve SQLAçıklanan SQL Görünümleri: Örneklerle Tuzakları Oluşturun, Kullanın ve Önleyin
Çalıştırdığımız sorgularla açıklanan SQL görünümleri: görünüm oluşturma, canlı sonuçlar, sütunları gizleme, performans, güncellenebilir ve gerçekleş…
Makaleyi okuyun →Yazılım geliştirmeTypeScript Arayüzü ve Tür: Gerçek Farklılıklar, Derleyiciyle Test Edildi
TypeScript arayüzü ve türü, gerçek derleyiciyle kontrol edildi: her ikisinin de yapabileceği, yalnızca birinin yapabileceği, bildirim birleştirme, g…
Makaleyi okuyun →Yazılım geliştirmePython *args ve **kwargs'ın Açıklaması: Açık Örneklerle Esnek Fonksiyonlar
Python *args ve **kwargs çalıştırdığımız kodla açıklanmıştır: paketleme ve paketten çıkarma, parametre sırası, yalnızca anahtar kelime ve yalnızca k…
Makaleyi okuyun →Yazılım geliştirmePython Lambda İşlevleri: Söz Dizimi, Gerçek Kullanımlar ve Ne Zaman Kullanılmaması Gerektiği
Çalıştırdığımız kodla açıklanan Python lambda işlevleri: sözdizimi, anahtarla sıralama, harita ve filtre, kapatmalar, geç bağlama tuzağı ve normal b…
Makaleyi okuyun →Yapay zekâYapay Zeka Ajanları Nelerdir? Çalıştırabileceğiniz Basit Bir Aracı Döngüsüyle Nasıl Çalışırlar?
Yapay zeka ajanları nedir? Aracı döngüsüne, araçlara, belleğe ve korkuluklara ilişkin basit bir kılavuz, çalıştırdığımız küçük bir Python döngüsü, g…
Makaleyi okuyun →DevOpsİzleme ve Gözlemlenebilirlik: Günlükler, Metrikler ve İzlerle Gerçek Fark
İzleme ve gözlemlenebilirliğin açıklanması: bilinen ve bilinmeyen arızalar, günlükler, ölçümler ve izler, ödeme olayının gözden geçirilmesi, altın s…
Makaleyi okuyun →DevOpsDocker Birimleri ve Bağlama Bağlantıları: Konteyner Verilerini Doğru Şekilde Kalıcılaştırın
Docker birimleri ile bağlama bağlamaları arasındaki karşılaştırma açıklandı: kapsayıcı verilerinin neden kaybolduğu, adlandırılmış birimler, bağlama…
Makaleyi okuyun →Test otomasyonuTDD ve BDD: Temel Farklılıklar, Her İki Şekilde Geliştirilmiş Bir Özellik ve Her Birinin Ne Zaman Kullanılacağı
TDD ve BDD, her iki yönde de oluşturulmuş bir indirim özelliğiyle açıklandı: çalıştırdığımız kodla kırmızı-yeşil-refactor, Verilen-Ne Zaman-O Zaman …
Makaleyi okuyun →Yazılım testiKullanıcı Kabul Testi (UAT): Süreç, Kontrol Listesi ve Gerçek Örnekler
Kullanıcı kabul testi açıklandı: bunu kimin yürüttüğü, QA'dan farkı, yedi adımlı bir süreç, bir UAT test senaryosu şablonu, bir kontrol listesi, otu…
Makaleyi okuyun →Veritabanları ve SQLAçıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar
SQL NULL değerleri, çalıştırdığımız sorgularla açıklandı: üç değerli mantık, IS NULL, COALESCE, NULLIF, toplamaların, birleştirmelerin ve sıralamanı…
Makaleyi okuyun →Veritabanları ve SQLSQL CASE WHEN İfadesi: Sözdizimi, Gerçek Örnekler ve Yaygın Hatalar
SQL CASE WHEN çalıştırdığımız sorgularla açıkladı: basit ve aranmış formlar, koşul sırası, SUM'lu pivotlar, COUNT hileleri, özel sıralama, güncellem…
Makaleyi okuyun →Yazılım geliştirmeJWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor
JWT nedir? JSON Web Tokens açıkladı: üç bölüm, çalıştırdığımız kodda oluşturulan ve üzerinde değişiklik yapılan bir token, JWT ile oturumlar, depola…
Makaleyi okuyun →Yazılım geliştirmeJavaScript Olay Döngüsü Açıklaması: Örneklerle Çağrı Yığını, Mikro Görevler ve Zamanlayıcılar
JavaScript olay döngüsü çalıştırdığımız kodla açıklandı: çağrı yığını, görev ve mikro görev kuyrukları, setTimeout 0'ın neden anında olmadığı, engel…
Makaleyi okuyun →Yazılım geliştirmePython Jeneratörleri ve Verim Açıklaması: Gerçek Örneklerle Bellekten Tasarruf Edin
Python üreteçleri ve verim, çalıştırdığımız kodla açıklandı: nasıl duraklatılır ve devam ettirilir, ölçülen bellek tasarrufları, işlem hatları, sons…
Makaleyi okuyun →Yapay zekâGömmeler Nelerdir? Vektörler ve Kosinüs Benzerliği Basitçe Açıklandı
Gömmeler nedir? Vektörler, kosinüs benzerliği ve anlamsal aramaya ilişkin sade dilli bir kılavuz; çalıştırdığımız küçük bir örnek, yaygın kullanımla…
Makaleyi okuyun →DevOpsMavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir
Mavi-yeşil ve kanarya konuşlandırması açıklandı: her birinin nasıl çalıştığı, maliyet, risk ve geri alma, test ettiğimiz istikrarlı kullanıcı grubu,…
Makaleyi okuyun →Test otomasyonuKesintili Testler: Bunların Sebepleri ve Nasıl Düzeltileceği
Yaptığımız demolarla açıklanan hatalı testler: ana nedenler, birinin nasıl doğrulanacağı ve teşhis edileceği, zamanlama için uygun düzeltmeler, payl…
Makaleyi okuyun →Yazılım testiYük Testi ve Stres Testi: Farklılıklar, Metrikler ve k6 Örnekleri
Yük testi ve stres testinin açıklaması: her birinin neyi kanıtladığı, ani yükselme ve soğuma testleri, önemli ölçümler, ortalamaların neden yanıltıc…
Makaleyi okuyun →Yazılım testiTest Senaryosu ve Test Senaryosu: Temel Farklılıklar, Örnekler ve Her Biri Ne Zaman Kullanılmalı?
Test senaryosu ve test senaryosunun açıklaması: net tanımlar, yan yana tablo, senaryolardan vakalara, şablonlara ve her birinin ne zaman kullanılaca…
Makaleyi okuyun →Veritabanları ve SQLSQL Sorgu Optimizasyonu: Zamanlamalarla Yürütme Planlarını Okuyun ve Yavaş Sorguları Düzeltin
SQL sorgu optimizasyonu bir milyon satırda test edilmiştir: yürütme planlarını okuyun, doğru dizinleri ekleyin, değiştirilemeyen filtreleri düzeltin…
Makaleyi okuyun →Veritabanları ve SQLSQL UNION ve UNION ALL: Farklılıklar, Örnekler ve Test Edilmiş Performans
SQL UNION ve UNION ALL, yürüttüğümüz sorgularla açıklandı: kopyalar, her ikisinin de takip ettiği kurallar, gerçek bir veri hatası, ölçülen performa…
Makaleyi okuyun →Yazılım geliştirmeJavaScript Fetch API Eğitimi: GET, POST, Hata İşleme ve Zaman Aşımları
Yerel bir sunucuya karşı test edilen bir JavaScript Fetch API öğreticisi: GET ve POST, 404'ün neden atmadığı, yeniden kullanılabilir bir yardımcı, s…
Makaleyi okuyun →Yazılım geliştirmePython Dosya İşleme: Örneklerle Okuma, Yazma, CSV, JSON ve pathlib
Python dosya işleme, çalıştırdığımız kodla açıklanmıştır: açık modlar, büyük dosyaları okuma, CSV, JSON, pathlib, ikili dosyalar, güvenli yazma, hat…
Makaleyi okuyun →Yazılım geliştirmePython Sınıfları ve Nesneleri: Gerçek Örneklerle OOP Eğitimi
Çalıştırdığımız kodla açıklanan Python sınıfları ve nesneleri: __init__, yöntemler, sınıf ve örnek nitelikleri, kalıtım, özellikler, dunder yöntemle…
Makaleyi okuyun →Yapay zekâBüyük Dil Modeli Nedir? Yüksek Lisans'ların Nasıl Çalıştığı, Abartmadan Açıklanıyor
Büyük dil modeli nedir? LLM'ler sade bir dille açıklandı: belirteçler, yerleştirmeler, dikkat, eğitim, sıcaklık ve bağlam pencereleri, küçük bir son…
Makaleyi okuyun →DevOpsYeni Başlayanlar İçin Linux Komutları: Örneklerle Temel Terminal Kılavuzu
Yeni başlayanlar için göreve göre gruplandırılmış Linux komutları: pratik bir günlük analizi örneğiyle gezinme, dosyalar, günlükleri görüntüleme, gr…
Makaleyi okuyun →Test otomasyonuSelenyum ve Oyun Yazarı: Temel Farklılıklar, Karşılaştırılan Kod ve Hangisinin Seçileceği
Selenium ve Playwright karşılaştırması: mimari, bekleme, tarayıcı ve dil desteği, hata ayıklama, her iki araçta da aynı test, geçiş tavsiyesi ve nas…
Makaleyi okuyun →Yazılım testiEşdeğerlik Bölümleme: Test Tasarımı Tekniğinin Çalışılmış Örneklerle Açıklanması
Eşdeğerlik bölümlemenin açıklaması: geçerli ve geçersiz bölümlerin nasıl bulunacağı, yaşlara yönelik çalışılmış örnekler, şifreler ve kuponlar, yürü…
Makaleyi okuyun →Yazılım testiYazılım Testinde Şiddet ve Öncelik: Farklılıklar, Matris ve Gerçek Örnekler
Yazılım testinde önem ve önceliğin açıklanması: net tanımlar, örnekler içeren dört yönlü bir matris, seviye ölçekleri, her birini kimin belirlediği …
Makaleyi okuyun →Veritabanları ve SQLSQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS
Çalıştırdığımız sorguları içeren bir SQL alt sorgu eğitimi: skaler, IN, FROM ve SELECT alt sorguları, ilişkili alt sorgular, EXISTS, NOT IN NULL tuz…
Makaleyi okuyun →Veritabanları ve SQLSQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Seviyeleri
SQL işlemleri ve ACID, yürüttüğümüz bir banka transferiyle açıklandı: COMMIT, ROLLBACK, kayıt noktaları, kilitler, izolasyon seviyeleri, kirli okuma…
Makaleyi okuyun →Yazılım geliştirmeGit merge vs rebase: farklar, örnekler ve hangisi ne zaman kullanılır
Git merge vs rebase; gerçek log çıktısı, karşılaştırma tablosu, rebase'in altın kuralı ve güvenli bir ekip iş akışıyla anlatılıyor.
Makaleyi okuyun →Yazılım geliştirmePython Liste Üreteci (List Comprehension): Sözdizimi, Örnekler ve Kaçınılacak Durumlar
Python list comprehension anlatımı: sözdizimi, filtreleme, if-else, iç içe döngüler, ölçülmüş süreler ve düz for döngüsünün daha iyi olduğu durumlar.
Makaleyi okuyun →Veritabanları ve SQLSQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)
SQL JOIN'leri örnek tablolar ve sorgularla adım adım öğrenin: INNER, LEFT, RIGHT, FULL, CROSS ve SELF; yaygın hatalar ve performans ipuçları.
Makaleyi okuyun →