SELECT deyimi, SQL de tablodan veri çekme-seçme komutudur. Bu komut ile belirli kolonlari yada bütün kolonlari çekebiliriz. Genel hatlari ile SELECT ifadesinin kullanimina bakacak olursak;
SELECT [Seçtigimiz kolonlar] FROM [Tablo isimleri]
id | ad | soyad | tel | sehir | yas |
---|---|---|---|---|---|
1 | Faruk | ÜNAL | 05369333629 | Eskisehir | 21 |
2 | Emre | ÜNAL | 05541234567 | Istanbul | 19 |
3 | Fatih | ADEM | 05051234567 | Ankara | 37 |
4 | Emre | ÇINAR | 05377654321 | Ankara | 23 |
5 | Osman | BILGIN | 02225554433 | Eskisehir | 51 |
6 | Mustafa | SAYGI | 05061112233 | Isparta | 43 |
Üstteki tablo üzerinde SELECT ifadesinin farkli örneklerini inceleyecegiz. Tabloda 6adet satir ve 6adet kolon bulunmaktadir. Kolon isimleri (id, ad, soyad ,tel, sehir, yas) üst kisimda belirtilmektedir. SELECT ifadesi ile bu kolon isimlerini kullanacagiz. Üstteki tablomuzun ismi -tbKisiler- tablosudur. Simdi örneklere geçelim.
Tek Kolondan Veri Çekme
SELECT ad FROM tbKisiler
ad |
---|
Faruk |
Emre |
Fatih |
Emre |
Osman |
Mustafa |
Seçtigimiz -ad- kolonuna ait bütün veriler listelendi
Birden Çok Kolondan Veri Çekme
SELECT ad,soyad FROM tbKisiler
Seçmek istedigimiz kolon isimlerini art arda aralarinda virgül olacak sekilde yaziyoruz. Sorgumuzun dönütü asagidaki gibi olacaktir.
ad | soyad |
---|---|
Faruk | ÜNAL |
Emre | ÜNAL |
Fatih | ADEM |
Emre | ÇINAR |
Osman | BILGIN |
Mustafa | SAYGI |
Tüm Kolonlari Çekme
SELECT * FROM tbKisiler
Seçtigimiz tablodaki bütün kolonlarin listelenmesini saglar.
id | ad | soyad | tel | sehir | yas |
---|---|---|---|---|---|
1 | Faruk | ÜNAL | 05369333629 | Eskisehir | 21 |
2 | Emre | ÜNAL | 05541234567 | Istanbul | 19 |
3 | Fatih | ADEM | 05051234567 | Ankara | 37 |
4 | Emre | ÇINAR | 05377654321 | Ankara | 23 |
5 | Osman | BILGIN | 02225554433 | Eskisehir | 51 |
6 | Mustafa | SAYGI | 05061112233 | Isparta | 43 |
Ayni listeyi bütün kolon isimlerini asagidaki gibi tek tek yazarak da elde edebilirdik
SELECT id,ad,soyad,tel,sehir,yas FROM tbKisiler
Tüm kolon isimlerinin hatirlanmadigi durumlarda * ile veri çekmek isinizi oldukça kolaylastiracaktir ama çok fazla tercih etmemenizi tavsiye ederim. Özellikle projelerinizdeki sorgularinizda mümkün oldugunca * ile veri çekmekten kaçinmalisiniz. projenin ilerki asamalarinda tablonuza yeni kolonlar eklemeniz gerektiginde yada bilerek veya bilmeyerek kolonlarin yerini degistirdiginizde projenizdeki sorgunun sonucu da degisecektir ama eger her kolon adini elle yazarsaniz bu sekilde dogacak sorunlari engellemis olursunuz.
Kolonlari Birlestirerek Çekme
Kolonlar üzerine + isareti ile birlestirme yapabiliriz. Sayisal olarak iki kolon arasi bu isareti koydugumuzda bu iki sayinin toplamini tek bir kolona getirir. Metin olan iki kolon arasinda + isareti koydugumuzda ise bu iki kolonu yan yana yazar, Mesela
SELECT ad+' '+soyad FROM tbKisiler
dedigimizde ad kolonu ve ardindan bir karakter bosluk birakip soyad kolonunu getirecektir. Sorgunun çektigi veri asagidadir.
Column1 |
---|
Faruk ÜNAL |
Emre ÜNAL |
Fatih ADEM |
Emre ÇINAR |
Osman BILGIN |
Mustafa SAYGI |
Gördügünüz gibi ad ve soyad bilgileri tek bir kolonda toplandi. Dikkatinizi çekmis olabilir kolon adi Column1 oldu, iki kolon ve disaridan karakter girdigimiz için veritabaninda olmayan bir kolon seçmis olduk ve sistem bunu kendisi adlandirdi. Burada yeri gelmisken bahsedeyim kolon isimlerini de sorgularda nasil görünecegini kendimiz belirleyebiliyoruz ve buna Takma isim -Alias- diyoruz. Seçecegimiz kolon adini yazdiktan sonra:
kullanabiliriz. Üstteki sorguya birde bu sekilde bakalim.
SELECT ad+' '+soyad [Ad SOYAD] FROM tbKisiler
Ad SOYAD |
---|
Faruk ÜNAL |
Emre ÜNAL |
Fatih ADEM |
Emre ÇINAR |
Osman BILGIN |
Mustafa SAYGI |
Gördügünüz gibi kolon adinida degistirmis olduk. Baska bir örnege daha bakacak olursak;
SELECT id [NO],ad[ADI],soyad AS 'SOYADI' FROM tbKisiler
NO | ADI | SOYADI |
---|---|---|
1 | Faruk | ÜNAL |
2 | Emre | ÜNAL |
3 | Fatih | ADEM |
4 | Emre | ÇINAR |
5 | Osman | BILGIN |
6 | Mustafa | SAYGI |
Hem [] ile hemde AS ile kolon isimlerini degistirmis olduk.
Ilk n Satiri Çekme
Üstteki yaptigimiz örneklerdeki bütün SELECT ifadelerinde elimizdeki bütün veriyi çekip listelemis olduk. Eger hepsini degilde belli bir sayida veriyi çekmek istiyorsak SELECT TOP n ifadesini kullaniriz.
SELECT TOP 3 * FROM tbKisiler
id | ad | soyad | tel | sehir | yas |
---|---|---|---|---|---|
1 | Faruk | ÜNAL | 05369333629 | Eskisehir | 21 |
2 | Emre | ÜNAL | 05541234567 | Istanbul | 19 |
3 | Fatih | ADEM | 05051234567 | Ankara | 37 |
Gördügünüz gibi toplamda normalde 6 satirlik verimiz varken, TOP 3 ifadesi ile ilk 3 satiri çekmis olduk.
Ayni sekilde bu islemi % li olarak da yapabiliriz. Bunun için ise TOP n PERCENT ifadesini kullaniriz
SELECT TOP 50 PERCENT * FROM tbKisiler
Tekrarsiz Verileri Çekme - DISTINCT
DISTINCT ifadesi ile kolondaki verileri çektiginizde ayni veri tekrar etmez. Böylelikle örnegin hangi illerden müsterileriniz olduguna bakmak istediginizde ayni sehirler tekrar tekrar listelenmemis olurlar. Yada hangi GSM firmalariini kullandiklarini ögrenmek için bir sorgu yaptiginizda ayni veriler tekrar tekrar listelenmemis olur. Bizde hangi illerden kisiler olduguna bir bakalim. Öncelikle normal olarak bi göz atalim.
SELECT sehir FROM tbKisiler
sehir |
---|
Eskisehir |
Istanbul |
Ankara |
Ankara |
Eskisehir |
Isparta |
Toplamda 6 veri listelendi, Simdi birde DISTINCT ile bakalim
SELECT DISTINCT sehir FROM tbKisiler
sehir |
---|
Ankara |
Eskisehir |
Isparta |
Istanbul |
Gördügünüz gibi tekrar eden sehirler artik tekrar etmiyorlar ve her sehir yalniz bir kez listeleniyor.
Eger sorgumuzda birden çok kolonu seçip o sekilde DISTINCT kullanmak istersek seçmek istedigimiz kolonlardaki veriler yan yana getirilerek tek bir satir gibi düsünülür ve seçili kolonlar için tamamen ayni olan satirlar var ise o satirlar listelenmez.