SQL Update Set – Veri Güncelleme

SQL Update Set – Veri Güncelleme

29 Ağustos 2018 1 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 442
Yaklaşık okuma süresi : 4 DK
SQL Delete From – Veri Silme
C# Array List İçinde Arama Yapmak

SQL Update Set – Veri Güncelleme , yazım ile sql eğitim setimize devam ediyorum. Bu yazımızda veritabanına kaydettiğimiz herhangi bir veriyi nasıl değiştireceğimizi göreceğiz. Herhangi bir veri dedim ama buna bazı veriler daha doğru kolonlar girmiyor. Mesela Identity Spesificasyon verilen kolonları değiştiremezsiniz. Bu işlemi SQL Insert Into – Veri Kaydetme işlemi gibi tüm kolonlar dahil olacak şekilde yapmıyoruz. Hangi kolondaki bilgileri değiştirmek istiyorsak o bilgileri değiştiriyoruz. Gelin SQL Update Set – Veri Güncelleme işlmeinin nasıl yapıldığını görelim.

 

SQL Update Set – Veri Güncelleme

Önceki derslerimde olduğu gibi yine bu kodları elle yazmayacağız.  SQL update komutu için tablo üzerinde sağ tık yapıp, Script Table As > Update TO > New Query Editor Window ‘u açıyoruz. Burada bize tablonun sql update sorgusunu veriyor. Bu sorguyu alıp bize gerekli olmayan kolonları silip update işlemini yapacağız.

Advertisements

Yine önceki derslerimizde oluşturdğumuz PERSONEL_TANIMLARI tablomuz üzerinden işlem yapacağız.

UPDATE [dbo].[PERSONEL_TANIMLARI]
   SET [per_Adi] = <per_Adi, nvarchar(50),>
      ,[per_Soyadi] = <per_Soyadi, nvarchar(50),>
      ,[per_TC] = <per_TC, nvarchar(11),>
      ,[per_Telefon] = <per_Telefon, nvarchar(11),>
      ,[per_DogumTarih] = <per_DogumTarih, datetime,>
      ,[per_Kayit_Tarihi] = <per_Kayit_Tarihi, datetime,>
      ,[per_Kaydeden] = <per_Kaydeden, int,>
      ,[per_Degistirme_Tarihi] = <per_Degistirme_Tarihi, datetime,>
      ,[per_Degistiren] = <per_Degistiren, int,>
      ,[per_Aktif] = <per_Aktif, bit,>
 WHERE <Search Conditions,,>

Aldığımız sorgu bu şekilde. Şimdi, bir personelimiz işten çıkmış olsun. Bu durumda bizim bu işten çıkan personelin kaydını pasif yapalım ki listelerde görünmesin. Bunun için per_Aktif, per_Degistirme_Tarihi ve per_Degistiren bilgilerini update yapmamız lazım.

İlgili İçerik  SQL Left Join Komutu – Tabloları Birleştirme

NOT: Aktif kolonunu 0 yaptığımızda o kayıt listelerde görünmeyecek. değiştirme bilgisini de güncellediğimizden dolayı kayıt üzerinde yapılan son işlem olacak. Bu sayede bu personel kaydını kimin ve ne zaman pasif yapıldığını anlamış olacağız.

UPDATE [dbo].[PERSONEL_TANIMLARI]
   SET 
       [per_Degistirme_Tarihi] = getdate() -- SQL Server'în kurulu olduğu makinanın saatini alır.
      ,[per_Degistiren] =  100 -- Kullanıcı Kodumuz 100 olsun
      ,[per_Aktif] = 0 -- alan bit türünde olduğundan 0 gönderdiğimizde false olacaktır.
 WHERE per_RECno = 1

Bu işlemde teknik olarak biz bu personel kaydını sildik. Hiçbir gridde, combobox ta görünmeyecek (Select sorgularının buna göre yazılmış olması gerek tabiki. ) Kullanıcı, bu kaydı sildiğini sanacak ancak aslına silinmeyecek. Bu şekilde silme yetkisi olan kişilerin istenmeyen hareketlerde bulunması durumunda bir veri kaybı yaşamamış oluyoruz.

Şimdi bu en basit şekilde bir update işlemiydi. Update işlemi sırasında matematiksel işlemler kullanabiliriz. Bu konu için kendi tablomdan bir örnek veremeyeceğimden sallama bir sorgu vereceğim. Elbette gerçekte var olsa idi çalışacağından emin olacağım şekilde yazacağım. Bu sebeple mantıksız bir işlem yapmış olabilirim. 😀

UPDATE [dbo].[URETIM_MIKTARLARI]   SET 
         urt_Miktar = urt_Katsayisi * 0.15 / (100 + 250)    
	   , urt_Fire   = urt_Giris_KG - (urt_Katsayisi * 0.15 / (100 + 250))
 WHERE urt_UrunKod  = 'XXX-XXX-XXXXXX'

Bu sorguya baktığımızda urt_Katsayisi kolonu URETIM_MIKTARLARI tablosundaki urt_UrunKod = ‘XXX-XXX-XXXXXX’ şartına uyan satırdaki bir veridir. Bu hücredeki veriyi alıp bir işlem içerisinde kullanıp çıkan sonucu da urt_Miktar kolonuna yazıyoruz. Aynı mantıkta urt_Fire kolonuna urt_Giris_KG kolonundaki Kg bilgisinden, hesapladığımız urt_Miktar bilgisini çıkartıp fire elde ediyoruz.

Bu şekilde başka bir tablodan da veri alabiliriz ama select işlemini daha anlatmadığımdan o kısma daha sonra örnekler ile değineceğim.

Burada verebileceğim en önemli not, tüm kolonları içine alacak bir update sorgusu kullanmayın. Her zaman nereyi değiştirmek istiyorsanız orayı değiştirecek şekilde update sorguları yazın.

İlgili İçerik  SQL Scalar-Valued Functions - Değer Fonksiyonları

 


SQL Update Set – Veri Güncelleme , yazımızda bu kadar dostlar diğer sql eğitim yazılarımızda görüşmek üzere.

Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.

Sağlıcakla ve Takipte Kalın. 😉

SQL Delete From – Veri Silme
C# Array List İçinde Arama Yapmak