UPDATE Kullanımı

Veritabanı üzerinde veri güncelleme işlemleri de tıpkı DELETE işlemlerinde olduğu gibi çok dikkat gerektiren işlemlerdendir ve sıklıkla kullanacağımız işlemdir. UPDATE ile bir veritabanı üzerinde bir tabloda istenilen bir satır üzerinde veri güncelleme işlemi yapılabilir. Mevcut bir verinin değiştirilmesi gerekebilir, bunun gibi güncelleme isteyen işlemler için UPDATE deyimini kullanırız. Genellikle UPDATE deyimi ile birlikte WHERE deyimi kullanılır. Tabi eğer bir tabloda tüm veriler güncellenmek istenmiyor ise 🙂 WHERE ile istediğimiz gibi filtreleme yapabilir ve sadece filtrelenmiş veriler üzerinde güncelleme işlemi yapabiliriz. UPDATE için synatx yani söz dizimi şu şekildedir:

UPDATE tabloAdı SET kolonadı1 = yenideğer1 ,kolonadı2 = yenideğer2 WHERE şartımız;

Burada WHERE kullanmak zorunlu değil, dediğim gibi filtreleme yapacak isek o zaman WHERE kullanıyoruz. Genelde uygulamalarımızda her güncelleme işleminde tek bir satır veri güncelleriz. Birde fazla satır tabii ki güncellenebilir ancak dikkat etmemiz gerekir. Şimdi bir kaç basit örnek yapalım. AdventureWorks2012 veri tabanı üzerinde çalışıyorum. Öncelikle aşağıdaki kodu çalıştıralım bize demoPerson tablosu oluşturulsun, varsa mevcut olanı da silsin.

IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[demoPerson]')
AND type in (N'U'))
DROP TABLE [dbo].[demoPerson]
GO
SELECT * INTO dbo.demoPerson
FROM Person.Person
WHERE Title in ('Mr.', 'Mrs.', 'Ms.')

Bu sorgu çalışınca (994 row(s) affected) mesajını aldım, işlemim gerçekleşti. Şimdi öncelikle dbo.demoPerson tablosundan BusinessEntityID, NameStyle, Title alanlarını BusinessEntityID alanına göre sıralayarak listeleyelim.

SELECT BusinessEntityID, NameStyle, Title 
FROM dbo.demoPerson ORDER BY BusinessEntityID;

2013042907

Şimdi burada NameStyle alanlarının değeri görüleceği üzere 0, ben bunların hepsini 3 yapmak istiyorum. O halde şöyle bir sorgu yazabilirim:

UPDATE dbo.demoPerson SET NameStyle = 3;

(994 row(s) affected) mesajını aldım, yani işlem tamam. Bir görelim cidden tamam mı?

SELECT BusinessEntityID, NameStyle, Title 
FROM dbo.demoPerson ORDER BY BusinessEntityID;

2013042908

Görüleceği üzere işlem tamam. Şimdi aynı tablo üzerinde bu seferde Title alanı Ms. olanların NameStyle alanlarını 0 değeri yapalım tekrardan. Sorgum şöyle olur :

UPDATE dbo.demoPerson SET NameStyle = 0
WHERE Title = 'Ms.';

(415 row(s) affected) mesajını aldım. Bir bakalım cidden olmuş mu?

SELECT BusinessEntityID, NameStyle, Title 
FROM dbo.demoPerson ORDER BY BusinessEntityID;

2013042909

Görüleceği üzere Title alanı değeri Ms. olanların NameStyle değerini tekrar 0 yaptık. Mr. olanlar ise 3 kaldılar. Basit UPDATE işlemleri işte böyle. Bir sonraki yazılarda daha detaylı kısımlara değineceğim.

Bir cevap yazın

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