SQL Select Insert Update ve Delete Komutları

tarafından 14 Ocak 2011 tarihinde Microsoft kategorisine yazıldı.

Programlamada ya da SQL Query Analayzer kullanarak yapacağımız birçok işlem vardır. Bu işlemlerden en çok kullanacağımız Select ile kayıtları göstermek, İnsert ile Database ‘e kayıt eklemek, Update ile var olan bir kayıt üzerinde güncelleme yapmak, Delete komutu ile de istediğimiz kayıtları silmek.

Bu komutlardan en çok çekineceğimiz tabikide Delete sorgusu olacaktır. Bu sorguyu çalıştırmadan önce kesinlikle bir kez daha düşünmeniz gerekir. Eğer elinizde yedeğiniz yoksa canınız fazlasıyla sıkılabilir.

Sırasıyla Sorgularımızı inceleyecek olursak Select sorgusuyla başlayalım.

Basit bir şekilde Select sorgusunun dizimi

“SELECT  *  FROM TBL_COZUMPARK  ” Sorgumuza baktığımızda Tbl_Cozumpark adında bir tablomuz var ve bu tablodan herhangi bir koşul şart koşmadan bulunan bütün kayıtları getirmesini ve Tablodaki bütün field ‘lerin (tabloda bulunan sütunlar) getirilmesini istiyoruz.

SQL Server Managemet Studio açarak New Query ile ilk sorgumuzu yazalım.

image001
New Query ile sorgumuzu yazmadan önce dikkat etmemiz gereken bir nokta ise sorgunun hangi database’de çalışacağını bize gösteren kısmı gözden kaçırmamamız olacaktır. Resimde görülen hali ile sorgumuzu yazarsak  Tbl_Cozumpark Tablosunun bu database’de olmadığı hatasını alırız.

image002
Bu yüzden sorgumuzu COZUMPARK Database üzerinde çalıştırmamız gerekir. Sorgu başında “Use COZUMPARK” yazabiliriz yâda yukarıdaki master yazan dropdownlist ’ten ilgili database ’i seçebiliriz.
Sorgumuzu doğru olarak çalıştırdığımızda bütün kayırları görüntüleyebiliriz.

image003
Sorgumuz sonucunda Tablomuzda idàAdiSoyadiàGorevi  şeklinde 3 adet Field bulunduğunu ve bu 3 field’i  sorgumuzda kullandığımız “*” dan dolayı geldiğini biliyoruz. Sorgumuzu biraz değiştirerek sadece Tabloadaki  “id,AdiSoyadi” field’larını gösterelim.
“select id,AdiSoyadi from Tbl_Cozumpark”

image004
Sorgumuzda değişen “*” yerine çekmek istediğimiz field isimlerini yazmamız yeterlidir.
Farklı bir sorgu kullanmak için bir adet tablo daha ekledim ve bu tabloda Toplama işlemini gerçekleştireceğiz. Bunun için “SUM” komutunu kullanmamız gerekir.
Sorgunun standart dizilimi
“SELECT SUM(TOPLANACAK_FİELD)  FROM TABLO” şeklindedir. Bu sorgu belirtilen sütundaki sayıların toplamını çeker.
“select SUM(Topla) from Tbl_Hesapla”

image005
Sorgumuzu biraz daha genişleterek “as fieldname” ile (No column name) yerine istediğimiz bir sanal field oluşturalım.
“select SUM(Topla) as GenelToplam from Tbl_Hesapla”

image006

Select ile başka bir örnek yapalım ve tablomuzda bulunan kayıtların toplam sayısını bulalım.
Bunun için kullanacağımız sorguya “Count”  ekleyeceğiz. Sorgumuz şu şekilde olacaktır.
“select COUNT(*) as KayitSayisi from Tbl_Cozumpark”
araya giren “Count” Tablodaki kayıt sayısını verecek ve “as KayitSayisi” sanal bir field (var olmayan) field içerisinde toplam sayıyı bize gösterecektir.

image007
Tablomuzda 152 adet kayıt olduğunu görebiliyoruz.
Select sorgumuzda artık koşullu kullanıma geçebiliriz. Koşullu kullanımda aklımıza gelecek olan “Where” olacaktır. Koşul ile bir tablodaki verilerden tam olarak ne istediğimizi belirtebiliriz.
Standart dizilime bakacak olursak “SELECT  *  FROM TABLO WHERE KOŞUL” şeklinde koşullu sorgu yapabiliriz. Örnek olarak Tbl_Cozumpark isimli tablomuzdan Görevi Yazar Olan Kayıtları çekelim.
Yazmamız gereken SQL Sorgumuz
“select * from Tbl_Cozumpark WHERE Gorevi=’Yazar’” şeklinde olmalıdır.

image008

Koşullu sorgumuzu biraz daha daraltalım ve Görevi Yazar olan ve ‘AdiSoyadi ‘  sütununda  ‘Ahmet ALTUNTAŞ’  olan Yazarı çekelim.
select * from Tbl_Cozumpark WHERE AdiSoyadi=’Ahmet ALTUNTAS’ and Gorevi=’Yazar’

image009

SQL de Operatörler

Mantıksal Operatörler

AND  – OR  –   NOT

Karşılaştırma Operatörleri

<      .. den daha küçük
>      .. den daha büyük
>=    Büyük veya eşit
<=    Küçük veya eşit
=      Eşit
<>    Eşit değil
!=     Eşit değil
!<     .. den küçük değil
!>     .. den büyük değil
“OR”  operatörünün kullanımında eğer şartlardan bir tanesi doğruysa işlem gerçekleşir iki şartında doğruluğu beklenmez ama iki şartta doğruysa ikisi de gerçekleşir.
Örnek olarak tablomuzda ‘AdiSoyadi’  sütununda “Necati” ismi var mı bakalım ama eğer yoksa “Hakan” olan kişiyi çekelim.
select * from Tbl_Cozumpark where AdiSoyadi like ‘%necati%’ OR Adisoyadi like ‘%Hakan%’
Sorguda kullandıgım “%” işaretinin anlamı koşulumda yazdığım ismi içeren bütün verileri çekmek için kullandım.

image010
“NOT” operatörünün kullanımda şartı sağlamayan kayıtları çekmek için kullanılır.
Bu örneğimizde Tbl_Hesapla Tablomuzda ‘Topla’ Sütunundaki “200” değerine sahip olmayan bütün kayıtları çekelim.
“select * from Tbl_Hesapla Where NOT Topla=200”

image011
Yada tablomuzda “200-100” değerleri dışında kalan verilerimizi çekelim bunun için “NOT” operatörümüze “IN” operatörüne eklememiz gerekir.
“select * from Tbl_Hesapla Where topla NOT IN (200,100)”

image012
“<” den küçük yada “>” den büyük operatörlerini karşılaştırma yapmak için kullanabiliriz.
Örnek olarak Tbl_Hesapla tablomuzda “200” den küçük olan ve “40” dan büyük kayıtları çekelim.
“select * from Tbl_Hesapla where Topla < 200 or Topla > 40”

image013
Sorgumuza göre 200 ve 40 kayıtlarının gelmemesini beklememiz normal fakat “OR” operatörünü kullandığımız için ilk şartımız gerçekleşti ve sorgu sonucu 200 hariç diğer kayıtlar geldi fakat “OR” dan sonraki şartta gerçekleşti ve 40 zaten ilk şartta gelmişti 200 de bu şartla gelmiş oldu.Bu örneğimizde yukarıda bahsettiğim  ’ iki şartta doğruysa ikisi de gerçekleşir’  açıklaması için güzel bir örnek oldu.
“=” eşit operatöründe şart birebir tutmak zorundadır.
Örnek olarak Tbl_Cozumpark tablosunda AdiSoyadi Alanında “Hakan” olan veriyi getir dersem şartımla eşit bir isim olmadığından herhangi bir bildi gelmeyecektir fakat “Hakan UZUNER” şeklinde şartımı belirtirsem doğru veriyi çekebilirim.
“select * from Tbl_Cozumpark where AdiSoyadi = ‘Hakan UZUNER’”

image014

Select ile oldukça örnek yaptıktan sonra sıradaki SQL Sorgumuz “INSERT” yani tabloya veri eklemek için kullanılan sorgu şeklini inceleyelim.
Sorgunun standart dizilimi
“INSERT  INTO  TABLO  [(Alan1,Alan2)]  VALUES   (Veri1,Veri2)”  şeklindedir.
“INSERT” sorgusunda  şart aranmaz yani veriyi şu şartlara uyan alanlara ekle diyemezsiniz.
Örnek olarak Tbl_Cozumpark Tablomuza yeni bir kayıt ekleyelim.
“insert into Tbl_Cozumpark (AdiSoyadi,Gorevi)
VALUES
(‘Hakan UZUNER’,’MVP’)”

image015

Tabloda gördüğünüz gibi 3 adet sütun var fakat biz 2 adet sütuna bilgi girişi yaptık.
Sebebi ”id” sütununu otomatik artan bir sütun olarak oluşturduğum için bu alana ekleme yada güncelleme işlemi yapamayız.
Şimdiki örneğimizde “INSERT” ve “SELECT” cümleciklerini birlikte kullanarak başka bir tablodan çektiğimiz bilgiyi Tbl_Cozumpark tablosuna ekleyelim.
Oluşturduğumuz Tbl_Select tablosundaki  “Ümit KAYACAN”  verisini  “Select”  ile çekelim ve Tbl_Cozumpark Tablosuna “INSERT” ile ekleyelim.

image016

“insert into Tbl_Cozumpark (Gorevi,AdiSoyadi)

(Select ‘Yazar’,AdiSoyadi from Tbl_Select Where id=1)”

image017

Eklediğimiz bu veriyi görüntülemek için farklı bir yöntem kullanacağım. Öncelikle en son eklediğim veri olduğu için son kayıt sayısını bulup, sonrada koşullu Select sorgusuyla eklenen kaydı çekeceğim.
Son kaydı bulmak için “MAX” operatörünü kullanacağım ve yazacağım sorgu cümleciği
“select MAX(id) as SonKayit from Tbl_Cozumpark”
Sayesinde son kayıt sayısını bulacağım.

image018

İnsert ile ilgili yeterince örnek yaptık ve sıradaki sorgumuz “UPDATE” yani var olan bir veriyi güncelleme sorgusuna geçebiliriz.
“UPDATE” sorgusunun standart dizilimi
“UPDATE  TABLO  SET  SUTUN1  = YENİ  DEGER1, SUTUN2  =  YENİ DEGER2” şeklindedir  ve bu sorgu cümlesini kullanırken kesinlikle bir kez daha düşünülmesi gerekir. Bu SQL cümlesinin kullanımında tablonuzda tek bir kayıt dahi olsa “WHERE” koşulunu kullanmanızı tavsiye ederim aksi halde bütün kayıtlarınızı güncelleyebilir ve veri kaybı yaşayabilirsiniz.
İlk örneğimizi “WHERE” koşulu kullanmadan yapalım ve bakalım nasıl bir sorun yaşayacağız görelim.
Tbl_Hesapla tablomuz için
“update Tbl_Hesapla set Topla=100” SQL cümlesini kullanıyorum ve sonuç aşağıdaki gibi oluyor. Eğer ki bu tabloda gerçek şirket bilgileri olsaydı sonuç gerçekten çok üzücü olabilirdi.

image019

Başka bir Örneğimizde az önce eklediğimiz kayıt üzerinde bir güncelleme işlemi yapalım ve “MVP” bilgisini “MVP – Portal Kurucusu” şeklinde değiştirelim.

“Update Tbl_Cozumpark
Set
Gorevi = Gorevi + ‘ – Portal Kurucusu’
Where id =153”
SQL cümlesinde farklı bir yöntem olarak  “+” operatörünü kullandım. Bu sorguyu normal bir şekilde yazmamız  gerekirse
“Update Tbl_Cozumpark
Set
Gorevi = ‘MVP – Portal Kurucusu’
Where id =153”
Şeklinde de  yazabiliriz.

image020

Sıradaki örneğimizde ise az önce tamamiyle güncelleyerek bütün değerlerini  “100” yaptığımız Tbl_Hesapla Tablomuzla yapalım ve güncelleme işleminde “*” çarpma  ve “/” bölme işlem inide kullanarak tablomuza  yeni değerlerini yazalım.

“update Tbl_Hesapla set Topla = Topla * 5 / 2
WHERE
id = IN (1,2,3,4,5)”

SQL Cümlemize göre tablomuzda bulunan kayıt “100 * 5  = 500 /  2 = 250 ” olması gerekir ve 7 kayıttan sadece “1,2,3,4,5” id ‘ ye sahip olan kayıtlarda güncelleme işleminin gerçekleşmesi gerekir.

image021

“UPDATE” sorgumuza son örneğimizi muhasebe işlemlerinde işimize çok yarayacak bir komutla tamamlayalım. Örneğimizde çalışanların maaş bilgilerini tutan tablomuz olduğunu varsayalım ve maaş zammını “UPDATE ” sorgusuyla yapalım ve bir kişinin maaş’ını %10 arttıralım.
“update Tbl_Hesapla set Topla = Topla * 1.10
WHERE
id =6”
Sorguya göre şu anki değeri “100”  olan 6 id ‘sine sahip kişinin maaşı  “110” olması gerekir.

image022

Son olarak “DELETE” sorgu cümleciğimizi inceleyelim .
“DELETE” sorgusunun standart dizilimi
“DELETE FROM TABLO” şeklindedir .Bu sorguyu  asla ve asla  “WHERE” koşulu olmadan kullanmamanız gerektiği aklınızdan bir an bile çıkmamalıdır.
Sorguyu “WHERE ” koşulu kullanmadan çalıştırırsanız tablodaki bütün kayıtları silmiş olursunuz.

Örnek olarak Tbl_Cozumpark tablosundan koşul kullanarak bir kayıt silmeyi deneyelim.

“delete from Tbl_Hesapla
where
id =
(select MAX(id) from Tbl_Hesapla)”
“id” değerini Select ile aynı tablodan max operatörü ile çektim ve en son id olan 7 değerini where koşulu ile eşleştirerek mevcut kaydı silme işlemini gerçekleştirdim.

image023
Dilediğiniz kadar kompleks yapıda sorgular kurabilirsiniz, bu sizin SQL bilginize ve hayal gücünüze kalmış fakat yedekleme işlemini her zaman düzenli bir şekilde yapmayı unutmamalısınız.

email

Bu yazı blog üzerinde Tayfun DEĞER tarafından paylaşılmıştır. 2009 yılında açılan blog kısa zaman içerisinde büyük bir izleyici kitlesine sahip olmuştur.Tayfun DEĞER danışmanlık ve eğitimler vermektedir. vExpert 2013-2015, VCP5, VCP5-DT, VCP-Cloud ve MCSE sertifikalarına sahiptir.Twitter 'dan @tayfundeger veya RSS ile sitedeki değişiklikleri takip edebilirsiniz.