SQL Insert Into – Veri Kaydetme , dersimiz ile sql eğitim setimize devam ediyoruz. Bu dersimizde artık tablomuza birşeyler kaydetmeyi göreceğiz. Sql insert into anlatımında çok fazla püf nokta veremeyeceğim çünkü verebileceğim çok fazla bir püf yok. :D Hadi SQL Insert Into – Veri Kaydetme işlemini görelim.
SQL Insert Into – Veri Kaydetme
Eveet. sonunda kayıt ekleme işlemini göreceğiz. Öncelikle bu işlem için elimizde bir kod yazmayacağız. Bu ilk püf noktamız olsun. Sql management studio bir tablo için insert into kodlarını bize saniyeler içerisinde veriyor. Bu sebeple neden elle yazalım değil mi?
Şimdi bunu nasıl yapacağımızı görelim.
Sql management studio ‘yu açıyoruz ve tablomuza geliyoruz. Tablomuzun üzerinde sağ tık yaparak aşağıdaki görselde gördüğünüz işlemi yapıyoruz.
ÖNEMLİ NOT: Dostlar bu işlemi sık sık kullanacağımız için bu işleme kısaca, generate script yada sorgu oluşturmak diyeceğim. Her seferinde bu resmi yüklemek sıkıntı… :D
Yukarıdaki işlemi yaptıktan sonra şu kodlar otomatik ekrana geliyor.
USE [mustafabukulmez] GO INSERT INTO [dbo].[PERSONEL_TANIMLARI] ([per_Adi] ,[per_Soyadi] ,[per_TC] ,[per_Telefon] ,[per_DogumTarih]) VALUES (<per_Adi, nvarchar(50),> ,<per_Soyadi, nvarchar(50),> ,<per_TC, nvarchar(11),> ,<per_Telefon, nvarchar(11),> ,<per_DogumTarih, datetime,>) GO
Şimdi bu kodlarımızı düzenleyelim.
INSERT INTO PERSONEL_TANIMLARI ( [per_Adi] ,[per_Soyadi] ,[per_TC] ,[per_Telefon] ,[per_DogumTarih] ) VALUES ( '' --<per_Adi, nvarchar(50),> , '' --<per_Soyadi, nvarchar(50),> , '' --<per_TC, nvarchar(11),> , '' --<per_Telefon, nvarchar(11),> , '' --<per_DogumTarih, datetime,>) )
Evet dostlar. Kodlarımızın düzenlenmiş hali yukarıdaki gibidir. Kodlarımızı inceleyelim…
SQL ( — ) yani çift tire bir satırı yorum satırı yapmamızı sağlar. Satırı dediğime bakmayın. Nereye yazarsanız oradan sonrası satır sonuna kadar yorum satırı olmuş olur.
SQL bize bu işlemi gördüğünüz gibi satır satır vermektedir. Values kısmındaki — ben her zaman örnekteki gibi yaparım. Peki bu bize ne sağlıyor?
Bu işlem bize hangi satıra ne verisi göndereceğimi hatırlatıyor. Haa, bu tablomuzda altı üstü 6 kolon var ondan anlamsız görünebilir ancak ilerleyen zamanlarda 100, 150 kolonlu tablolarla uğraşmak zorunda kalabilirsiniz. O zaman hangi satırın hangi kolona denk geldiğini bulmak için başlayacaksınız üstten saymaya. Büyük ihtimalle de ya bir altı ya bir üste yazmış olacaksınız. :D Bu sebeple bu şekilde her satırı işaretlemiş oluyoruz. Bu ikinci püf noktamız olsun.
Şimdi de tek tırnakların içlerini dolduralım ve bir kayıt ekleyip görelim.
INSERT INTO PERSONEL_TANIMLARI ( [per_Adi] ,[per_Soyadi] ,[per_TC] ,[per_Telefon] ,[per_DogumTarih] ) VALUES ( 'Mustafa' --<per_Adi, nvarchar(50),> , 'BÜKÜLMEZ' --<per_Soyadi, nvarchar(50),> , '12345678912' --<per_TC, nvarchar(11),> , '05339998877' --<per_Telefon, nvarchar(11),> , '19920130' --<per_DogumTarih, datetime,>) )
Bu şekilde düzenlememizi yaptıktan sonra F5 tuşuna basıyoruz ve kodlarımızı çalıştırıyoruz. Eğer bir hata yok ise şöyle bir mesaj alırız.
(1 row(s) affected)
Bu mesajı gördüğünüzde bilin ki kayıt eklendi. Şimdi tablomuz üzerinde sağ tık yapıp, Edit Top xxxx Rows deyip tablomuz içerisindeki verileri görebiliriz.
NOT: Kod ile tarih kaydetmek isterseniz yukarıda gördüğünüz gibi hiçbir ayraç olmadan Yıl Ay Gün (yyyyMMdd) olarak yazmak zorundasınız aksi takdirde;
Görselde gördüğünüz hatayı alırsınız. Bu hatayı almamızın sebebi (şuanda farkettim) SQL Server dilinden kaynaklıdır. Bu tarih formatını tanımadığından dolayı hata veriyor. Ancak dil Türkçe olarak ayarlandığında hata vermeden kaydı ekliyor. Bunu da yine başka bir derste verelim. SQL serveri İngilizce kullanacağımızdan dolayı hatasız ekleme yaptığımı şekilde kullanmanızı tavsiye ederim.
Ancaaaaaaak, tabloyu edit top xxx rows diye açtığınızda ve elle kayıt eklemek istediğiniz de de tam tersi olur. Normal formatta yazmanız gerekmektedir (30.01.1992) yani hata almadığımız formatta (19920130) kayıt etmeye çalışırsanız hata alırsınız. :D Buda üçüncü püf noktamız olsun
Tablomuza birkaç kolon daha ekleyelim.
INSERT INTO PERSONEL_TANIMLARI ( [per_Adi] ,[per_Soyadi] ,[per_TC] ,[per_Telefon] ,[per_DogumTarih] ,[per_Kayit_Tarihi] ,[per_Kaydeden] ,[per_Degistirme_Tarihi] ,[per_Degistiren] ,[per_Aktif] ) VALUES ( 'Mustafa' -- <per_Adi, nvarchar(50),> , 'BÜKÜLMEZ' -- <per_Soyadi, nvarchar(50),> , '12345678912' -- <per_TC, nvarchar(11),> , '05339998877' -- <per_Telefon, nvarchar(11),> , '19920130' -- <per_DogumTarih, datetime,> , getdate() -- <per_Kayit_Tarihi, datetime,> , 0 -- <per_Kaydeden, int,> , getdate() -- <per_Degistirme_Tarihi, datetime,> , 0 -- <per_Degistiren, int,> , 1 -- <per_Aktif, bit,>) )
Gördüğünüz gibi 5 kolon daha ekledim. Bu kolonların varlığı tecrübe ile sabittir. Buradan sonrası da dördüncü püf noktamız olsun.
- Kayıt_Tarihi = İlgili kaydın ne zaman kayıt edildiğini yazarız. Bu kaydıt ne zaman yapıldı sorusunun cevabını vermiş oluyoruz.
- Kaydeden = İlgili kaydı kimin kayıt ettiğini yazarız. (Kullanıcı ID, RECno yada Kodu) Bu kaydı kim yaptı sorusunun cevabını vermiş oluyoruz.
- Değiştirme_Tarihi = İlgili kaydın ne zaman değiştirildiğini güncelleriz. Bu kayıt ne zaman değiştirdi sorusunun cevabını vermiş oluyoruz.
- Değiştiren = İlgili kaydı kimin değiştirdiğini güncelleriz . (Kullanıcı ID, RECno yada Kodu). Bu kaydı kim değiştirdi sorusunun cevabını vermiş oluyoruz.
- Aktif = Kayıt silme işleminde kaydı silmeyiz bu kısmı 0 olarak güncelleriz. Bu kaydın silinmiş olduğunu anlarız. Bu alan güncellendiğinde güncelleme tarih ve güncelleyen alanlarını da güncelleriz. Böylelikle kimin, ne zaman sildiğini bulmuş oluruz.
Maddelerin yeteri kadar açıklayıcı olduğunu düşünüyorum. Aklınıza takılan bir şey olursa yorum olarak sorabilirsiniz.
NOT: Getdate() sql serverin kurulu olduğu pc yada server makinanın tarihini otomatik alır. Kayıt tarihi, işlem tarihi gibi kolonlar için getdate() fonksiyonu yeterlidir.
Birden fazla bilgiyi tek kolona yazmak
Yeri geldiğinde birden fazla veriyi birleştirip kaydetmemiz gerekir. Bu gibi durumlarda ise aşağıdaki gibi yapabilirsiniz.
INSERT INTO PERSONEL_TANIMLARI ( [per_Adi] ,[per_Soyadi] ,[per_TC] ,[per_Telefon] ,[per_DogumTarih] ,[per_Kayit_Tarihi] ,[per_Kaydeden] ,[per_Degistirme_Tarihi] ,[per_Degistiren] ,[per_Aktif] ) VALUES ( 'Mustafa' -- <per_Adi, nvarchar(50),> , 'BÜKÜLMEZ' -- <per_Soyadi, nvarchar(50),> , '12345678912' -- <per_TC, nvarchar(11),> , '05339998877' -- <per_Telefon, nvarchar(11),> , '1992' + '01' + '30' -- <per_DogumTarih, datetime,> , getdate() -- <per_Kayit_Tarihi, datetime,> , 0 -- <per_Kaydeden, int,> , getdate() -- <per_Degistirme_Tarihi, datetime,> , 0 -- <per_Degistiren, int,> , 1 -- <per_Aktif, bit,>) )
Doğum tarihinde gördüğünüz gibi yıl ay ve gün bilgisini ayrı yerlerden alıp birleştirip gönderdik. Bu başka bir kolon içinde olabilir. Örneğin sade adsoyad kolonunuz var ise ad ile soyadı birleştirip yazabilirsiniz.
SQL Insert Into – Veri Kaydetme , dersimizde bu kadar dostlar. 4 tane püf nokta ile bu dersimizi de tamamlamış olduk.
Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.
Sağlıcakla ve Takipte Kalın.