Yinelenen Kayıtları Seçin ve Silin
SQL Server’da “Select” ve “Delete” komutlarını kullanarak, yinelenen (duplicate) kayıtları seçebilir ve silebiliriz. Bu işlem, veritabanında aynı verilerin birden fazla kez bulunduğu durumlarda gereklidir ve aşağıdaki avantajlara sahip olabilir:
- Veri bütünlüğünü koruma: Veritabanlarında yinelenen kayıtlar, veri bütünlüğünü bozabilir ve yanlış sonuçlara neden olabilir. Özellikle büyük veritabanlarında, yinelenen kayıtların tespit edilip silinmesi, veri bütünlüğünü sağlamak açısından önemlidir.
- Veri depolama alanını tasarruf etme: Yinelenen kayıtlar, gereksiz bir şekilde veri depolama alanını işgal edebilir. Bu durum, gereksiz disk alanı kullanımına ve performans sorunlarına yol açabilir. Yinelenen kayıtların silinmesi, veri depolama alanının tasarruflu kullanılmasına yardımcı olabilir.
- Veri doğruluğunu arttırma: Yinelenen kayıtlar, veri doğruluğunu azaltabilir. Örneğin, aynı müşteriye ait birden fazla kayıt olması durumunda, müşteriye ait bilgilerin tutarlılığını sağlamak zorlaşabilir. Yinelenen kayıtların silinmesi, veri doğruluğunu arttırabilir.
- Performansı arttırma: Veritabanlarında yinelenen kayıtların sayısı arttıkça, sorgu ve işlemler daha yavaş çalışabilir. Yinelenen kayıtların silinmesi, veritabanının performansını arttırabilir ve sorgu sonuçlarını daha hızlı elde etmenize yardımcı olabilir.
- Veri analitiği için doğru sonuçlar elde etme: Yinelenen kayıtlar, veri analitiği ve raporlama süreçlerinde doğru sonuçların elde edilmesini zorlaştırabilir. Yinelenen kayıtların silinmesi, veri analitiği ve raporlama süreçlerinde daha doğru sonuçlara ulaşmanıza yardımcı olabilir.
Özetle, SQL Server’da Select ve Delete komutları ile yinelenen kayıtları seçme ve silme işlemi, veri bütünlüğünü koruma, veri depolama alanını tasarruf etme, veri doğruluğunu arttırma, performansı arttırma ve veri analitiği için doğru sonuçlar elde etme gibi avantajlara sahip olabilir.
Şimdi size bunu örneklendirelim.
İçinde yinelenen veriler bulunan basit bir tablo oluşturalım. Tempdb veri tabanında bu kodları kullanarak örnek tablo oluşturabilirsiniz.
USE tempdb
GO
CREATE TABLE TestTable (ID INT, NameCol VARCHAR (100))
GO
INSERT INTO TestTable (ID, NameCol)
select 1, 'First'
UNION ALL
select 2, 'Second'
UNION ALL
select 3, 'Second'
UNION ALL
select 4, 'Second'
UNION ALL
select 5, 'Second'
UNION ALL
select 6, 'Third'
GO
--Selecting Data
Select *
From TestTable
GO
--Detecting Data
SELECT NameCol, COUNT(*) TotalCount
FROM TestTable
GROUP BY NameCol
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
GO
--Deleting Duplicate
DELETE
FROM TestTable
WHERE ID NOT IN
(
SELECT MAX(ID)
FROM TestTable
GROUP BY NameCol)
GO
--Selecting Data
SELECT*
FROM TestTable
GO
DROP TABLE TestTable
GO
İlk önce aşağıdaki resimde olan kısmı seçip tablomuzu oluşturalım.

Bu durumumuzda aşağıda seçtiğimiz kısmı execute ettikten sonra, bu sütunun kayıtların birçok kez girildiğini görebilirsiniz.

Yinelenen kayıtları ve bunların sayımını test tablosundan algılayacak komut dosyasını çalıştıralım. Ve aşağıdaki sütunda gördüğünüz gibi ‘second’ değeri, 4 defa girilmiştir.

Aşağıdaki bu sorgu en son eklenen kayıt dışındaki tüm yinelenen kayıtları silecektir.

Ve son olarak aşağıdaki sorguyu bir kez daha seçelim. Bu işlemin sonucunda verilerin silindiğini görebilirsiniz.


Son olarak aşağıdaki kodunu kullanarak tablonun içindeki tüm verileri silebilirsiniz.
DROP TABLE TestTable