Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

SQL Insert Sorgusu

SQL meraklılarına merhabalar :)

Adım adım SQL derslerimizde ilerlerken nihayet SQL sorguları derslerine başlıyoruz,hatırlarsanız bir önceki makalemizde SQL sorgu tiplerinden bahsetmiş ve nerelerde nasıl kullanacağımızı öğrenmiştik.

Bugünkü makalemizin konusundan bahsetmek gerekirse DML sorgularından insert ve select sorgularını göreceğiz.Aslında makalemizin konusu sadece insert sorgusu olması gerekirken select sorgusunuda öğrenme zorunluluğumuz bulunmaktadır,zira insert ile girdiğimiz verileri görebilmek için select sorgusunu da öğrenmeliyiz :)

Insert Sorgusu

Insert kelime anlamı olarak "içine yerleştirmek" oalrak Türkçe'ye çevrilebilir ve DML sorgulardan biri olan insert sorgusu ile veritabanındaki tablolara veri girişleri yapmamızı sağlar.Insert sorgusunun genel yapısı ise 2'ye ayrılmaktadır;

Bunlardan birincisi tabloda tüm kolonlara veri girdiğimizi varsaydığımız 

insert into Tablo values (deger1,deger2...)

şeklindeki sorgu yapısıdır.Bir diğer kullanım tipi ise sadece belirli kolonlara veri gireceğimiz sorgu yapısı olan 

insert into Tablo  (kolon1,kolon2...) values (deger1,deger2)

sorgu cümleciğidir.Ancak tablodaki belirli kolonlara veri girişi yapmak istediğimiz ikinci insert sorgusunun çalışabilmesi için bütün kolonların null (boş) geçilebilmesi gerekmekte ve aynı zamanda sorgunun çalışabilmesini engelleyen trigger (ileride göreceğiz) tetikleyicisinin olmaması gerekmektedir.
Konuya örnekle devam etmek için veritabanı derslerimizden beri süregelen "BakkalDB" veritabanımızı kullanacağız,şimdi SQL Server Management Studio'yu açıyoruz ve yeni sorgu penceresi oluşturuyoruz:

SQL-New-Query

Açılan sorgu penceresinde ilk olarak karşınıza bembeyaz bir ekran gelecek ve sorgu penceresinin iç başlığında şu 
görüntüyü göreceksiniz:

SQL-Default-Database

Bunun anlamı şu an ki çalıştığımız sorgu penceresine hangi SQL sorgularını yazarsak yazalım "master" isimli Management Studio'nun çalışması için zorunlu bulunan veritabanımızda çalışacağıdır,dolayısıyla yazacağımız sorguların BakkalDB veritabanımız için herhangi bir etkisi olmayacaktır.Bu yüzden aşağıdaki gibi çalışmak istediğimiz veritabanımızı BakkalDB olarak değiştiriyoruz:

SQL-Database

Artık veritabanımızı seçtik ve SQL sorgularını yazmaya hazırız ancak ne yazacağız?

Şu anda karşımızda bomboş duran bir sorgu penceresi duruyor ancak insert sorgusu yazmak için içine veri  dolduracağımız bir tablomuzu seçmedik,o yüzden hemen şimdi daha önce çalıştığımız DataBase Diagramımızı açıyor ve bir tablo seçiyoruz:

BakkalDB

Tablolarımız yukarıdaki gibi duruyor ve henüz istediğimiz tabloyu rastgele seçemiyoruz çünkü bazı tablolarımızda 
foreign key bağıntıları mevcut,foreign key kavramını daha önce öğrenmiştik ve foreign key olarak atanan bir tablodaki 
kolon bir başka ya da yine kendi içerisindeki kolonlarındaki veriyi çağırıyor demiştik.

Bütün tablolarımız şu anda boş olduğumuz için foreign key için referans veri çağıracağımız henüz dolu bir tablo yok o 
yüzden foreign key alan bir tablo seçemeyiz.

Örneğin ilk olarak "Markalar" tablomuzu ele alalım; herhangi bir tablodan veriyi referans almıyor ancak "Ürünler" isimli tabloya referans veriyor.Bu demek ki "markalar" tablosunda insert sorgusu çalıştırırsak diğer tablolardan varolan bir veriyi çağırmayacağız,dolayısıyla "markalar" tablosu için rahatlıkla insert sorgusu çalıştırabiliriz.

İçerisine veri ekleyeceğimiz tablomuzu belirledikten sonra şimdi gelelim tablonun yapısına;tablo iki kolon var,bunlar 
integer tipinde olan "MarkaID" ve nvarchar tipinde olan "MarkaAdi" kolonları.
"MarkaID" isimli kolonumuz Primary Key olarak tanımlandığı için tablo içerisine veri eklendiği anda kendi kendine değer alacaktır ve bu demektir ki insert sorgusunda "MarkaID" isimli kolonumuzu belirmeden sadece "MarkaAdi" isimli  kolonumuzu yazmamız yeterlidir.

Şimdi veri eklemeye başlayalım ama öncelikle birinci tip olan insert sorgusunu kullanalım,yani tüm kolonları  varsaydığımız:

SQL-Insert

Insert sorgumuzu yazdık ve çalıştırılmaya hazır ancak sorgumuzu gözden geçirelim öncelikle;
insert into (içine yerleştir) sözcüklerini yazdıktan sonra "Markalar" tablomuza veri eklemek istediğimizi belirttik ve values deyimi açarak parantez içerisinde "MarkaAdi" isimli kolonumuza ekleyeceğimiz veriyi "Eti" olarak yazdık.

Buradaki en önemli nokta "Eti" markasını tek tırnaklar (') arasında yazdık çünkü "MarkaAdi" isimli kolonumuz nvarchar 
yani diğer deyişle metin tabanlı olduğu için metin değeri vermemiz gerektiğidir.

Bir diğer püf nokta ise "into" sözcüğüyle ilgili, into (içine) deyimini kullanmak zorunda değilsiniz ancak ben genel 
kural olarak bu şekilde öğrendim ve öğretiyorum :)

Son olarak sorgu cümlesinin sonunda noktalı virgül (;) kullandım,bunu da kullanmak zorunda değilsiniz :)

Şimdi sorgumuzu çalıştıralım ama nasıl?

SQL sorgularını çalıştırmanın iki yolu vardır; birincisi klavyenizdeki F5 tuşu bir diğeri ise sorgu penceresinin üstünde yer alan "Execute!" butonu, istediğinizi kullanabilirsiniz ancak SQL sorgularını çalıştırmak bazen çok üst düzey dikkat gerektirmektedir çünkü kalıcı veri kayıplarına kadar giden sonuçlar doğurabilir ve bu yüzden işinize son verilebilir :)

Bir SQL sorgu penceresine alt alta istediğiniz kadar sorgu yazabilir ve tek seferde hepsini çalıştırabilirsiniz ancak bunu kesinlikle önermem zira ilk satırda tabloya bir veri yazdığınız sorgu ile hemen alt satırdaki tüm müşteri bilgilerini içeren tabloya ait silme sorgusunun aynı anda çalıştırdığınızı düşünün: sonuç felaket!

O yüzden el alışkanlığı olarak SQL sorgularınızı mouse imlecinizle seçtikten sonra F5 ya da "Execute!" butonuyla 
çalıştırmanızı öneririm.

Şimdi bu kadar öneriden sonra insert sorgumuzu çalıştıralım:

SQL-Insert-Row

Gördüğünüz gibi sorguyu fare imlecimle işaretledim ve F5 ile çalıştırdım,ardından sorgu penceresi içerisinde hemen 
altta bir yazı belirdi:

(1 row(s) affected)

Bunun anlamı sorgu başarıyla çalıştırıldı ve "Markalar" isimli tablomuzda sadece 1 sorguluk işlem yapıldığını gösterdi,yani tablomuza veriyi ekledik.

Peki nerede bu eklenen "Eti" değeri?

Şimdi geldik tablolardaki verileri görüntülemeye,bunu iki yolla yapabiliriz birincisi SQL select sorgusu ile diğer ise Object Explorer üzerinden.Select sorgusundan önce Object Explorer ile görüntülemek istersek "Tables" ağacı altında tablomuzu buluyor ve "Select Top 1000 Rows" ile seçim yapıyoruz:

SQL-Select-Top-1000

SQL-Select-Row

Bu şekilde tablodaki kayıtları görüntülemenizi önermem çünkü hem ilk 1000 kaydı görüntüleme gibi bir sınır koyuyor hem de select sorgusuna göre oldukça yavaş çalışıyor.O halde select sorgusunu kullanmamız gerekiyor,şimdi de SQL Select sorgusunu görelim:

Select Sorgusu

Select sorgusu veritabanındaki tablolar ve viewler (ileride öğreneceğiz) içerisindeki verileri görüntülemek için kullanılan bir SQL sorgusudur,genel yapısı ise;

Select * from Tablo 

şeklindedir.Bu select sorgusundaki yıldız (*) işaretinin anlamı tablodaki tüm kolonları göstermesi anlamına gelmektedir ve istenildiğinde yıldız işareti yerine kolonları isimleri sırası önemli olmadan yazılır ve yazılan kolonlardaki veriler sorgu sonucunda görüntülenir.

Örneğin az önce "Eti" değerini girdiğimiz "Markalar" isimli tablomuzun içeriğini görüntüleyelim:

SQL-Select-Sorgusu

Sorgumuzu çalıştırdık ve sorgu sonuç penceresinde girdiğimiz veri görüntülendi,sorgu sonucuna dikkat edersek insert 
sorgusu içerisinde kendisini yazmadığımız Primary Key olarak tanımlanmış olan "MarkaID" isimli kolonumuzun değeri 
otomatik olarak 1 değerini aldı ve girilen her insert sorgusunda "Auto-Increment" olarak daha önce belirttiğimiz için 
1'er 1'er artacaktır.

Şimdi tablomuza insert sorgusunun ikinci tipinde yeni bir veri girişini gerçekleştirelim:

Insert-Sorgusu

Tablomuz primary key olarak atanmış kolonu sadece bir kolona sahip olduğu için sadece tek bir kolonu hedef gösterdik 
ve o kolonun veri tipine uygun olarak değer verdik.

Şimdi tekrar SQL select sorgusunu çalıştıralım:

SQL-Select-Result

Gördüğünüz gibi beklenildiği şekilde sorgumuz çalıştı ve yeni verilerimizi girdik.

Buraya kadar insert sorgusunu öğrendik ve select sorgusu ile girilen verileri nasıl görüntüleyeceğimizi öğrendik,bundan sonraki makalelerimizde tablolarımızı hızlıca doldurmaya başlayacağız ve her veri girişinden sonra select sorguları ile nasıl girilen verileri görüntüleyeceğimizi göreceğiz.

SQL sorgularıyla ilgili olarak bilmeniz gereken bir nokta ise sorguların küçük-büyük harfe duyarlı olmadığıdır,yani insert sözcüğünün küçük "i" harfiyle yazmanız ile büyük "I" harfiyle yazmanız konusunda bir sakınca yok ancak sonuçta 
SQL bile insan ürünü olduğu için bazı sorunları barındırıyor; Türkçe karakterleri.

SQL sorguları yazarken mümkün olduğunca küçük "ı" ve büyük "İ" kullanmamaya özen gösterin çünkü SQL Management Studio bu harflere karşı ayırt edebilme sorunu var tabi şimdilik,umarız Microsoft'un kulağı çınlar da bu konuya el atar :)

Son olarak toplu halde SQL sorgusu nasıl yapılır görelim; bunun için öncelikle yeni bir sorgu penceresi açın ve 
aşağıdaki gibi "Kategoriler" tablosunu doldurun:

SQL-Çoklu-Sorgu

Sorguları fare imleciyle hepsini seçerek ya da seçmeden doğrudan F5 tuşuna basarak çalıştırdığımızda her sorgu başına 
kaç satır verinin etkilendiğini daha doğrusu verinin tabloya eklendiğini görüyoruz :)

Böylece "Kategoriler" isimli tablomuzuda tek seferde doldurmuş olduk ve size ev ödevim olsun,"Kategoriler" isimli 
tabloyu SQL select sorgusuyla görüntüleyin :)

Not:Sorgu pencerelerini kapatırken yazılan sorguların kaydedilmesiyle ilgili bir uyarı alırsınız,bu durumda güvenle "hayır" diyerek kapatabilirsiniz,zira insert ya da diğer SQL sorgularıyla yapılan işlemler (select hariç) veritabanında özel bir dosyada tutulmaktadır.

SQL insert sorgusu makalemizin sonuna gelmiş bulunmaktayım,bir sonraki makalemizde görüşene kadar bu öğrendiğimiz iki tabloya yeni veriler girmeyi deneyin.

Hoşçakalın :)

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu