SQL sorguları SELECT komutu girildikten sonra başlar. Şimdi hepbirlikte SELECT komutunun nasıl işlediğini görelim
SQL sorguları SELECT komutu girildikten sonra başlar. Şimdi hepbirlikte SELECT komutunun nasıl işlediğini görelim
Sorgu Cümlecikleri
Seçme Sorgusu - SELECT- Örnekleri
(Basit Sorgu, FROM cümleciği, WHERE şart cümleciği ve As ifadesi)
Ziyaretcidefteri veritabanı içerisindeki mesaj tablosu kayıt deseni aşağıdadır. (Örnekler için referans alınan tablo)
adi | soyadi | yas | mesaji | tarih |
nvarchar(30) | nvarchar(30) | tinyint | nvarchar(MAX) | smalldatetime |
USE ziyaretcidefteri
ziyaretcidefteri veritabanı seçilerek bu veritabanındaki tablolar üzerinde işlem yapılacağı belirtilir
SELECT * FROM mesaj
Mesaj tablosundaki tüm kayıtları seçer
SELECT * FROM dbo.mesaj
Mesaj tablosundaki tüm kayıtları seçer
SELECT adi,soyadi FROM mesaj
Mesaj tablosundaki adi ve soyadi alanlarını seçer
SELECT * FROM mesaj WHERE adi='ahmet'
Mesaj tablosundaki adi ahmet olan kayıtları listeler
SELECT * FROM mesaj WHERE yas<28
yaşı 28 en küçüklerin yolladığı mesaları listeler
SELECT * FROM mesaj WHERE yas<28 and yas>10
yaşı 10-28 aralığındakileri listeler
SELECT * FROM mesaj WHERE tarih>'1.1.2005'
1.1.2005 tarihinden sonra gönderilen mesajları listele
SELECT * FROM mesaj WHERE tarih>'1.1.2005' and tarih<'10.10.2010'
1.1.2005 ile 10.10.2010 aralığındaki mesajları listele
SELECT * FROM mesaj WHERE tarih between '1.1.2005' and '10.10.2010'
1.1.2005 ile 10.10.2010 aralığındaki mesajları listele
SELECT * FROM mesaj WHERE adi in ('fatih','ali')
ismi fatih veya ali olanları listeler. Veritabanı dili türkçe olduğu için ali ile ALİ, fatih ile FATİH eşittir.
SELECT * FROM mesaj WHERE adi like ('F%')
adi f ile başlayanları listele
SELECT * FROM mesaj WHERE adi like ('[F]%')
adi f ile başlayanları listele. Yukardaki ile aynı anlam
SELECT * FROM mesaj WHERE adi like ('[FA]%')
adi f ve a ile başlayanları listele. Yukardaki ile aynı anlam
SELECT * FROM mesaj WHERE adi like ('[^F]%')
adi f ile başlamayanları listele. ^ işareti köşeli içinde bulunanlar olmasın anlamındadır
SELECT * FROM mesaj WHERE adi like ('%i')
adi i ile bitenleri listele
SELECT * FROM mesaj WHERE adi like ('%a%')
adi nda a bulunanları listele. Başta ortada sonda farketmez tüm a bulunanları listele
SELECT * FROM mesaj WHERE adi like ('a__')
adi a ile başlayan 3 harfli isimleri listele. % işareti birden fazla karekter. _ işareti ise tek karakteri temsil eder.
SELECT * FROM mesaj WHERE adi in ('ali','fatih') and yas>10 and tarih between '1.1.2005' and '10.10.2010'
adi ali veya fatih olanlardan yaşı 10 dan büyük ve tarih 1.1.2005 ile 10.10.2010 aralığındakileri listele
SELECT * FROM mesaj WHERE (adi in ('ali','fatih') or yas>0) and tarih between '1.1.2005' and '10.10.2010'
adi ali veya fatih ya da yaşı 10 dan büyük olanlardan tarih değeri 1.1.2005-10.10.2010 aralığında olanları listele
SELECT * FROM mesaj WHERE soyadi is null
soyadi na bilgi girilmeyenleri listele (hiçbir değer girilmemesi null olarak ifade edilir.)
SELECT * FROM mesaj WHERE soyadi is not null
soyadi na değer girilenleri listele
As ifadesi ile kolon ismini sorgu neticesinde değiştirme. Kolon ismi tabloda değişmez sorgu neticesinde sadece görünen isim değişir, alan ismi aynı kalır.
İstenirse alan eklenebilir, alanda aritmetiksel işlemler yapılarak yeni bir kolon oluşturulabilir
SELECT adi as 'Mesaj Gönderenin Adı' FROM mesaj
sorgu kolon başlığında adi yerine Mesaj Gönderenin Adı ifadesi görünür
SELECT adi as 'Mesaj Gönderenin Adı', soyadi, 'AKML' as okul FROM mesaj
adi kolonunun başlığı değiştirilir, soyadı kolonu sabit kalır. Tablomuzda olmamasına rağmen değeri AKML olan okul ifadesi eklenir.
SELECT yas as ''Mesaj Gönderenin Yaşı' FROM mesaj
sorgu kolon başlığında yas yerine Mesaj Gönderenin Yaşı yazacak
SELECT yas+5 as 'Mesaj Gönderenin Yaşının 5 fazlası' FROM mesaj
Mesaj Gönderenin yaşı 5 ile toplanacak kolon başlığında ise Mesaj Gönderenin Yaşının 5 fazlası ifadesi görünecek
As ın Diğer bir kullanımı
SELECT 'Yaşı'+Str(yas+5) as 'Öğrencinin Yaşı' FROM mesaj
Kolon başlığı Öğrencinin Yaşı olur. Kayıt Görünümü ise Yaşı 17 şeklinde olur. Öğrencinin yaşı 5 ile toplanıyor. Çıkan neticenin Yaşı ifadesiyle toplanabilmesi için veri türünün string ifadeye STR ile çevrilmesi gerekiyor ve çevriliyor
As ifadesinde + - * / arimetiksel işleçleri kullanılır.
SELECT * FROM mesaj ORDER BY adi
kayıtları adi alanına göre A dan Z ye doğru sırala
SELECT * FROM mesaj ORDER BY adi ASC
kayıtları adi alanına göre A dan Z ye doğru sırala
SELECT * FROM mesaj ORDER BY adi DESC
kayıtları adi alanına göre Z den A ya doğru sırala
SELECT * FROM mesaj ORDER BY adi asc,soyadi asc
adi alanına göre sırala adı aynı olursa onları soyadlarına göre sırala
SELECT * FROM mesaj ORDER BY adi+soyadi
adi alanına göre sırala adı aynı olursa onları soyadlarına göre sırala
SELECT * FROM mesaj ORDER BY 1
1. sıradaki alana göre sıralama yap
SELECT * FROM mesaj ORDER BY 1,3
Önce 1 sonra 3. sıradaki alana göre sırala
SELECT * FROM mesaj ORDER BY adi ASC, soyadi ASC
adi alanına göre sırala adı aynı olursa onları soyadlarına göre sırala
SELECT * FROM mesaj ORDER BY adi DESC, soyadi DESC
adi alanına göre Z-A ya sırala adı aynı olursa onları soyadlarına göre Z-A ya doğru sırala