Anasayfa / Yazılım / SQL / DELETE Kullanımı

DELETE Kullanımı

MS SQL’de tablolarda yer alan verileri silmek için DELETE deyimi kullanılır. Tabi DELETE deyimini kullanırken dikkatli davranmak gerekir 🙂 İstenmeyen kayıplar meydana gelebilir. DELETE deyimini kullanmak aslında oldukça basittir. Basit bir DELETE deyiminin kullanımı aşağıdaki gibidir :

DELETE FROM tablo adı WHERE şart

Burada FROM ifadesi opsiyoneldir yani istenirse kullanılmayabilir. WHERE deyimi de eğe silinecek tabloda belirli bir şarta göre silme işlemi yapılmak isteniyorsa şart belirtmek için kullanılır. Örneğin DELETE tablo adı verilerek bir tablo olduğu gibi silinebilir. Aslında tablo silinebilir dedim ancak tablo silinmez diyelim, içindeki veriler silinir. Çünkü tabloyu komple silmek için DROP kullanılır. DELETE ise bir tablo içindeki satırları silmek için kullanılır. Bu farka dikkat ediniz. Şimdi DELETE kullanımı ile alakalı bir kaç örnek yapacağım. Bunu da AdventureWorks2012 veri tabanı üzerinde yapıyorum ama öncelikle demo niteliğinde bir kaç tablo oluşturup bu tablolar üzerinde silme işlemleri yapacağım için aşağıdaki kodu yeni bir Query sayfasına yapıştırın ve çalıştırın. Demo tablolar oluşacaktır.

USE AdventureWorks2012;
GO
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[demoProduct]')
AND type in (N'U'))
DROP TABLE [dbo].[demoProduct];
GO
SELECT * INTO dbo.demoProduct FROM Production.Product;
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[demoCustomer]')
AND type in (N'U'))
DROP TABLE [dbo].[demoCustomer];
GO
SELECT * INTO dbo.demoCustomer FROM Sales.Customer;
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[demoAddress]')
AND type in (N'U'))
DROP TABLE [dbo].[demoAddress];
GO
SELECT * INTO dbo.demoAddress FROM Person.Address;
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[demoSalesOrderHeader]')
AND type in (N'U'))
DROP TABLE [dbo].[demoSalesOrderHeader];
GO
SELECT * INTO dbo.demoSalesOrderHeader FROM Sales.SalesOrderHeader;
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[demoSalesOrderDetail]')
AND type in (N'U'))
DROP TABLE [dbo].[demoSalesOrderDetail];
GO
SELECT * INTO dbo.demoSalesOrderDetail FROM Sales.SalesOrderDetail;

2013041602

2013041603

Görüleceği üzere demo tablolarım oluşmuş durumda.. Şimdi AdventureWorks2012 veri tabanı için query oluşturacağım. Öncelikle örneğpin aşağıdaki sorguyu yazıyorum :

SELECT CustomerID FROM dbo.demoCustomer;

2013041604

demoCustomer tablosundan CustomerID kolonunu listeliyorum. 19820 satır veri var. Şimdi ben bu tablo içeriğini olduğu gibi sileceğim.

DELETE dbo.demoCustomer;

Ve (19820 row(s) affected) mesajını alıyorum, yani işlem tamam. Peki silinmiş mi bir bakalım :

SELECT CustomerID FROM dbo.demoCustomer;

2013041605

Görüleceği üzere geriye dönen 0 satır.

Şimdi de; dbo.demoProduct tablosunda ProductID kolonu değeri 600’den büyük olanları listeleyelim, bakalım kaç satır var.

2013041606

296 satır veri var. Şimdi ben bu ProductID değeri 600’den yüksek olan 296 satır veriyi silmek istiyorum.

DELETE dbo.demoProduct WHERE ProductID > 600;

(296 row(s) affected) mesajını aldım, yani işlem tamam. Birde bakalım cidden silinmiş mi? 600’den yukarı ProductID değeri var mı bir bakalım :

SELECT ProductID FROM dbo.demoProduct WHERE ProductID > 600;

Geriye 0 satır veri döner.

2013041607

DELETE sonrası FROM kullanmadım, dediğim gibi bu opsiyonel genelde kullanılır. Bende kullanmaktan yanayım ama bazen böyle kısa yazmakda işimize gelmiyor değil 🙂

Bir sonraki yazıda görüşmek üzere..

2 yorum

  1. Merhaba ben wordpress sitemdeki kısa yazıları elle tek tek değil de SQL ile toplu halde silmek istiyorum. Yardımcı olabilir misiniz acaba?

    Misal belli bir karakter sayısının altındaki konular silinsin gibi.

    Deneme olarak açtığım sitedeki konular üzerinde şu sorguyu denedim fakat bütün yazılar silindi.

    DELETE FROM wp_posts WHERE post_content < 600;

  2. DELETE FROM personel WHERE dTarihi>1975 AND dTarihi<1985

    bu örneği kendi istediğin gibi düzenleyebilirsin. 600 kuralını küçüklü ve büyüklü tanıt lütfen.

    http://ozguryaman.com/sqlde-delete-komutu/

    rastgele buldum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir