MID() fonksiyonu ile metin tipindeki alanlardaki verilerin istediğimiz bir yeri almamıza yarar. Bir alanda birden fazla değerin birleşmesi sonucu bir kayıt tutuluyorsa bunları uygun durumlara göre parçalayıp kullanmaya yarar.

MID() Kullanım Biçimi
MID(alan_adi,baslangic_karakteri,secilecek_karakter)
Not1: MS SQL Server 'da MID yerine SUBSTRING ifadesi de kullanılabilir. Yapı aynıdır, sadece MID kelimesi yerine SUBSTRING kelimesi yazılır.
Not2: Son ifade olan secilecek_karakter belirtilmediği takdirde alanın sonuna kadar seçim yapılır.
Aşağıdaki gibi tablomuz olsun. Bu tabloda Siparis_no alanına yazılan değerde önce siparişin alındığı yıl, daha sonra araya tire işareti koyarak siparişin alındığı il ve araya tire işareti koyarak sipariş model kodu yazıldığını düşünelim
idSatici_PersonelSiparis_no
1Salih ESKİOĞLU2014-34-2874529
2Ayhan ÇETİNKAYA2014-34-8745522
3Serkan ÖZGÜREL2013-06-9963322
4İlhan ÖZLÜ2013-34-8523663

Örnek 1:
SELECT MID(siparis_no,9) AS siparis_edilen_urunler
FROM Siparisler

Çıktısı:
siparis_edilen_urunler
2874529
8745522
9963322
8523663
Mevcut yapıda sipariş numaramızın yapısı gereği tire işretinin son grubu satılan malın kodunu oluşturmaktadır. Dolayısı ile ilk iki gurubu hesaba katmayaıp son gruptaki değeri elde edebilmek için mid fonksiyonuna alan adından sonra 9 rakamı yazıldı. Çünkü ürün kodu dokuzunc karakterden başlamaktadır. Burada dikkat edilecek olursa mid fonksiyonun son yapısı olan secilecek_karakter belirtilmemiştir. Doalyısı ile dokuzuncu karakterden başlayıp sonuna kadar seçim yapılır.

Örnek 2:SELECT MID(siparis_no,9) AS siparis_edilen_urunler_2014
FROM Siparisler
WHERE MID(siparis_no,1,4)='2014'

Çıktısı:
siparis_edilen_urunler_2014
2874529
8745522
Bu kod ile sadece 2014 yılında satılan ürünlerin listesi elde edilmiştir. Dikkat edeceğiniz üzere iki tane MID kullanılmıştır. Birinci mid bizim sonucunu istediğimiz durumdur. Yani urunun numarasını elde eder. İkinci MID ise WHERE yapısı ile kullanılmıştır. Burada birinci grubumuz yılı oluşturduğu için mid yapısı ile içinde 1 ve 4 rakamı kullanılmıştır. 1 rakamı ile seçime birinci karakterden başlanacağını ve 4 rakamı ile de dört karakter kadar seçileceği belirtilmiştir. Yani 2014 yılında ki kayıtlar seçilmiş olur.

SQL MID() Kullanımı

SQL LCase() ve Lower() Kullanımı
LCase() fonksiyonu ile metin tipindeki alanlardaki verileri ufak karaktere çevirmeye yarar. Alandaki verilen hepsi veya bir kısmı büyük karakterle yazılmış olabilir. Bu fonksiyon ile bütün karakterler ufak harfe çevrilir.

LCase() Kullanım Biçimi
Select LCase(alan_adi) From Tablo
LOWER() Kullanım Biçimi
Select LOWER(alan_adi) From Tablo
MS SQL Server 'da LOWER kullanılır.
Aşağıdaki gibi tablomuz olsun.
idPersonel_adi
1Salih ESKİOĞLU
2Ayhan ÇETİNKAYA
3Serkan ÖZGÜREL
4İlhan ÖZLÜ

Örnek:
SELECT LCase(Personel_adi) AS Personel_adi_ufak
FROM Personeller

Çıktısı:
Personel_adi_ufak
salih eskioğlu
ayhan çetinkaya
serkan özgürel
ilhan özlü
İlgili alandaki tüm karakterler ufak harfe çevirir. Burada AS ifadesini kullanarak alana geçici bir isim verilmiştir. Eğer AS ifadesini kullanmasaydık ilgili alan adı Exr1000 olarak gözükecekti.

Örnek 2:SELECT LOWER(Personel_adi) AS Personel_adi_ufak
FROM Personeller

Çıktısı:
Personel_adi_ufak
salih eskioğlu
ayhan çetinkaya
serkan özgürel
ilhan özlü
Bu kod MS SQL Server tarafında kullanılan koddur. Yani LCase yerine LOWER kullanılmıştır. Ama çıktısı aynıdır.

SQL LCase() ve Lower() Kullanımı

SQL UCase() ve Upper() Kullanımı
UCase() fonksiyonu ile metin tipindeki alanlardaki verileri büyük karaktere çevirmeye yarar. Alandaki verilen hepsi veya bir kısmı küçük karakterle yazılmış olabilir. Bu fonksiyon ile bütün karakterler büyük harfe çevrilir.

UCase() Kullanım Biçimi
Select UCase(alan_adi) From Tablo
UPPER() Kullanım Biçimi
Select UPPER(alan_adi) From Tablo
MS SQL Server 'da UPPER kullanılır.
Aşağıdaki gibi tablomuz olsun.
idPersonel_adi
1Salih ESKİOĞLU
2Ayhan ÇETİNKAYA
3Serkan ÖZGÜREL
4İlhan ÖZLÜ

Örnek:
SELECT UCase(Personel_adi) AS Personel_adi_buyuk
FROM Personeller

Çıktısı:
Personel_adi_buyuk
SALİH ESKİOĞLU
AYHAN ÇETİNKAYA
SERKAN ÖZGÜREL
İLHAN ÖZLÜ
İlgili alandaki tüm karakterler büyük harfe çevirir. Burada AS ifadesini kullanarak alana geçici bir isim verilmiştir. Eğer AS ifadesini kullanmasaydık ilgili alan adı Exr1000 olarak gözükecekti.
 

Örnek 2:SELECT UPPER(Personel_adi) AS Personel_adi_buyuk
FROM Personeller

Çıktısı:
Personel_adi_ufak
SALİH ESKİOĞLU
AYHAN ÇETİNKAYA
SERKAN ÖZGÜREL
İLHAN ÖZLÜ
Bu kod MS SQL Server tarafında kullanılan koddur. Yani UCase yerine UPPER kullanılmıştır. Ama çıktısı aynıdır.

SQL UCase() ve Upper() Kullanımı

SQL GROUP BY Kullanımı
Bir fonksiyonu kullanırken bazı durumlarda GROUP BY fonksiyonu ile belli alanlara göre gruplamak gerekebilir.

GROUP BY Kullanım Biçimi
SELECT alan_adi1, fonksiyon(alan_adi2)
FROM tablo
GROUP BY (alan_adi)
Aşağıdaki gibi Ürünler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi950
4Çamaşır Makinesi850
Örnek1:
SELECT Urun_adi, SUM(Fiyat)
FROM Urunler
Group By Urun_adi
Çıktısı:
Urun_adiExpr1000
Buzdolabi1500
LCD TV1850
Çamaşır Makinesi1800
Örnekte Urun_adi alanına göre bir gruplama işlemi yapılmıştır. Ve her grubun fiyatı ayrı olarak toplanmıştır. Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT Urun_adi, Count(Urun_adi) AS Urun_adedi
FROM Urunler
Group By Urun_adi
Çıktısı:
Urun_adiUrun_adedi
Buzdolabi1
LDC TV1
Çamaşır Makinesi2

Burada ürünler gruplanıp, hangi üründen kaç tane olduğu bilgisi elde edilmiş. Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.

SQL GROUP BY Kullanımı

SQL SUM() Kullanımı
SUM() fonksiyonu ile belirtilen alandaki değerlerin toplamı elde edilir. Elimizdeki ürnlerin toplam değerini bulmak için kullanılabilir. Veya elimizdeki toplam stok adedini bulabiliriz.
Sadece sayısal alanlarda kullanılabilir.

SUM() Kullanım Biçimi
SELECT SUM(alan_adi) FROM tablo
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi 1000 Devir950
4Çamaşır Makinesi 800 Devir850
Örnek1:
SELECT Sum(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
5150
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT Sum(Fiyat) AS Camasir_Mak_Toplam_Degeri
FROM Urunler
WHERE Urun_adi Like 'Çamaşır Makinesi%'
Çıktısı:
Camasir_Mak_Toplam_Degeri
1800

Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir. Dikkat edileceği üzere  WHERE kullanılarak elimizde bulunan bütün çamaşır makinelerinin toplam değeri elde edilmiş oldu.

SQL SUM() Kullanımı( SQL Toplam İşlemi)

MAX() fonksiyonu belirtilen alandaki en büyük değeri verir. Tablomuzdaki 100 lerce ürün kaydının olduğunu düşünün. En yüksek fiyatın ne olduğunu bulmak istediğimizi düşünün. Böyle bir durumda tek tek fiyatları kontrol edip en pahalı fiyatı bulabiliriz. Ancak bu oldukça büyük bir zaman kaybına yol açacaktır. Bunun yerine bir sql kodu ile sonuca direk ulaşabiliriz. Aynı şekilde muhasebe departmanı müdürü veya şirektin genel müdürü, personele ödediği en yüksek maaşı görmek isteyebilir. Bu durumda da bir sql kodu ile sonuca gidebiliriz. Veya sıcaklık ölçüm değerlerinin olduğu bir tablo düşünün. Ay içerisinde veya yıl içinde en yüksek sıcaklık değerinin ne olduğunu bulmak istediğimiz zaman MAX() fonksiyonu oldukça faydalı bir kullanım olacaktır.
Sadece sayısal alanda değil aynı zamanda da metinsel alanlarda da kullanılabilir. Bu durumda metinsel veriyi A'dan Z'ye dizip en sondaki kaydı verecektir.

MAX() Kullanım Biçimi
SELECT MAX(alan_adi) FROM tablo
Aşağıdaki gibi Ürünler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi950
4Bulaşık Makinesi850
Örnek1:
SELECT Max(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
1850
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT Max(Fiyat) AS EnYuksekFiyat
FROM Urunler
Çıktısı:
EnYuksekFiyat
1850

Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.

SQL MAX() Kullanımı

LAST() fonksiyonu belirtilen alandaki son kayıt değerini verir. Bu fonksiyon sadece MS Access veritabanlarında çalışmaktadır. Diğer veritabanlarında son kayda ulaşmak için faklı sql kodları kullanılmaktadır. Ancak bu kullanım veritabanının o anki don kaydına erişim sağlamaz. Kayıtları alafebetik ve numarasal olarak dizdirdikten sonra son kayıt değerine erişilir.

FIRST() Kullanım Biçimi
SELECT LAST(alan_adi)
FROM tablo
SQL Server Veritabanlarında ilk kaydı bulma:
SELECT TOP 1 alan_adi
FROM tablo
ORDER BY alan_adi DESC
MySQL Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
ORDER BY alan_adi DESC
LIMIT 1
ORACLE  Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
ORDER BY alan_adi DESC
WHERE ROWNUM <= 1
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adi
1Buzdolabı
2LCD TV
3Çamaşır Makinesi
4Çamaşır Makinesi
Örnek1:
SELECT LAST(Urun_adi)
FROM Urunler
Çıktısı:
Expr1000
Çamaşır Makinesi
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğini görebilirsiniz.
Örnek2:
SELECT LAST(Urun_adi) AS Son_Kayit
FROM Urunler

Çıktısı:
Birinci_Kayit
Çamaşır Makinesi
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.
Örnek3:
SELECT TOP 1 Urun_adi
FROM Urunler
ORDER BY Urun_adi DESC

Çıktısı:
Urun_adi
LCD TV
SELECT TOP 1 ile SQL Server veritabanlarında ilk kaydı bulabiliriz. Dikkat edileceği üzere alan adı Expr1000 değil, direk olarak veritabanındaki isimle geldi. Ancak dikkat edeceğiniz üzere bizim tablomuzdaki son kayıt Çamaşır Makinesi. DESC ilk kayıtlar büyükten küçüğe göre dizilince LCD TV başa geçmiş oldu. SELECT TOP 1 ile de son ilk kaydı yani aslında sıralanmış ilk kaydın değerini almış olduk
Örnek4:
SELECT LAST(id) AS Son_Kayit_id
FROM Urunler
WHERE Urun_adi<>'Çamaşır Makinesi'

Çıktısı:
Son_Kayit_id
2
Bu örnekte WHERE ile Urun_adi alanında Çamaşır Makinesi yazmayan kayıtlar seçilmiştir. Seçili olan bu kayıtlardan sonuncu olanın id alanındaki değer alınır.
Örnek5:
SELECT FIRST(Urun_adi) AS Sirali_ilk_urun
FROM Urunler
ORDER BY Urun_adi DESC

Çıktısı:
Sirali_ilk_urun
LCD TV

Tablomuzdaki kayıtları Urun_adi alanına göre DESC kullanılarak büyükten küçüğe sıralayarak dizdiğimiz zaman ilk kayıt değişmektedir.

SQL LAST() Kullanımı(SQL Son Kayıtı Bulmak)

FIRST() fonksiyonu belirtilen alandaki ilk kayıt değerini verir. Bu fonksiyon sadece MS Access veritabanlarında çalışmaktadır. Diğer veritabanlarında ilk kayda ulaşmak için faklı sql kodları kullanılmaktadır. 

FIRST() Kullanım Biçimi
SELECT FIRST(alan_adi)
FROM tablo
SQL Server Veritabanlarında ilk kaydı bulma:
SELECT TOP 1 alan_adi
FROM tablo
MySQL Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
LIMIT 1
ORACLE  Veritabanlarında ilk kaydı bulma:
SELECT alan_adi
FROM tablo
WHERE ROWNUM <= 1
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adi
1Buzdolabı
2LCD TV
3Çamaşır Makinesi
4Çamaşır Makinesi
Örnek1:
SELECT FIRST(Urun_adi)
FROM Urunler
Çıktısı:
Expr1000
Buzdolabi
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğini görebilirsiniz.
Örnek2:
SELECT FIRST(Urun_adi) AS Birinci_Kayit
FROM Urunler

Çıktısı:
Birinci_Kayit
Buzdolabı
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir.
Örnek3:
SELECT TOP 1 Urun_adi
FROM Urunler

Çıktısı:
Urun_adi
Buzdoalbi
SELECT TOP 1 ile SQL Server veritabanlarında ilk kaydı bulabiliriz. Dikkat edileceği üzere alan adı Expr1000 değil, direk olarak veritabanındaki isimle geldi.
Örnek4:
SELECT FIRST(id) AS Birinci_Kayit_id
FROM Urunler
WHERE Urun_adi='Çamaşır Makinesi'

Çıktısı:
Birinci_Kayit_id
3
Bu örnekte WHERE ile Urun_adi alanında Çamaşır Makinesi yazan kayıtlar seçilmiştir. Seçili olan bu kayıtlardan birinci olanın id alanındaki değer alınır.
Örnek5:
SELECT FIRST(Urun_adi) AS Sirali_ilk_urun
FROM Urunler
ORDER BY Urun_adi DESC

Çıktısı:
Sirali_ilk_urun
LCD TV

Tablomuzdaki kayıtları Urun_adi alanına göre DESC kullanılarak büyükten küçüğe sıralayarak dizdiğimiz zaman ilk kayıt değişmektedir.

SQL FIRST() Kullanımı(SQL İlk Kayıtı Bulmak)

COUNT() fonksiyonu belirtilen alandaki veya tablodaki toplam kayıt sayısını verir. Burada dikkat edilmesi gereken alan üzerindeki kayıt sayıları alınırken boş verilerin dikkate alınmamasıdır. 

COUNT() Kullanım Biçimi
SELECT COUNT(alan_adi) FROM tablo
veya
SELECT COUNT(*) FROM tablo
veya
SELECT COUNT(DISTINCT alan_adi) FROM tablo
Birinci kullanım biçiminde belirttiğimiz alandaki boş olanlar hariç kaç tane kayıt olduğunu elde ederiz. İkinci kullanım biçiminde ise tablomuzdaki toplam kayıt sayısını elde ederiz. DISTNINCT kullanımında ise belirtilen alandaki tekrar eden kayıtlar sadece bir defa sayılır. DISTINCT kullanımı MS Access veritabanlarında desteklenmemektedir.
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi 
4Çamaşır Makinesi850
Örnek1:
SELECT COUNT(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
3
Tablomuzda 4 tane kayıt olması rağmen kodumuz bize 3 değerini döndürdü. Çünkü fiyat alanındaki verilerden birisi boştur. Boş veriler dikkat alınmamaktadır. Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğini görebilirsiniz.
Örnek2:
SELECT COUNT(*) AS Camasir_Mak_Sayisi
FROM Urunler
WHERE Urun_adi='Çamaşır Makinesi'
Çıktısı:
Camasir_Mak_Sayisi
2
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir. Dikkat edileceği üzere  WHERE kullanılarak elimizde bulunan çamaşır makinelerinin sayısı elde edilmiş oldu.
Örnek3:
SELECT COUNT(DITINCT Urun_adi) AS Tekrarsiz_kayit_sayisi
FROM Urunler

Çıktısı:
Tekrarsiz_kayit_sayisi
3

Tablomuzda Urun_adi alanında bulunan kayıtlardan tekrar etmeyen kayıtlar seçiliyor. Toplamda 4 tane kayıt olmasına rağmen Çamaşır makinesi iki defa olduğu için kodumuz bize sonuç olarak 3 değerini döndürmektedir.

SQL COUNT() Kullanımı

AVG() fonksiyonu ile belirtilen alandaki değerlerin ortalaması elde edilir. Elimizdeki ürnlerin ortalama değerini bulmak için kullanılabilir.
Sadece sayısal alanlarda kullanılabilir.

AVG() Kullanım Biçimi
SELECT AVG(alan_adi) FROM tablo
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyat
1Buzdolabı1500
2LCD TV1850
3Çamaşır Makinesi 1000 Devir950
4Çamaşır Makinesi 800 Devir850
Örnek1:
SELECT AVG(Fiyat)
FROM Urunler
Çıktısı:
Expr1000
1287,5
Burada görüldüğü üzere alan adı Expr1000 olarak görünmekedir. Aşağıdaki örnekte bu ismi daha anlamlı hale nasıl getirildiğinigörebilirsiniz.
Örnek2:
SELECT AVG(Fiyat) AS Camasir_Mak_Ortalama_Degeri
FROM Urunler
WHERE Urun_adi Like 'Çamaşır Makinesi%'
Çıktısı:
Camasir_Mak_Ortalama_Degeri
900
Burada AS ile ilgili alanın adı daha anlamlı bir hale getirilmiştir. Dikkat edileceği üzere  WHERE kullanılarak elimizde bulunan bütün çamaşır makinelerinin oratalam değeri elde edilmiş oldu.
Örnek3:
SELECT Urun_adi,Fiyat
FROM Urunler
WHERE Fiyat>(SELECT AVG(Fiyat) FROM Urunler)
Çıktısı:
Urun_adiFiyat
Buzdolabi1500
LCD TV1850

Bu örnekte fiaytı ortlamanın üstünde olan ürünler listelenmektedir. Önce ikinci SELECT yapısı ile ortalama fiyat bilgisi elde ediliyor. Daha sonra bu bilgi WHERE ile yapısı ile fiyat alanına aktarılıyor. Kontrol işareti olarak > yani büyüktür işareti kullanılarak elde edilen ortalama fiyattan büyük olan değerlerin alınması sağlanıyor.

SQL AVG() Kullanımı( SQL Fonksiyon)

   Devexpressde gridview doldurmak aşağıdaki gibi olmaktadir;    


        bag.Open();
        SqlDataAdapter myAdapter = new SqlDataAdapter();
        DataSet myDataSet = new DataSet();
        SqlCommand komut = new SqlCommand("up_stok_hareket @action = 'L'", bag);
        myAdapter.SelectCommand = komut;
        myAdapter.Fill(myDataSet, "up_stok_hareket");
        ASPxGridView1.DataSource = myDataSet;
        ASPxGridView1.AutoGenerateColumns = true;
        ASPxGridView1.DataBind();
        bag.Close();

Devexpress ASPX Gridview Doldurmak

SQL ile NULL kayıtları Bulmak
Tablomuzdaki veri girişleri esnasında bazı alanlara veriler girilmemiş olabilir. Bu durumda veritabanından çekilen raporlarda bazı hatalar oluşabileceği gibi ortaya çıkan spnuçlar da yanıltıcı olabilir. Oluşturacağımız sorgu ile tablomuzdaki boş kayıtları göz ardı ederek daha sağlıklı sonuçlar elde edebiliriz. Bunun için WHERE ifadesinden sonra IS NULL operatörü ile boş kayıtlar seçilebileceği gibi IS NOT NULL operatörü ile de boş olmayan kayıtlar seçilebilir.

Not: NULL değer ile 0 değeri birbirinin aynısı değildir. İlgili alana sıfır değeri girilmiş olsa bile o alan NULL yani boş değildir.

Boş kayıtları bulmak için kullanım biçimi:
SELECT alan_ad(lari)
FROM tablo_adi
WHERE alan_adi IS NULL
Boş olmayan kayıtları bulmak için kullanım biçimi:
SELECT alan_ad(lari)
FROM tablo_adi
WHERE alan_adi IS NOT NULL
Aşağıdaki gibi Urunler tablomuz olsun
idUrun_adiFiyatStok
1Buzdolabı150010
2LCD TV18505
3Çamaşır Makinesi 1000 Devir 1
4Çamaşır Makinesi 800 Devir8501
Örnek1:
SELECT Urun_adi, fiyat
FROM Urunler
WHERE Fiyat IS NULL
Çıktısı:
Urun_adiFiyat
Çamaşır Makinesi 1000 Devir 
Tablomuzda fiyatı olmayan ürünlerin listesini almak için yukarudaki kod kullanılabilir..
Örnek2:
SELECT Urun_adi,(stok*fiyat) AS Stok_degeri
FROM Urunler
WHERE Fiyat IS NOT NULL
Çıktısı:
Urun_adiStok_degeri
Buzdolabı15000
LCD TV9250
Çamaşır Makinesi 800 Devir850

Ürünlerin stok adedi ile birim fiyatını çarparak elimizdeki ürünlerin toplam değerini bulabiliriz. Ancak fiyatın boş olduğu durumda stok adedi ile çarpımda sorun olacaktır. Bu sebeple IS NOT NULL kullanılarak fiayt alanı boş olan kayıt hesaplamaya dahil edilmemiştir.

SQL ile NULL kayıtları Bulmak

SQL AUTO INCREMENT (Otomatik Artan Numara)
Tablomuza her kayıt eklendiğinde bir alanda bulunan değerin benzersiz olmasını ve otomatik olarak artmasını isteyebiliriz. Daha çok kayıtlarımız için bir id numarası alanı kullanıyorsak, auto increment kullanılır. Sadece sayısal alalarda kullanılır.

Otomatik numara artışı olan bir alana yazdığımız program üzerinden değer göndermeyiz. Gönderdiğimiz takdirde hata alırız. Kayıt ekleme örneği:
INSERT INTO Personel (adi,soyadi) VALUES ('Salih','ESKİOĞLU')

Burada görüldüğü gibi id alanı hiç kullanılmadı. Veritabanımıza kayıt eklenirken id alanına numara otomatik olarak verilecektir.
Yani INSERT INTO Personel (id,adi,soyadi) VALUES (5,'Salih','ESKİOĞLU') şeklinde yazarsak hata alırız.

Tablomuzu oluştururken ilgili alana kriter olarak tanımlanır. Farklı veritabanlarında kullanım biçimi değişiktir.


MySQL kullanım biçimine örnek:
CREATE TABLE  Personel
(
id int NOT NULL AUTO_INCREMENT,
adi varchar(10),
soyadi varchar(10),
PRIMERY KEY (id)
)

AUTO_INCREMENT ifadesi ile id alanına 1 'den başlayarak her seferde bir sayı aotomatik artan numara eklenmesi sağlanabilir. Eğer ilk başlangıç değerinin 100 olmasını istiyorsak ilgili satırı söyle yazmamız gerekir:

id int NOT NULL AUTO_INCREMENT=100
SQL Server kullanım biçimine örnek:
CREATE TABLE  Personel
(
id int IDENTITY(1,1) PRIMARY KEY,
adi varchar(10),
soyadi varchar(10)
)
SQL Server tarafında IDENTITY kelimesi kullanılır. Parantezin içindeki birinci rakam başlama değerini, ikinci rakam ise artış miktarını belirler. Bu örnekte ilk numara 1 'den başlayacaktır ve her kayıt eklendiğinde id alanı bir numara artacaktır. Eğer ilk kayıt numarasını 50'den başlamasını ve 5 farkla eklenmesini istersek IDENTITY(50,5) yazmamız yeterli olacaktır.

MS Access kullanım biçimine örnek:
CREATE TABLE  Personel
(
id integer PRIMARY KEY AUTOINCREMENT,
adi Text,
soyadi Text
)
Access veritabanlarında AUTOINCEMENT kelimesi kullanılır. Varsayılan olarak 1 'den başlar ve her kayıt için 1 numara artarak gider. AUTOINCREMENT(500,5) ile ilk kayıt numarası 500 olur ve eklenen her kayıt için üzerinde 5 eklenerek gider.
 
ORACLE kullanım biçimine örnek:
CREATE Sequence otomatik_artis
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
)

Görüldüğü üzere Oracle veritbanlarında durum biraz farklı. Önce tablomuzu oluşturuyor. Tablomuzu oluşturduktan sonra Create Squence ile otomatik artış tanımı yapıyoruz. Burada yazılan otomatik_artis ifadesi tablomuzda yeni bir alan oluşturmaz. Bu bir tanımdır. Oluşturduğumuz bu tanımı tablomuzda birden fazla alanda kullanabiliriz.

Burada;
MINVALUE 1 ile alanın alabileceği en düşük değer belirtilir.
STARVALUE WITH 1 ile kaydın başlaam değer belirtilir.
INCREMENT BY 1 ile artış değeri belirtilmiştir.
CACHE 10 ile veritabanı performansını arttırmak için sonraki verilecek 10 numarayı hafızaya alır ve yeni kayıt eklenirken veritabanına bakıp sonr numarayı arttırmak yerine hafızadan sıradaki numarayı otomatik olarak verir. Özellikle artış değeri 1 olmayann durumlarda performansı arttırır.

Kayıt giriş örneği:
INSERT INTO Personel (ID,Adi,calistigi_ay_sayisi) VALUES(otomatik_artis.nextval,'Salih',otomatik_artis.nextval)

bu örnekte görüleceği üzere diğer veritabanlarından farklı olarak ID alanıda yazılmıştır. Otomatik_artis.nextval ile id alanına otomatik sayı artışı uygulanmıştır. Ayrıca calistigi_ay_sayisi alanına da aynı tanım uygulanmıştır. Neticede dönemsel çalışan bir personelimiz varsa en son kayda bakarak toplam kaç ay çalıştığını öğrenebiliriz.

SQL AUTO INCREMENT (Otomatik Artan Numara)

DEFAULT kriteri ile oluşturduğumuz tabloda bir alanın değeri eğer kullanıcı tarafından boş olarak geçilirse, sistemin o alana otomatik olarak bir değer atamasını sağlayabiliriz. Böylece verilerimizin bütünlüğü sağlanmış olacağı gibi ileride geliştireceğimiz uygulamalarda hata ile karşılaşma ihtimalimizde düşecektir.

DEFAULT Kullanım Biçimi
CREATE TABLE Kargo
(
id int,
adi_soyadi varchar(20) ,
adres varchar(20),
odeme_tipi varchar(25) DEFAULT 'Ücret Alıcı'
)
Yukarıdaki örnekte kargo takibi yapmak üzere Kargo isminde bir tablo oluşturulmuştur. Eğer yeni bir kargo takip kaydı girilirken odeme_tipi bilgisi boş geçilirse otomatik olarak ilgili alana 'Ücret Alıcı' ifadesi yazılacaktır. DEFAULT kriteri ile sadece belirleyeceğimiz bir veri değil, sistem verileride kullanılabilir.
CREATE TABLE Kargo
(
id int,
adi_soyadi varchar(20) ,
adres varchar(20),
kayit_tarihi date DEFAULT getdate()

)
Görüldüğü gibi kayit_tarihi alanına eğer bir değer belirtmezsek, otomatik oalrak günün tarihini atacaktır. Buradaki  getdate() ile günü tarihi bilgisi elde edilmektedir.

Yuakrıdaki örnekler hep yeni bir veritabanı oluşturuken kullanılan örneklerdir. Ancak var olan bir veritabanında bir alanı DEFAULT yapmak istersek ALTER yapısını kullanmamız gerekir.

MySQL veritabanlarında kullanım biçimine örnek:
ALTER TABLE Kargo
ADD odeme_bilgisi SET DEFAULT 'Ücret Alıcı'
SQL Server / MS Acess veritabanlarında kullanım biçimine örnek:
ALTER TABLE Kargo
ADD COLUMN  odeme_bilgisi SET DEFAULT 'Ücret Alıcı'
Oracle  veritabanlarında kullanım biçimine örnek:
ALTER TABLE Kargo
MODIFY odeme_bilgisi DEFAULT 'Ücret Alıcı'


Eğer DEFAULT olarak kriterlendirilmiş alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir.
 SQL Server / Oracle / MS Acess ortamlarında DEFAULT yapısını kaldırmak:
ALTER TABLE Kargo
ALTER COLUMN odeme_bilgisi DROP DEFAULT
MySQL ortamlarında UNIQUE yapısını kaldırmak:
ALTER TABLE Kargo
ALTER COLUMN odeme_bilgisi DROP DEFAULT

Burada dikkat edilmesi gereken nokta iki tane ALTER ifadesinin kullanılmasıdır. Yani ALTER TABLE Kargo DROP odeme_bilgisi DEFAULT kullanımı yanlış olacaktır. Çünkü normal şartlarda direk olarak DROP yazılırsa belirtilen alan tablodan silinir. Bunun için iki defa ALTER kullanılmıştır.

SQL DEFAULT Kullanımı