SQL UPDATE Komutu Nedir? Veritabanında Veri Güncelleme
SQL’de UPDATE komutu, veritabanı tablolarındaki mevcut kayıtları (satırları) değiştirmek veya güncellemek için kullanılan en temel DML (Data Manipulation Language) işlemlerinden biridir. Güncelleme işlemi belirli koşullara bağlı olarak yapılabilir. Yalnızca hedeflenen satırları değiştirmek için mutlaka WHERE koşulu kullanılmalıdır. Eğer WHERE koşulunu unutursanız, tablodaki tüm kayıtlar geri alınması zor bir şekilde aynı değere güncellenir.
UPDATE Syntax (Sözdizimi) Yapısı
Standart bir SQL güncelleme işleminin sözdizimi aşağıdaki gibidir:
1 2 3 | UPDATE tablo_adi SET sutun1 = yeni_deger1, sutun2 = yeni_deger2, ... WHERE sart; |
- tablo_adi: İçindeki verileri değiştirmek istediğiniz tablonun adıdır.
- SET: Hangi sütunların güncelleneceğini ve bu sütunlara hangi yeni değerlerin atanacağını belirtir.
- sutun1, sutun2, …: Güncellenecek ilgili alanlardır.
- yeni_deger1, yeni_deger2, …: Sütunlara yazılacak olan yeni verilerdir.
- WHERE sart: Güncelleme işleminin hangi satırlar için geçerli olacağını filtreler. (Uyarı: Kullanılmazsa tüm tablo güncellenir!)
SQL UPDATE Kullanımı: Adım Adım Örnekler
1. Tek Bir Alanı (Sütunu) Güncelleme
Bir calisanlar tablosunda, sadece belirli bir çalışanın maaş bilgisini güncelleyelim:
1 2 3 | UPDATE calisanlar SET maas = 60000 WHERE calisan_id = 3; |
- Bu sorgu ile sadece calisan_id değeri 3 olan personelin maaşı 60000 olarak değiştirilecektir.
2. Aynı Anda Birden Fazla Alanı Güncelleme
Tek bir sorgu içerisinde virgül ile ayırarak birden fazla sütunu aynı anda güncelleyebilirsiniz. Örneğin, bir çalışanın hem maaşını hem de departmanını değiştirelim:
1 2 3 | UPDATE calisanlar SET maas = 75000, departman = 'Yazılım' WHERE calisan_id = 5; |
- calisan_id değeri 5 olan kaydın maaşı 75000, departmanı ise “Yazılım” olarak güncellenir.
3. Belirli Bir Şarta Uyan Birden Fazla Kaydı Güncelleme
Toplu güncellemeler yapmak SQL’de çok yaygındır. Örneğin, “Muhasebe” departmanındaki tüm çalışanların maaşına %10 zam yapmak isteyelim:
1 2 3 | UPDATE calisanlar SET maas = maas * 1.10 WHERE departman = 'Muhasebe'; |
- Bu komut sayesinde departmanı Muhasebe olan tüm personelin maaş değeri, mevcut değerinin %10 fazlası ile ezilecektir.
4. Boş (NULL) Değerleri Tespit Edip Güncelleme
Eğer veritabanınızda bazı kayıtların departman bilgisi girilmemişse (NULL ise), bu alanları “Bilinmiyor” olarak standart hale getirebiliriz:
1 2 3 | UPDATE calisanlar SET departman = 'Bilinmiyor' WHERE departman IS NULL; |
- IS NULL ifadesi ile boş kayıtlar yakalanır ve tümü “Bilinmiyor” metni ile doldurulur.
5. Metin (String) Fonksiyonları ile Veri Güncelleme
Bazen bir sütundaki verinin tamamını değil, sadece içindeki belirli bir kelimeyi değiştirmek isteyebilirsiniz. Bunun için SQL’deki REPLACE fonksiyonu kullanılır:
1 2 3 | UPDATE urunler SET urun_adi = REPLACE(urun_adi, 'Eski', 'Yeni') WHERE urun_adi LIKE '%Eski%'; |
- Ürün adları içinde geçen “Eski” kelimeleri bulunup, yerlerine “Yeni” kelimesi yazılacaktır.
6. Alt Sorgu (Subquery) Kullanarak Güncelleme Yapmak
Güncelleyeceğiniz değeri başka bir tablodan veya sorgudan almak isteyebilirsiniz. Buna alt sorgu ile güncelleme denir:
1 2 3 | UPDATE musteriler SET musteri_tipi = 'VIP' WHERE musteri_id IN (SELECT musteri_id FROM siparisler WHERE toplam_tutar > 10000); |
- Bu örnekte, siparişleri toplamda 10.000 TL’yi geçen müşterilerin tipi “VIP” olarak güncellenmektedir.
7. LIMIT Kullanarak Güvenli Güncelleme (MySQL Özel)
Yanlışlıkla binlerce kaydı güncellemeyi önlemek veya işlemi parça parça yapmak için MySQL’de LIMIT komutu kullanılabilir:
1 2 3 4 | UPDATE log_kayitlari SET durum = 'Okundu' WHERE durum = 'Yeni' LIMIT 100; |
- Sadece şarta uyan ilk 100 kayıt güncellenir. Büyük veritabanlarında sunucuyu yormamak için çok kullanışlıdır.
İleri Seviye: Güvenli UPDATE İşlemi İçin Hayati İpuçları
Gerçek dünya projelerinde UPDATE işlemi yaparken veri kaybını önlemek için şu kurallara mutlaka dikkat etmelisiniz:
- Önce SELECT ile Test Edin: Güncelleyeceğiniz verileri UPDATE yazmadan önce aynı WHERE koşulu ile
SELECT * FROM tablo_adi WHERE sart;şeklinde çekerek doğru kayıtları hedeflediğinizden emin olun. - Transaction Kullanımı: Mümkünse kritik güncellemelerde kodunuzu bir Transaction bloğu (
BEGIN ... COMMIT) içine alın. Bir hata yaparsanız işlemiROLLBACKile geri alabilirsiniz.
Sıkça Sorulan Sorular (S.S.S)
SQL UPDATE komutunda WHERE kullanmazsam ne olur?
Eğer WHERE koşulu belirtilmezse, tablodaki mevcut tüm kayıtlar SET ile belirttiğiniz yeni değere eşitlenir. Veri kaybı yaşamamak için çok dikkatli olunmalıdır.
SQL UPDATE işlemini geri alabilir miyim?
Eğer UPDATE işlemini bir Transaction bloğu içinde başlattıysanız ROLLBACK komutu ile işlemi geri alabilirsiniz. Ancak Transaction kullanmadıysanız ve veritabanı yedeğiniz (backup) yoksa, işlem doğrudan diske yazılır ve geri alınamaz.


