Select Sorgusu
Sql komutlarından select sorgusu ve myadmin üzerinden anlatımı
SELECT
Select SQL dilinde bilgi gormek almak icin kullanilir
Bu komut herhangibir table olmadan da calisir. Herhangi bir degere veya global degere bu komut ile bakabiliriz.
Örneğin;
SELECT merhaba ben cici;
SELECT 10000 3849
Tablolardan bilgi gormek icin en basit kullanim sekli asagidaki gibidir.
SELECT * FROM tablo_adi
“*” tablodaki tum kolonlarin listelenmesini saglar
Belirli bir kolon gormek istersek o zaman gormek istedigimiz kolonlarin isimlerini yazmaliyiz. Kolon isimleri mutlaka , (virgul) ile ayraclanmalidir.
SELECT kolonadi1, kolonadi2 FROM tablo_adi
Bir tablodan tum bilgileri degil bazi kurallara gore bilgi almak istiyor isek where komutunu kullanmaliyiz.
SELECT kolonadi1, kolonadi2 FROM tablo_adi WHERE kisitlamalar
Kisit olarak kullanilacak kosullar ise asagidakiler olabilir
Karsilastirma islemleri icin = > < >= <= <>
Belirli bir aralik icin between , not between
Bir Listeden bakmak icin in , not in
String karsilatimalari icin like , not like
Bilinmeyen degerler icin is null , is not null
Konbinasyonlar icin and , or
Olumsuz not
Örneğin;
SELECT sKodu FROM tbStok WHERE sKodu =
‘010101’;
SELECT sKodu FROM tbStok WHERE sKodu BETWEEN
‘100001’ and
‘100001zzz’
SELECT sKodu FROM tbStok WHERE sKodu IN
( ‘010101’; , ‘010102’; , ‘zzz’; , ‘0000’;)
SELECT sKodu FROM tbStok WHERE sKodu LIKE
‘01%’;
SELECT sKodu FROM tbStok WHERE sKodu IS NOT NULL
SELECT sKodu FROM tbStok WHERE sKodu =
‘010101’ or sKodu = ‘010102’;
Kolonlarin adini daha okunabilir yapmak icin degistirebiliriz.
Örneğin;
SELECT sKodu as [Stok Kodu] FROM tbStok veya SELECT ‘Stok Kodu’ = sKodu from tbStok
Gelen bilgi belli bir sirada gelmesi isteniyor ise order by ozelligi kullanilir.
Örneğin;
SELECT sKodu FROM tbStok ORDER BY sKodu
Order by ile siralama yapilirken default kucukten buyuge dogru siralamadir. Buyukten kucuge dogru siralama yapmak icin kolon adinin yanina desc yazilir.
Örneğin;
SELECT sKodu FROM tbStok ORDER BY sKodu desc
Select ile raporladigimiz bilgiler uzerinde + , - , / , * ve % seklinde aritmerik islemler kullanilabilir. ( ) ile de islem onceligi belirlenir.
Örneğin;
SELECT sFiyatTipi , lFiyat , (lFiyat * 14000000) as TL
FROM tbStokFiyati
WHERE sFiyatTipi = '$'
Select ile raporladigimiz numerik bilgilerde MATEMATIK fonksiyonlari kullanilabilir.
Bunlardan birkac tanesi ABS -> mutlak deger , Log -> logaritma , PI -> Pi sayisi vs.
Örneğin;
SELECT ABS(lGirisMiktar1) FROM tbStokfisiDetayi
Bu ornekte lGirisMiktari – olsa bile sonucta – isareti kalkar.
Bu fonksiyonlardan en cok kullanilan ROUND fonksiyonudur. Numerik hesaplamalarda yuvarlama islemi yapar.
Kullanim Sekli round(deger , yuvarlama_degeri) seklindedir.
Yuvarlama_Degeri 0 , 1, 2…seklinde dir. 0 ise ondalik bolumu yuvarlar , 1 ise virgulden sonra 1.basamagi yuvarlar , 2 ise virgulden sonra 2.basamagi yuvarlar vs
Örneğin;
SELECT ROUND(( lFiyat / 1.18 ), 0) FROM tbStokFiyati
Bu ornekte kdv dahil bir fiyattan %18 kdv yi cikartarak kdv haric fiyat bulduk ve virgulden sonraki rakamlari yuvarladik.
Select ile raporladigimiz alfanumerik bilgilerde de bazi fonksiyonlari kullanilabilir. Bunlardan en cok kullanilanlar :
Rtrim sagdaki bosluklari kaldirir
Ltrim soldaki bosluklari kaldirir
Str numerik alanlari alfanumerik olarak degistirir
Lower karakterleri kucuk harfa cevirir
Upper karakterleri buyuk harfe cevirir
Substring secilen alan uzerinden istenilen bir parcayi ayirmak icin kullanilir
Patindex secilen alan uzrinde arana sozcugun baslangic posizyonunu verir
Space istenilen uzunlukta bosluk gonderir.
Örneğin;
SELECT RTRIM(sAciklama) FROM tbStokfisiDetayi
SELECT LTRIM(sAciklama) FROM tbStokfisiDetayi
SELECT str(lCikisMiktar1) FROM tbStokfisiDetayi
SELECT LOWER (sEvIl) FROM tbMusteri
SELECT UPPER (sIsIl) FROM tbMusteri
SELECT SUBSTRING (sAciklama , 10 , 5) FROM tbStok
SELECT SUBSTRING (sAciklama , Patindex(‘%cigdem%’ , sAciklama) , 15 ) from tbStok
SELECT SUBSTRING(sAdi, 1 , 1) + ‘.’ + space(2) + sSoyadi from tbPersonel
Tarih ve saat icin kullanilan fonksiyonlar da vardir.
Dateadd (tarihparcasi , sayi , tarih) bir tarihe gun, ay, yil vs ekleyerek tarih bulma
Datediff (tarihparcasi , tarih1, tarih2) Iki tarih arasindaki farki bulma
Datename(tarihparcasi, tarih) month secildiginde aylarin isimleri ile gorulebilmesini saglar, digerlerinde degerini getirir
Datepart(tarihparcasi, tarih) Verilen tarihteki secilen alanin degerini verir
Getdate() O andaki gecerli tarih ve saati verir
Tarihparcasi neler olabiliyor:
Year
Quarter
Month
Day of year
Day
Week
Weekday
Hour
Minute
Second
Milisecond
SELECT dteIslemTarihi , Dateadd(DAY , 38 , dteIslemTarihi) FROM tbStokFisidetayi
SELECT dteIslemTarihi , dteFisTarihi , DATEDIFF(DAY , dteFisTarihi , dteIslemTarihi) FROM tbStokFisidetayi WHERE sFistipi = ‘FS’
SELECT datename(MONTH , dteIslemTarihi ) FROM tbStokFisidetayi
SELECT datepart(WEEK , dteIslemTarihi ) FROM tbStokFisidetayi
Bir data tipinden baska bir data tipine cevirme yapilmak isteniyor ise convert fonksiyonu kullanilir. Formul asagidaki gibidir :
Convert (datatype[(uzunluk)], deger , [stil])
Convert islemi tarih sahalarini okunabilir hale getirmek icin cok kullanislidir. Ornegin select dteIslemTarihi from tbStokFisidetayi yazdigimizda gelen cevapta tarih 2002-01-01 00:00:00 formatinda gelecektir. Ama biz 01/01/2002 seklinde gormek istiyor isek :
SELECT convert(CHAR(10), dteIslemTarihi , 103) FROM tbStokFisidetayi
Buradaki 103 ingiliz/fransiz standartidir. Yani bizimde kullandigimiz standart. Burada kullanilabilecek stil numaralari sql help te yazilmistir.
Parasal alanlari virgul ile ayirmak istiyorsa yine convert fonksiyonunu kullanmaliyiz.
Örneğin;
SELECT convert(CHAR(20), convert(money, lBrutFiyat , 1), 1) FROM tbStokFisidetayi
Convert fonksiyonu gibi calisan baska bir fonksiyonda cast fonsiyonudur. Kullanim sekli cast ( deger as datatype[(uzunluk)]) seklindedir. Yukarida yazdigimiz selectin cast ile yazilimi
SELECT convert(CHAR(20), cast(lBrutFiyat as money), 1) FROM tbStokFisidetayi
Ayni sonucu verir. Cast fonsiyonunda stil yoktur. Stil kullanilacak ise convert kullanmak gerekir.
Bir numerik alan ile bir alfanumerik alani birlestirip bir sonuc elde etmek istiyorsak numerik alani alfanumerik alana convert etmek gerekir.
Örneğin;
SELECT 'Stok Adi :' + sAciklama + SPACE(2)+ convert (CHAR(20), lAsgariMiktar) + SPACE(2) + sBirimcinsi1 FROM tbstok
Tekrarlayan satirlarin birlestirilmesi icin distinct kullanilir
Örneğin;
SELECT DISTINCT sModel FROM tbstok
Sadece ilk n satiri listelemek icin top kullanilir
Örneğin;
SELECT top 20 * FROM tbstok
Kaynak: Burak Taş