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() 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.
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
id | Satici_Personel | Siparis_no |
1 | Salih ESKİOĞLU | 2014-34-2874529 |
2 | Ayhan ÇETİNKAYA | 2014-34-8745522 |
3 | Serkan ÖZGÜREL | 2013-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ı:
Ö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
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.
id | Personel_adi |
1 | Salih ESKİOĞLU |
2 | Ayhan ÇETİNKAYA |
3 | Serkan Ö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ı:
Ö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.
.
1
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
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.
id | Personel_adi |
1 | Salih ESKİOĞLU |
2 | Ayhan ÇETİNKAYA |
3 | Serkan Ö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
Aşağıdaki gibi Ürünler tablomuz olsun
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) |
id | Urun_adi | Fiyat |
1 | Buzdolabı | 1500 |
2 | LCD TV | 1850 |
3 | Çamaşır Makinesi | 950 |
4 | Çamaşır Makinesi | 850 |
Örnek1:
SELECT Urun_adi, SUM(Fiyat)
FROM Urunler
Group By Urun_adi
FROM Urunler
Group By Urun_adi
Çıktısı:
Urun_adi | Expr1000 |
Buzdolabi | 1500 |
LCD TV | 1850 |
Çamaşır Makinesi | 1800 |
Ö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
FROM Urunler
Group By Urun_adi
Çıktısı:
Urun_adi | Urun_adedi |
Buzdolabi | 1 |
LDC TV | 1 |
Çamaşır Makinesi | 2 |
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.
.
1
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
Aşağıdaki gibi Urunler tablomuz olsun
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 |
id | Urun_adi | Fiyat |
1 | Buzdolabı | 1500 |
2 | LCD TV | 1850 |
3 | Çamaşır Makinesi 1000 Devir | 950 |
4 | Çamaşır Makinesi 800 Devir | 850 |
Örnek1:
SELECT Sum(Fiyat)
FROM Urunler
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%'
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
Aşağıdaki gibi Ürünler tablomuz olsun
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 |
id | Urun_adi | Fiyat |
1 | Buzdolabı | 1500 |
2 | LCD TV | 1850 |
3 | Çamaşır Makinesi | 950 |
4 | Bulaşık Makinesi | 850 |
Örnek1:
SELECT Max(Fiyat)
FROM Urunler
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
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
SQL Server Veritabanlarında ilk kaydı bulma:
MySQL Veritabanlarında ilk kaydı bulma:
ORACLE Veritabanlarında ilk kaydı bulma:
Aşağıdaki gibi Urunler tablomuz olsun
FIRST() Kullanım Biçimi
SELECT LAST(alan_adi) FROM tablo |
SELECT TOP 1 alan_adi FROM tablo ORDER BY alan_adi DESC |
SELECT alan_adi FROM tablo ORDER BY alan_adi DESC LIMIT 1 |
SELECT alan_adi FROM tablo ORDER BY alan_adi DESC WHERE ROWNUM <= 1 |
id | Urun_adi |
1 | Buzdolabı |
2 | LCD TV |
3 | Çamaşır Makinesi |
4 | Çamaşır Makinesi |
Örnek1:
SELECT LAST(Urun_adi)
FROM Urunler
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ı:
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 UrunlerORDER BY Urun_adi DESC
Çıktısı:
FROM UrunlerORDER 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ı:
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ı:
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
SQL Server Veritabanlarında ilk kaydı bulma:
MySQL Veritabanlarında ilk kaydı bulma:
ORACLE Veritabanlarında ilk kaydı bulma:
Aşağıdaki gibi Urunler tablomuz olsun
FIRST() Kullanım Biçimi
SELECT FIRST(alan_adi) FROM tablo |
SELECT TOP 1 alan_adi FROM tablo |
SELECT alan_adi FROM tablo LIMIT 1 |
SELECT alan_adi FROM tablo WHERE ROWNUM <= 1 |
id | Urun_adi |
1 | Buzdolabı |
2 | LCD TV |
3 | Çamaşır Makinesi |
4 | Çamaşır Makinesi |
Örnek1:
SELECT FIRST(Urun_adi)
FROM Urunler
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ı:
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ı:
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ı:
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ı:
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.
.
1
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
veya
veya
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
COUNT() Kullanım Biçimi
SELECT COUNT(alan_adi) FROM tablo |
SELECT COUNT(*) FROM tablo |
SELECT COUNT(DISTINCT alan_adi) FROM tablo |
Aşağıdaki gibi Urunler tablomuz olsun
id | Urun_adi | Fiyat |
1 | Buzdolabı | 1500 |
2 | LCD TV | 1850 |
3 | Çamaşır Makinesi | |
4 | Çamaşır Makinesi | 850 |
Örnek1:
SELECT COUNT(Fiyat)
FROM Urunler
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'
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ı:
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
Aşağıdaki gibi Urunler tablomuz olsun
Sadece sayısal alanlarda kullanılabilir.
AVG() Kullanım Biçimi
SELECT AVG(alan_adi) FROM tablo |
id | Urun_adi | Fiyat |
1 | Buzdolabı | 1500 |
2 | LCD TV | 1850 |
3 | Çamaşır Makinesi 1000 Devir | 950 |
4 | Çamaşır Makinesi 800 Devir | 850 |
Örnek1:
SELECT AVG(Fiyat)
FROM Urunler
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%'
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)
FROM Urunler
WHERE Fiyat>(SELECT AVG(Fiyat) FROM Urunler)
Çıktısı:
Urun_adi | Fiyat |
Buzdolabi | 1500 |
LCD TV | 1850 |
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();
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:
Boş olmayan kayıtları bulmak için kullanım biçimi:
Aşağıdaki gibi Urunler tablomuz olsun
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 |
SELECT alan_ad(lari) FROM tablo_adi WHERE alan_adi IS NOT NULL |
id | Urun_adi | Fiyat | Stok |
1 | Buzdolabı | 1500 | 10 |
2 | LCD TV | 1850 | 5 |
3 | Çamaşır Makinesi 1000 Devir | 1 | |
4 | Çamaşır Makinesi 800 Devir | 850 | 1 |
Örnek1:
SELECT Urun_adi, fiyat
FROM Urunler
WHERE Fiyat IS NULL
FROM Urunler
WHERE Fiyat IS NULL
Çıktısı:
Urun_adi | Fiyat |
Ç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
FROM Urunler
WHERE Fiyat IS NOT NULL
Çıktısı:
Urun_adi | Stok_degeri |
Buzdolabı | 15000 |
LCD TV | 9250 |
Çamaşır Makinesi 800 Devir | 850 |
Ü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:
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:
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:
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) ) |
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.
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.
.
1
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
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.
Eğer DEFAULT olarak kriterlendirilmiş alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir.
MySQL ortamlarında UNIQUE yapısını kaldırmak:
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.
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ı' ) |
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:
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 |
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ı
Kaydol:
Kayıtlar
(
Atom
)