SQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS

  1. Ana sayfa
  2. Blog
  3. Veritabanları ve SQL

Veritabanları ve SQL

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.

9 dk okuma
SQL alt sorguları eğitimi: türler, ilişkili alt sorgular ve örneklerle EXISTS

Önemli noktalar

  • Alt sorgu, başka bir sorgunun içine yerleştirilmiş bir sorgudur ve dış sorgu bunun sonucunu kullanır.
  • Alt sorgular WHERE, FROM, SELECT ve HAVING‘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 EXISTS ila NOT 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ı. IN kullanın veya iç sorgunun bir satır döndürdüğünden emin olun.
  • Geçersiz olabilen bir sütunda NOT IN kullanma. 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 BY eklenmesi. 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

Stack Quora ile çalışın

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.

Okumaya devam et

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 zekâ

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 →
DevOps

Açı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ştirme

API 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 otomasyonu

Python'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 testi

Kod 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 SQL

SQL'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 SQL

Açı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ştirme

TypeScript 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ştirme

Python *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ştirme

Python 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 →
DevOps

Docker 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 otomasyonu

TDD 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 testi

Kullanı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 SQL

Açı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 SQL

SQL 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ştirme

JWT 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ştirme

JavaScript 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ştirme

Python 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 →
DevOps

Mavi-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 otomasyonu

Kesintili 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 testi

Yü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 testi

Test 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 SQL

SQL 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 SQL

SQL 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ştirme

JavaScript 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ştirme

Python 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ştirme

Python 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 →
DevOps

Yeni 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 otomasyonu

Selenyum 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 testi

Eş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 testi

Yazı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 SQL

SQL 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 SQL

SQL İş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ştirme

Git 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ştirme

Python 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 SQL

SQL 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 →