16 Ocak 2017 Pazartesi

UPDATE


Kayıt Güncelleme


Bir tabloya eklenen bilgiler gerektiğinde değiştirilebilmelidir. Bu amaçla UPDATE komutu kullanılmaktadır. UPDATE komutunun genel kullanıl biçimi şöyledir.

UPDATE tablo_adı
         SET sütun1=değer1, sütun2=değer2, …
           [WHERE koşul]

Bu tanımda kullanılan WHERE deyimi değişikliğin hangi kayıt üzerinde yapılacağının bulunmasına yardımcı olmaktadır. Bu tanım yapılmadığında söz konusu tablonun tüm satırlarında değişiklikler meydana gelecektir.



Bahçe işleri veritabanında müşteriler tablosunda isim bilgisi “Ali Arslan” olan kişinin Ankara’dan İstanbul Üsküdar’a iş yerini taşıdığını düşünerek gerekli değişiklikleri yapmak için aşağıdaki SQL sorgusunu yazmak gerekir.

UPDATE musteriler
     SET il='İstanbul', ilce = 'Üsküdar'
       WHERE (adi='Ali' AND soyadi='Arslan')



UPDATE komutu ile matematiksel işlemler de gerçekleştirilebilmektedir. Tüm personelin ücretine %20 zam yapılacağını düşünerek tablo üzerinde değişiklikleri gerçekleştiren  SQL ifadesi aşağıdaki gibi olacaktır.

UPDATE personel SET ucret = ucret*1.20

Bu komut çalıştırıldığında bütün kayıtlar bu değişiklikten etkilenecektir. Çünkü herhangi bir koşula bağlı bir işlem gerçekleştirilmemiştir.


UPDATE işlemi tıpkı INSERT INTO deyiminde olduğu gibi alt sorgularla da çalışabilmektedir. Yani bilgi güncelleştirme işlemi bir tablodan okunan bilgilerin güncellenerek başka bir tabloya eklenmesi ile de gerçekleşebilmektedir.

Yine burada alt sorgular yazılırken SELECT deyiminden faydalanılmaktadır.


UPDATE komutunda alt sorgulara şöyle bir örnek verebiliriz. BolumID’si 200 olan personel ile aynı göreve sahip tüm personelin bolumID’sini 100 olarak değiştirmek istersek şöyle bir SQL ifadesi yazabiliriz.

UPDATE personel SET bolumID = 100
      WHERE gorevi = (SELECT gorevi
                                             FROM personel
                                                    WHERE bolumID=200)



UPDATE personel SET bolumID = 100
      WHERE gorevi = (SELECT gorevi
                                             FROM personel
                                                    WHERE bolumID=200)

Bu sorguda öncelikle alt sorguda bolumID’si 200 olan personelin görevinin ne olduğu tespit edilmektedir. Daha sonra tespit edilen bu görevle aynı görevi icra eden personel kayıtlarında bolumID’leri 100 olarak değiştirilmektedir.