Özgür YAMAN - Bilişim Teknolojileri Öğretmeni

SQL'de UPDATE Komutu

SQL dilinde UPDATE deyimi, veritabanında bulunan verileri değiştirmek-güncellemek amacıyla kullanılan bir deyimdir. Bu derste UPDATE deyiminin kullanımıyla ilgili bazı örnekler yapacağız.

Önceki derslerde de olduğu gibi, bu derste de aşağıdaki örnek tablomuzu kullanacağız.

tablo: personel

ID isim bolum dtarihi dyeri maas
24 Aylin Demiray Muhasebe 1982 Niğde 1100
42 Mehmet Eroğlu Bilgi İşlem 1977 Ankara 1450
54 Selim Kaya Bilgi İşlem 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1300

Not: Tablodaki ID alanı birincil anahtar, ID, dtarihi ve maas alanları sayısal, diğerleri metin tiptedir. Ayrıca normal şartlarda bolum ve dyeri alanlarında ilişki kurulması gerekir. Fakat burada konuyu basit tutmak amacıyla bilgiler bu şekilde kaydedilmiştir.

UPDATE deyiminin formatı şu şekildedir:

UPDATE [tablo adı] SET [yeni bilgiler] WHERE [şartlar]

Bu formata göre UPDATE deyiminden sonra hangi veritabanı tablosunda güncelleme yapmak istiyorsak o tablonun adını yazıyoruz. SET deyiminden sonra değiştirmek istediğimiz bilgileri giriyoruz. Son olarak WHERE ifadesinden sonra değiştirme işlemi yapacağımız kayıtlarla ilgili şartı veya şartları yazıyoruz. WHERE ifadesinin kullanımı zorunlu değildir, fakat WHERE kullanılmazsa bütün kayıtlar değiştirme işleminden etkilenecektir. Basit bir örnekle başlayalım:

UPDATE personel SET bolum='İdari'

Bu SQL komutu herhangi bir şart aramaksızın (WHERE deyimini kullanmadık), personel tablosunda bulunan kayıtların bölümünü İdari olarak değiştirir.

Başka bir örnekle devam edelim. Bu örnekte bölümü Bilgi İşlem olan kayıtlardaki Bilgi İşlem kısmını Veri Güvenliği olarak değiştirmek istiyoruz. Dolayısıyla komutumuz şu şekilde olacak:

UPDATE personel SET bolum='Veri Güvenliği' WHERE bolum='Bilgi İşlem'

Bu komuttan sonra tabloda, şartı sağlayan iki kayıt güncellenecek ve tablomuzun son hali şu şekilde olacaktır:

ID isim bolum dtarihi dyeri maas
24 Aylin Demiray Muhasebe 1982 Niğde 1100
42 Mehmet Eroğlu Veri Güvenliği 1977 Ankara 1450
54 Selim Kaya Veri Güvenliği 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1300

Tablonun son halini kullanarak, başka bir örnekle devam ediyoruz:

UPDATE personel SET dtarihi=1978 AND dyeri='Kırıkkale' WHERE ID=42

Bu SQL komutunda AND kullanarak iki alanı güncelledik, sonuç olarak, ID'si 42 olan kayıtta dtarihi alanı 1978 ve dyeri alanı Kırıkkale olarak değişecektir:

ID isim bolum dtarihi dyeri maas
24 Aylin Demiray Muhasebe 1982 Niğde 1100
42 Mehmet Eroğlu Veri Güvenliği 1978 Kırıkkale 1450
54 Selim Kaya Veri Güvenliği 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1300

Bu örnekte ise UPDATE deyiminin matematiksel olarak kullanımıyla ilgili bir örnek yapıyoruz:

UPDATE personel SET maas=maas+100 WHERE ID=61

ID numarası 61 olan personelin maaşını 100 arttırdık. Tablonun en son haline bakacak olursak:

ID isim bolum dtarihi dyeri maas
24 Aylin Demiray Muhasebe 1982 Niğde 1100
42 Mehmet Eroğlu Veri Güvenliği 1978 Kırıkkale 1450
54 Selim Kaya Veri Güvenliği 1965 Konya 1400
61 Sevda Gökalp Arşiv 1980 İstanbul 1400

Buradaki toplama işlemi gibi çıkarma, çarpma, bölme gibi işlemler de UPDATE deyimi ile birlikte yapılabilir. Bu kadar örnek yeterli olmuştur umarım. Faydalı olması dileğiyle.

Etiketler: , ,

" SQL'de UPDATE Komutu " için 15 Mesaj Yazıldı:

  1. Sayende resim galerimde yer alan bir kategorideki tüm resimleri diğerine taşıyabildim. Teşekkür ederim. Peki bir sorum olacak. Eğer bolum kısmında veri güvenliği ve arşiv olanları bulup hepsini işletme yapmak için ne yazmam gerekir? Ayrı ayrı mı çalıştıracağız sorguları?

  2. bolum=’Veri Güvenliği’ OR bolum=’Arşiv’ yazabilirsiniz. Ayrı ayrı yapmaya gerek yok.

  3. Teşekkürler özgür bir sorum daha olacak. Ben kategori hiti 3000′den büyük olan categorilerin idsini değiştirmek istiyorum. Onu tahminen aşağıdaki gibi yazmam gerektiğini düşünüyorum ama doğru mudur?

    UPDATE 4images_categories SET cat_parent_id= 0 WHERE cat_hits>=3000;

  4. Özgür Tekrar merhaba,

    Öncelikle 3000 ve büyük olanlar değişti. Başardım sayende azıcık öğrendim :)

    YEni bir soruyla karşındayım umarım vaktin vardır.

    Şöyle bir isteğim var. Sistemde resim isimleri aynı olan resimlerin adlaırnı değiştirmek istiyorum. Örneğin sqlde ki tablomuz image_name

    Örneğin cat_id ‘si 5 olan tablodakileri bulup image_name’lerini ilk tablonun kopek, ikinci tablonun image_name’ini kopekcik, ücüncü tablonun image name’ini kopekler yap. gibi.

    programlamama göre atmasyon yaparsam :)

    UPDATE 4images_images SET image_name= “kopek” WHERE cat_id=5;

    bunu yazdığım zaman şöyle olacaktır. cat_id’si 5 olan tüm resimleri kopek olarak değiştirir. Benim amacım hepsini farklı farklı değiştirmesi. Bu mümkün mü?

  5. Eğer doğru anladıysam, bunu tek komutla yapmanın bir yolu yok bildiğim kadarıyla. Yazdığınız komutu herbir kategori için ayrı ayrı çalıştırmalısınız.

  6. Hocam benim başka bir sorum var
    “Yaşı en küçük olan personelin bölümünü değiştiren sorgu ”
    kafam çok karıştı bir türlü doğru cevabı bulamıyorum (Veritabanını öğrenmeye yeni başladım)

  7. Yaşın en küçük olması için doğum tarihinin en büyük olması gerekir.

  8. Çok teşekkür ederiz güzel bir çalışma olmuş

  9. Anlatım Süper Teşekkürleer :)

  10. temiz bir çalışma olmuş teşekürler.

  11. hocam benimde bi sorum alacak bende sql e yeni başladım

    sizin tabloya göre anlatayım dogum tarihi 1965′e eşit olacak ama Id si 42 den büyük olan bütün elemanların maaslarını değiştirmek istiyorum

    update personel set maas=2000 where dtarih=1965 and where Id>42

    böyle bir kod uydurdum ama olmadı hata verdi

  12. Tam hata mesajını yazarsan bakalım.

  13. update personel set maas=2000 where dtarih=1965 and where Id>42

    iki tane where kullanmana gerek yok, ikinciyi sil, çalışması lazım.

    update personel set maas=2000 where dtarih=1965 and Id>42

  14. update personel set maas=2000 where dtarih=1965 and where Id>42 bunu yazarsan hata verecektir normal olarak. Doğrusu ;
    Update Personel set maas=2000 where d.tarih=1965 and Id>42 :)

  15. arkadaşlar izah etmiş genede hata veriyorsa d.tarih=’1965′ olarak deneyin .

Bu Konuda Ne Düşünüyorsun?


9 + 6 =