Açıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar

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

Veritabanları ve SQL

Açıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar

NULL, SQL’deki en sessiz hatalardan bazılarına neden olur; hatasız çalışan sorgular, ancak satırları kaybeder veya ortalamaları çarpıtır. Test edilmiş örneklerle NULL’un gerçekte nasıl davrandığını ve bunun güvenli bir şekilde nasıl ele alınacağını öğrenin.

9 dk okuma
SQL NULL değerlerinin açıklaması: IS NULL, COALESCE, NULLIF ve kaçınılması gereken tuzaklar

Önemli noktalar

  • BOŞ, eksik veya bilinmeyen bir değer anlamına gelir. Sıfır değil ve boş bir dize değil.
  • Bunu IS NULL ile test edin, çünkü = NULL hiçbir zaman hiçbir şeyle eşleşmez.
  • NULL içeren çoğu hesaplama NULL değerini verir ve WHERE yalnızca kesinlikle doğru olan satırları tutar.
  • Toplamalar, ortalamayı sessizce değiştirebilen NULL’ları atlar.

Bir sorgu hatasız çalışıyor ve mantıklı görünen bir sayı döndürüyor, ancak satırlar eksik ve ortalama yanlış. Bunun nedeni çoğunlukla SQL NULL değerleridir. NULL herhangi bir normal değer gibi davranmaz ve bu hem yeni başlayanların hem de deneyimli geliştiricilerin dikkatini çeker.

Bu kılavuz NULL’un tam olarak nasıl davrandığını gösterir. Her sorguyu SQLite 3.50’de çalıştırdık ve gösterilen sonuçlar bu çalıştırmadan geldi. Bu davranışın çoğu standart SQL’dir ve NULL sıralama düzeni ve Oracle’ın boş dizeleri işlemesi gibi veritabanlarının nerede farklılık gösterdiğini not ederiz.

NULL nedir?

NULL, bir değerin eksik veya bilinmediği anlamına gelen bir işaretçidir. Bu alışılagelmiş anlamda bir değer değildir, dolayısıyla bunların hepsi farklı şeylerdir:

Değer Anlamı Telefon sütunu örneği
BOŞ Bilinmiyor veya sağlanmadı Sayıyı bilmiyoruz
'' Bilinen, boş bir metin değeri Boş olarak gönderildi
0 Sıfır numarası Metinle alakalı değil ancak tutarlar açısından gerçek

Aradaki fark özellikle miktarlar açısından önemlidir. 0 bonus, kişinin hiçbir şey almadığı anlamına gelir. NULL bonus, henüz kimsenin bilmediği anlamına gelir.

Örnek tablo

CREATE TABLE employees (
  id INT, name TEXT, phone TEXT, bonus INT, manager_id INT
);

INSERT INTO employees VALUES
 (1,'Meera','555-0101',500,NULL),
 (2,'Arjun',NULL,300,1),
 (3,'Sara','',NULL,1),
 (4,'Ravi',NULL,NULL,2);

Sara’nın telefon için boş bir dizisi olduğuna, Arjun ve Ravi’nin ise NULL’a sahip olduğuna dikkat edin. İkisine çok farklı davranılıyor.

NULL için test etme

Hemen hemen herkesin ilk başta yaptığı hata şu:

SELECT name FROM employees WHERE phone = NULL;
-- (no rows)

SELECT name FROM employees WHERE phone IS NULL;
-- Arjun
-- Ravi

SELECT name FROM employees WHERE phone IS NOT NULL;
-- Meera
-- Sara

İlk sorgu geçerli SQL’dir ve hata vermez. Hiçbir şey döndürmez çünkü herhangi bir şeyi NULL ile karşılaştırmak asla doğru değildir. Boş bir dize gerçek bir değer olduğundan Sara IS NOT NULL‘in altında görünür. Ancak Oracle’da boş bir dize NULL olarak değerlendirilir ve bu dikkate değer bir istisnadır.

Üç değerli mantık

Çoğu programlama dilinde bir koşul doğru veya yanlıştır. SQL üçüncü bir sonuç ekler: bilinmiyor. Bir değeri bilmiyorsanız 5’e eşit olup olmadığını söyleyemezsiniz. Ve iki bilinmeyen değerin eşit olduğu bilinmez, bu yüzden NULL = NULL doğru değildir. Testimizde bunların tümü NULL döndürdü:

SELECT NULL = NULL, NULL <> 1, 1 + NULL, 'a' || NULL;

-- NULL | NULL | NULL | NULL

Koşulların birleştirilmesi dikkatli kurallara tabidir. 1’in doğru ve 0’ın yanlış olduğu çalışmamızın sonuçları şunlardır:

İfade Sonuç neden
DOĞRU VE BOŞ BOŞ Bilinmeyen kısmına bağlı
YANLIŞ VE BOŞ Yanlış Bilinmeyen ne olursa olsun yanlış
DOĞRU VEYA BOŞ Doğru Bilinmeyen ne olursa olsun doğrudur
YANLIŞ VEYA BOŞ BOŞ Bilinmeyen kısmına bağlı
BOŞ DEĞİL BOŞ Bilinmeyen’in zıttı bilinmiyor

WHERE konumundan kaybolan satırlar

WHERE bir satırı yalnızca koşulu doğru olduğunda tutar. Sonucun bilinmediği satırlar, yanlış olan satırlarla birlikte bırakılır. Bu şaşırtıcı sonuçlara yol açar:

SELECT name FROM employees WHERE phone <> '555-0101';

-- Sara

Telefonları kesinlikle bu numara olmadığından Arjun ve Ravi’nin ortaya çıkmasını bekleyebilirsiniz. Ancak telefonları bilinmiyor, dolayısıyla sonuç da bilinmiyor ve ortadan kayboluyorlar. Bunları dahil etmek için şunu açıkça söyleyin: WHERE phone <> '555-0101' OR phone IS NULL. Olumsuzlama da yardımcı olmuyor:

SELECT name FROM employees WHERE NOT (bonus > 400);

-- Arjun

Sara ve Ravi’nin bonusu yok, dolayısıyla ne bonus > 400‘de ne de onun tersinde görünüyorlar. Bu hatırlanması gereken önemli bir noktadır: bir koşul ve onun olumsuzlanması her zaman her satırı kapsamaz.

COALESCE: bir geri dönüş sağlayın

COALESCE listesindeki NULL olmayan ilk değeri döndürür ve tüm önemli veritabanlarında çalışır:

SELECT COALESCE(NULL, NULL, 'third', 'fourth');
-- third

SELECT name, COALESCE(phone, 'no phone') FROM employees;
-- Meera | 555-0101
-- Arjun | no phone
-- Sara  |
-- Ravi  | no phone

Boş bir dize NULL olmadığından Sara hala boş görünüyor. MySQL ve SQLite’ta IFNULL, SQL Server’da ISNULL ve Oracle’da NVL gibi benzer işlevler mevcuttur. COALESCE taşınabilir seçimdir. Hesaplamalarla ilgili daha önce belirttiğimiz nokta burada da geçerlidir. bonus + 100, bonusu olmayan herkes için NULL verir; bu nedenle, eksik bir bonusu sıfır olarak ele almak işletmeniz için doğruysa COALESCE(bonus, 0) + 100 yazın.

NULLIF: bir değeri NULL’a dönüştürür

NULLIF(a, b), eğer iki değer eşitse NULL değerini döndürür, aksi halde a değerini döndürür. İki kullanım özellikle faydalıdır. Yer tutucu değerlerini temizleyebilir:

SELECT name, NULLIF(phone, '') FROM employees WHERE id = 3;
-- Sara | NULL

SELECT name FROM employees
WHERE COALESCE(NULLIF(phone, ''), '') = '';
-- Arjun
-- Sara
-- Ravi

Bu ikinci sorgu “eksik veya boş” değerleri bulmanın kullanışlı bir yoludur. Ayrıca birçok veritabanında hataya neden olan sıfıra bölünmeye karşı da koruma sağlayabilir:

SELECT total / NULLIF(quantity, 0) FROM sales;

quantity 0 olduğunda, bu başarısızlık yerine NULL verir. Testimizde SELECT 100 / NULLIF(0, 0) NULL değerini döndürdü.

Toplamalar NULL’u atlıyor

NULL’un raporlara en fazla zararı verdiği yer burasıdır:

SELECT COUNT(*), COUNT(bonus), SUM(bonus), AVG(bonus),
       AVG(COALESCE(bonus, 0))
FROM employees;

-- 4 | 2 | 800 | 400.0 | 200.0
İfade Sonuç Bu ne anlama geliyor?
COUNT(*) 4 Tüm satırlar
COUNT(bonus) 2 Yalnızca bonuslu satırlar
SUM(bonus) 800 NULL’lar göz ardı edilir
AVG(bonus) 400 800’ü 4’e değil 2’ye bölüyoruz
AVG(COALESCE(bonus, 0)) 200 800 bölü 4

Peki ortalama ikramiye nedir, 400 mü yoksa 200 mü? Verilerinizde NULL’un ne anlama geldiğine bağlıdır. NULL, “bonus ödenmedi” anlamına geliyorsa 200 doğrudur. Eğer “henüz karar verilmedi” anlamına geliyorsa 400 doğru olabilir. Veritabanı bu kararı sizin yerinize veremez, dolayısıyla sorunun işi bilen birine gitmesi gerekir.

İlgili bir tuzak: hiçbir değeri olmayan SUM, 0 yerine NULL’dur. Yalnızca bonussuz satırları topladığımızda, NULL elde ettik, oysa COUNT 0 döndürdü. Bir sayı bekleyen uygulama kodu bunda çökebilir, bu yüzden onu sarın: COALESCE(SUM(bonus), 0).

İpucu: Bir rapor toplamı hatalı göründüğünde, COUNT(*)‘yi COUNT(column) ile karşılaştırın. Aralarındaki herhangi bir boşluk, o sütunda kaç tane NULL bulunduğunu hemen gösterir.

GRUP BY, sıralama ve DISTINCT

Karşılaştırmalarda NULL’lar “eşit olmasa da” bu işlemler onları tek bir grup olarak ele alır:

SELECT bonus, COUNT(*) FROM employees GROUP BY bonus ORDER BY bonus;
-- NULL | 2
--  300 | 1
--  500 | 1

SELECT DISTINCT bonus FROM employees;
-- 500, 300, NULL

Gruplandırma hakkında daha fazla bilgi için SQL GROUP BY ve HAVING‘e bakın. Sıralama düzeni, veritabanlarının gerçekten farklı olduğu yerdir. SQLite ve MySQL NULL’u en küçük değer olarak ele alırken, PostgreSQL ve Oracle bunu en büyük değer olarak ele alır. Yani aynı ORDER BY bonus DESC NULL’ları birinde sona, diğerinde ilk sıraya koyabilir. PostgreSQL, Oracle ve modern SQLite bunu NULLS FIRST veya NULLS LAST kullanarak doğrudan belirtmenize olanak tanır.

Katılıyor

= kullanan bir birleştirme koşulu hiçbir zaman NULL ile eşleşmez, bu nedenle NULL anahtarı olan satırlar bir iç birleştirmeden çıkar:

SELECT e.name FROM employees e
JOIN employees m ON m.id = e.manager_id;
-- Arjun, Sara, Ravi    (Meera is gone)

SELECT e.name, m.name FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;
-- Meera | NULL
-- Arjun | Meera
-- Sara  | Meera
-- Ravi  | Arjun

Meera’nın yöneticisi yok, bu yüzden iç birleşim bu sırayı sessizce ortadan kaldırır. A LEFT JOIN onu korur ve aynı zamanda eksik taraf için kendi NULL’larını yaratır. Daha fazlasını SQL birleştirmelerinin açıklanması bölümünde okuyun.

DEĞİLDİR tuzağı

NOT IN listesindeki tek bir NULL, tüm sonuçları siler:

SELECT name FROM employees WHERE manager_id NOT IN (1);
-- Ravi

SELECT name FROM employees WHERE manager_id NOT IN (1, NULL);
-- (no rows)

İkinci biçim manager_id <> 1 AND manager_id <> NULL anlamına gelir ve bu son kısım hiçbir zaman doğru olamaz. Bu, NULL’un fark edilmeden gelebileceği alt sorgularda özellikle tehlikelidir. Bunun yerine, SQL alt sorguları eğitimimizde açıklandığı gibi NOT EXISTS‘yi kullanın. Bu satırın manager_id NULL olması nedeniyle Meera da ilk sonuçta eksik.

NULL ile tasarlama

  • Varsayılan olarak NOT NULL‘yi kullanın. NULL’a yalnızca bir değerin gerçekten eksik olabileceği durumlarda izin verin.
  • Mantıklı varsayılanlar ekleyin. Örneğin, quantity INT NOT NULL DEFAULT 0.
  • Sihirli değerler kullanmayın. 1900-01-01 tarihi veya “bilinmiyor” yerine -1 yaşı hesaplamalarınızı bozacaktır.
  • BENZERSİZ davranışı bilin. Çoğu veritabanı, bir UNIQUE sütununda birden fazla NULL’a izin verir ve testimiz, hiçbir hata olmadan iki tane ekledi. SQL Server bir istisnadır çünkü normalde buna izin verir.
  • Birincil anahtarın NULL olamayacağını unutmayın. Bkz. birincil anahtar ile yabancı anahtarın karşılaştırılması.
  • NULL’larla test edin. NULL içermeyen test verileri bu hataları gizler. Diğer son durumlarda yaptığınız gibi, bunları da bilerek ekleyin.

Son sözler

NULL’a “bilinmeyen” muamelesi yaptığınızda davranışının çoğu anlamlı olmaya başlar: bilinmeyen artı bir bilinmiyor ve bilinmeyen eşittir bilinmeyenin doğru olduğu bilinmiyor. Bu hafta kendi raporlarınızdan birini denetleyin. COUNT(*)‘e karşı COUNT(column)‘yi kullanarak null olabilen sütunları kontrol edin, herhangi bir NOT IN arayın ve her ortalamada NULL’un ne anlama gelmesi gerektiğine karar verin.

Sık sorulan sorular

SQL’de NULL nedir?

NULL, eksik veya bilinmeyen bir değerin işaretçisidir. Sıfırdan ve boş bir dizeden farklıdır ve karşılaştırmalarda özel olarak ele alınması gerekir.

= NULL neden çalışmıyor?

Herhangi bir şeyi NULL ile karşılaştırmak doğru yerine bilinmeyen değerini verir, dolayısıyla WHERE satırı atar. Bunu test etmek için IS NULL veya IS NOT NULL kullanın.

COALESCE ve ISNULL arasındaki fark nedir?

COALESCE standart SQL’dir ve birçok argümanı kabul eder. ISNULL, SQL Server’a özeldir ve iki tane alır. Taşınabilir kod için COALESCE’i tercih edin.

COUNT NULL değerleri içeriyor mu?

COUNT(*), NULL’lar dahil tüm satırları sayar. COUNT(sütun) yalnızca bu sütunun NULL olmadığı satırları sayar, bu da daha küçük bir sayı verebilir.

NULL, boş bir dizeyle aynı mıdır?

Hayır, çoğu veritabanında. Boş bir dize, karakter içermeyen bilinen bir değerdir ve NULL, bilinmeyen anlamına gelir. Oracle, boş dizeleri NULL olarak değerlendirdiği için dikkate değer bir istisnadır.

Öğ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 →