SQL Update Sorgusu
SQL meraklılarına yeniden selamlar :)
SQL sorguları makale dizimizde bugün SQL güncelleme işlemlerinin yapıldığı SQL Update sorgusunu öğreneceğiz.
SQL update sorgusu genellikle insert sorgusu sonucu girilen yanlış sorguları düzeltmek amacıyla kullanılır ve update sorgusu sayesinde satır bazlı güncelleme işleminden tutun tüm kayıtları tek seferde güncelleme imkanına sahibiz.
SQL güncelleme sorgusunun genel yapısı;
Update Tablo Set Kolon1=YeniDeger1,Kolon2=YeniDeger2..
şeklinde gitmektedir.
Syntax yapısından görüldüğü gibi tek bir kolon değeri için güncelleme yapmak dışında birden çok kolonun verilerini güncelleme imkanıda sunuyor,önceki avantajıyla birlikte düşünürsek şunu diyebiliriz;
İstenilen kadar satırda istenilen kadar kolona ait değerlerin güncelleme imkanı sunan tek SQL sorgusudur.
Şimdi konuyu uygulamaya dökelim; öncelikle SQL Server Management Studio uygulamamızı açıyor ve önceki SQL
makale dizilerimizden beri sürekli kullandığımız BakkalDB veritabanımızı açıyoruz,hatırlarsanız veritabanımızda önceki makalelerimizde Kategori,AltKategori ve Markalar tablolarımıza insert sorgusu yoluyla veriler girip select sorgusuyla verilerimizi görüntülemiştik.
Bu makalemizde ise Musteriler tablomuza insert sorgusuyla veriler girip,update sorgusuyla hatalı verilerimizi düzenleyeceğiz.
Şimdi ilk olarak select sorgusuyla Musteriler tablomuzun kolonlarını görelim:
Görüldüğü gibi Musteriler tablomuzda hiçbir veri yok ve tabloya ait 4 kolonumuz var,kolonlarımızdan biri Primary Key olarak atandığı için insert sorgumuza dahil etmiyoruz çünkü Primary Key atanan bir kolon değerini kendi yaratır.
Şimdi ise Musteriler tablomuza insert sorgusuyla bir müşteri kaydı ekleyelim:
Ama o da ne TC kimlik numaramızın sonunda 1 rakamı 0 olmalıydı demek ki yanlış yazmışız :)
Hemen bir SQL update sorgumuzu yazıyor ve hatayı düzeltiyoruz:
Update sorgumuzu çalıştırdık ve yanlış kaydı düzelttik,gerçekten düzeldi mi diye select sorgusuyla kontrol edelim:
Evet,TC kimlik numarası sonundaki 1 rakamı 0 olarak değiştirilmiş yani update sorgusu ile hatalı kayıt düzeltme işlemini gerçekleştirdik.
Şimdi birden çok kolonda güncelleme işlemi yapalım ve diyelim ki müşterinin ad ve soyadı büyük harflerden oluşmalı,o halde yeni bir update sorgusu yazacağız ve sorgu içerisindeki kolonları ve değerlerini aralarında virgül olacak şekilde belirteceğiz:
Artık kayıtları temiz bir şekilde düzelttik :)
Konunun başında söylediğim gibi tek bir SQL sorgu cümlesiyle bütün satırlardaki bütün kolonları tek seferde güncelleyebiliriz,bunun için öncelikle yeni bir müşteri kaydı açalım:
Böylece elimizde toplam 3 müşterimiz oldu şimdi tüm müşterilerimizin TC kimlik numaralarını aynı yapıyoruz:
Bu güncellemeyi çalıştırdığımızda yukarıdaki hata mesajı ortaya çıkıyor,bunun sebebi örnek veritabanımızı tasarladığımız SQL Unique Key
makalesinde TC kimlik numarasının bir başka vatandaşta olmayacağını yani benzersiz olduğu için Unique Key olarak işaretlediğimizi hatırlayalım.
Bu sebepten dolayı SQL Unique Key olarak işaretlenmiş bir tablonun kolonunu insert ya da update sorgularıyla
içeriğindeki değerleri aynı değerler olarak kaydedemeyiz.SQL unique key makalemizin örnek uygulamasını görmek
bugüne kısmetmiş :)
Madem TCNo kolonumuzu değiştiremiyoruz o zaman bütün müşterilerimizin adını aynı yapalım,yine update sorgusu
yazıyoruz:
Dikkat ederseniz etkilenen satır sayısı bu defa 3 olarak karşımıza çıkıyor çünkü tek bir update sorgusu ile
bütün kayıtları değiştirdik:
Görüldüğü gibi tek bir update sorgusu ile tüm kayıtları rahatlıkla güncelleyebiliyoruz,tabi birden çok kayda ait birden çok kolonu güncellemek isteseydik klasik update sorgusundaki gibi tüm kolonları aralarında virgül işareti koyarak güncelleyebiliriz.
Tek bir SQL sorgusu ile sonsuz sayıdaki (veritabanının kapasitesini gözardı edersek) değerleri güncellemek
kulağa oldukça hoş geliyor ancak bir firmaya ait siparişlerin tutulduğu bir tablodaki tüm fiyatları tek bir update sorgusu ile aynı değerler verseydik kesinlikle işten atılırdık :)
Yanlış ya da eksik yazılan SQL sorguları ile çok değerli verilerimizin kaybolmaları muhtemel olduğu için SQL sorgularında koşul belirleyebiliriz.
Koşul belirleme deyimi olan "where" sözcüğü ile güncellenecek kayıtlarımızı belirli kriterlere göre belirleyebiliriz ve en çok kullanılan kriter kayda ait Primary Key değeridir.
Where deyiminin update sorgusuna ekleniş biçimi:
Update Tablo Set Kolon1=Deger1,Kolon2=Deger2.. where Kolon=Deger
şeklindedir.
Where deyimini update sorgusuyla nasıl kullanıldığını öğrenmek için aşağıdaki kayıtları tek tek eski hallerine döndürelim:
Öncelikle MusteriID'si 2 olan müşterimizin adını düzeltiyoruz:
Böylece Musteri ID'si 2 olan müşterimizin adını düzelttik,ID'si 3 olan müşterimizin adını da düzeltelim:
Müşteri kayıtlarını ID'lerine göre düzeltme işleminde dahi sorguları çok dikkatli yazmalıyız zira yanlış müşteri verisini değiştirebiliriz tabi insan olduğumuz için hata yapma lüksümüz var ve SQL yazılımcıları bu sebepten ötürü yapılan değişiklikleri "transaction" adı altında yapılan bir işlemle geri almamıza olanak sağlıyorlar.
Transaction konusunu ilerleyen makalelerimizde öğreninceye kadar şimdilik dikkatli sorgular yazmaya önem
gösterelim :)
SQL update sorgusu makalemizin böylece sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşmek üzere hoşçakalın.
Veritabanı Script Dosyasını İndir
SQL sorguları makale dizimizde bugün SQL güncelleme işlemlerinin yapıldığı SQL Update sorgusunu öğreneceğiz.
SQL update sorgusu genellikle insert sorgusu sonucu girilen yanlış sorguları düzeltmek amacıyla kullanılır ve update sorgusu sayesinde satır bazlı güncelleme işleminden tutun tüm kayıtları tek seferde güncelleme imkanına sahibiz.
SQL güncelleme sorgusunun genel yapısı;
Update Tablo Set Kolon1=YeniDeger1,Kolon2=YeniDeger2..
şeklinde gitmektedir.
Syntax yapısından görüldüğü gibi tek bir kolon değeri için güncelleme yapmak dışında birden çok kolonun verilerini güncelleme imkanıda sunuyor,önceki avantajıyla birlikte düşünürsek şunu diyebiliriz;
İstenilen kadar satırda istenilen kadar kolona ait değerlerin güncelleme imkanı sunan tek SQL sorgusudur.
Şimdi konuyu uygulamaya dökelim; öncelikle SQL Server Management Studio uygulamamızı açıyor ve önceki SQL
makale dizilerimizden beri sürekli kullandığımız BakkalDB veritabanımızı açıyoruz,hatırlarsanız veritabanımızda önceki makalelerimizde Kategori,AltKategori ve Markalar tablolarımıza insert sorgusu yoluyla veriler girip select sorgusuyla verilerimizi görüntülemiştik.
Bu makalemizde ise Musteriler tablomuza insert sorgusuyla veriler girip,update sorgusuyla hatalı verilerimizi düzenleyeceğiz.
Şimdi ilk olarak select sorgusuyla Musteriler tablomuzun kolonlarını görelim:
Görüldüğü gibi Musteriler tablomuzda hiçbir veri yok ve tabloya ait 4 kolonumuz var,kolonlarımızdan biri Primary Key olarak atandığı için insert sorgumuza dahil etmiyoruz çünkü Primary Key atanan bir kolon değerini kendi yaratır.
Şimdi ise Musteriler tablomuza insert sorgusuyla bir müşteri kaydı ekleyelim:
Ama o da ne TC kimlik numaramızın sonunda 1 rakamı 0 olmalıydı demek ki yanlış yazmışız :)
Hemen bir SQL update sorgumuzu yazıyor ve hatayı düzeltiyoruz:
Update sorgumuzu çalıştırdık ve yanlış kaydı düzelttik,gerçekten düzeldi mi diye select sorgusuyla kontrol edelim:
Evet,TC kimlik numarası sonundaki 1 rakamı 0 olarak değiştirilmiş yani update sorgusu ile hatalı kayıt düzeltme işlemini gerçekleştirdik.
Şimdi birden çok kolonda güncelleme işlemi yapalım ve diyelim ki müşterinin ad ve soyadı büyük harflerden oluşmalı,o halde yeni bir update sorgusu yazacağız ve sorgu içerisindeki kolonları ve değerlerini aralarında virgül olacak şekilde belirteceğiz:
Artık kayıtları temiz bir şekilde düzelttik :)
Konunun başında söylediğim gibi tek bir SQL sorgu cümlesiyle bütün satırlardaki bütün kolonları tek seferde güncelleyebiliriz,bunun için öncelikle yeni bir müşteri kaydı açalım:
Böylece elimizde toplam 3 müşterimiz oldu şimdi tüm müşterilerimizin TC kimlik numaralarını aynı yapıyoruz:
Bu güncellemeyi çalıştırdığımızda yukarıdaki hata mesajı ortaya çıkıyor,bunun sebebi örnek veritabanımızı tasarladığımız SQL Unique Key
makalesinde TC kimlik numarasının bir başka vatandaşta olmayacağını yani benzersiz olduğu için Unique Key olarak işaretlediğimizi hatırlayalım.
Bu sebepten dolayı SQL Unique Key olarak işaretlenmiş bir tablonun kolonunu insert ya da update sorgularıyla
içeriğindeki değerleri aynı değerler olarak kaydedemeyiz.SQL unique key makalemizin örnek uygulamasını görmek
bugüne kısmetmiş :)
Madem TCNo kolonumuzu değiştiremiyoruz o zaman bütün müşterilerimizin adını aynı yapalım,yine update sorgusu
yazıyoruz:
Dikkat ederseniz etkilenen satır sayısı bu defa 3 olarak karşımıza çıkıyor çünkü tek bir update sorgusu ile
bütün kayıtları değiştirdik:
Görüldüğü gibi tek bir update sorgusu ile tüm kayıtları rahatlıkla güncelleyebiliyoruz,tabi birden çok kayda ait birden çok kolonu güncellemek isteseydik klasik update sorgusundaki gibi tüm kolonları aralarında virgül işareti koyarak güncelleyebiliriz.
Tek bir SQL sorgusu ile sonsuz sayıdaki (veritabanının kapasitesini gözardı edersek) değerleri güncellemek
kulağa oldukça hoş geliyor ancak bir firmaya ait siparişlerin tutulduğu bir tablodaki tüm fiyatları tek bir update sorgusu ile aynı değerler verseydik kesinlikle işten atılırdık :)
Yanlış ya da eksik yazılan SQL sorguları ile çok değerli verilerimizin kaybolmaları muhtemel olduğu için SQL sorgularında koşul belirleyebiliriz.
Koşul belirleme deyimi olan "where" sözcüğü ile güncellenecek kayıtlarımızı belirli kriterlere göre belirleyebiliriz ve en çok kullanılan kriter kayda ait Primary Key değeridir.
Where deyiminin update sorgusuna ekleniş biçimi:
Update Tablo Set Kolon1=Deger1,Kolon2=Deger2.. where Kolon=Deger
şeklindedir.
Where deyimini update sorgusuyla nasıl kullanıldığını öğrenmek için aşağıdaki kayıtları tek tek eski hallerine döndürelim:
Öncelikle MusteriID'si 2 olan müşterimizin adını düzeltiyoruz:
Böylece Musteri ID'si 2 olan müşterimizin adını düzelttik,ID'si 3 olan müşterimizin adını da düzeltelim:
Müşteri kayıtlarını ID'lerine göre düzeltme işleminde dahi sorguları çok dikkatli yazmalıyız zira yanlış müşteri verisini değiştirebiliriz tabi insan olduğumuz için hata yapma lüksümüz var ve SQL yazılımcıları bu sebepten ötürü yapılan değişiklikleri "transaction" adı altında yapılan bir işlemle geri almamıza olanak sağlıyorlar.
Transaction konusunu ilerleyen makalelerimizde öğreninceye kadar şimdilik dikkatli sorgular yazmaya önem
gösterelim :)
SQL update sorgusu makalemizin böylece sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşmek üzere hoşçakalın.
Veritabanı Script Dosyasını İndir