SQL Dilinde `SELECT DISTINCT` Kullanımı
Veritabanı yönetim sistemlerinde, sorgulama işlemleri sırasında sonuç kümesindeki yinelenen (duplicate) satırları ortadan kaldırmak, veri analizi ve raporlama için kritik bir gerekliliktir. SQL'de bu ihtiyacı karşılamak için kullanılan temel anahtar kelimelerden biri DISTINCT'tir. Bu rehber, SELECT DISTINCT ifadesinin sözdizimini, işleyişini ve pratik kullanım senaryolarını adım adım açıklamaktadır. Amacımız, veritabanınızdan yalnızca benzersiz değerleri nasıl alacağınızı teknik ve anlaşılır bir dille sunmaktır.
Sözdizimi
SELECT DISTINCT ifadesinin genel sözdizimi aşağıdaki gibidir:
SELECT DISTINCT sütun1, sütun2, ...
FROM tablo_adı;Alternatif olarak, tüm sütunlar için tekil kombinasyonları almak isterseniz, * karakterini de kullanabilirsiniz. Ancak bu kullanım, genellikle spesifik sütunlar için tekillik arandığında daha az tercih edilir.
SELECT DISTINCT *
FROM tablo_adı;Detaylı Açıklama
Sözdizimindeki her bir bileşen aşağıdaki anlamlara gelmektedir:
SELECT: Veritabanından veri almak için kullanılan temel SQL komutudur.DISTINCT:SELECTkomutundan sonra kullanılan bu anahtar kelime, sorgu sonucunda yinelenen satırların elenmesini sağlar. Yalnızca benzersiz satırlar sonuç kümesine dahil edilir.sütun1, sütun2, ...: Benzersiz değerlerini almak istediğiniz bir veya daha fazla sütunun adlarıdır. Eğer birden fazla sütun belirtilirse,DISTINCTbu sütunların tümünün kombinasyonuna bakar. Yani, belirtilen tüm sütunlardaki değerlerin aynı olduğu satırlar yinelenen kabul edilir.FROM tablo_adı: Verilerin çekileceği veritabanı tablosunun adını belirtir.
Özetle, DISTINCT anahtar kelimesi, SELECT ifadesi tarafından döndürülen satırlar arasında, belirtilen sütunların veya tüm sütunların kombinasyonunda tamamen aynı olanları eleyerek, her bir benzersiz kombinasyondan yalnızca bir satır döndürür.
Pratik Kullanım Örnekleri
Aşağıdaki örneklerde, bir Calisanlar tablosunu kullanarak SELECT DISTINCT ifadesinin farklı senaryolarda nasıl kullanıldığını inceleyeceğiz.
Calisanlar Tablosu Örneği:
CalisanID | Ad     | Soyad  | Departman          | Sehir
----------|--------|--------|--------------------|--------
1         | Ali    | Yılmaz | Muhasebe           | İstanbul
2         | Ayşe   | Demir  | İnsan Kaynakları   | Ankara
3         | Can    | Kara   | Muhasebe           | İstanbul
4         | Elif   | Can    | Pazarlama          | İzmir
5         | Burak  | Akın   | Pazarlama          | Ankara
6         | Zeynep | Tekin  | Muhasebe           | Ankara
7         | Deniz  | Güneş  | İnsan Kaynakları   | İstanbul
8         | Mert   | Yıldız | Pazarlama          | İzmirÖrnek 1: Tek Bir Sütundaki Tekil Değerler
Bu örnek, Calisanlar tablosundaki tüm benzersiz departman isimlerini listeler.
SELECT DISTINCT Departman
FROM Calisanlar;Sonuç:
Departman
--------------------
Muhasebe
İnsan Kaynakları
PazarlamaÖrnek 2: Birden Fazla Sütundaki Tekil Değerler
Bu örnek, Calisanlar tablosundaki departman ve şehir kombinasyonlarının her birinin yalnızca bir kez görünmesini sağlar. Yani, hem departman hem de şehir aynı olduğunda bir satır yinelenen kabul edilir.
SELECT DISTINCT Departman, Sehir
FROM Calisanlar;Sonuç:
Departman          | Sehir
-------------------|--------
Muhasebe           | İstanbul
İnsan Kaynakları   | Ankara
Pazarlama          | İzmir
Muhasebe           | Ankara
İnsan Kaynakları   | İstanbul
Pazarlama          | AnkaraÖrnek 3: COUNT Fonksiyonu ile Birlikte Kullanım
DISTINCT, genellikle COUNT() gibi bir toplama fonksiyonu içinde kullanılarak tekil değerlerin sayısını bulmak için de kullanılır.
SELECT COUNT(DISTINCT Departman) AS ToplamTekilDepartman
FROM Calisanlar;Sonuç:
ToplamTekilDepartman
--------------------
3Önemli Notlar
Tüm Sütunlara Uygulama:
DISTINCTanahtar kelimesi,SELECTifadesinde belirtilen tüm sütunlara uygulanır. Örneğin,SELECT DISTINCT SütunA, SütunByazdığınızda, sonuç kümesinde hemSütunAhem deSütunBdeğerlerinin aynı olduğu satırlar tekilleştirilir. SadeceSütunA'nın tekil olması yeterli değildir.Performans Etkisi: Büyük veri kümelerinde
DISTINCTkullanmak, veritabanının sonuçları sıralamasını ve karşılaştırmasını gerektirdiğinden sorgu performansını olumsuz etkileyebilir. Gereksiz kullanımdan kaçınılmalı veya indeksleme stratejileri ile desteklenmelidir.NULLDeğerler:DISTINCT,NULLdeğerleri birbirine eşdeğer olarak kabul eder. Yani, bir sütunda birden fazlaNULLdeğeri varsa, sonuç kümesinde yalnızca birNULLdeğeri döner.ORDER BYile Birlikte Kullanım:DISTINCTile elde edilen sonuç kümesini sıralamak içinORDER BYifadesi kullanılabilir. AncakORDER BY,DISTINCTişleminin kendisini etkilemez, yalnızca sonucun sunum sırasını belirler.
        
                
            
            
Yorum yap
Yorumlar