MySQL Select Where – Koşullu Sorgu
Kayıt sorgulamanın genel ifadesi
SELECT gosterilecek bilgiAlanları
FROM tabloAdi
[WHERE kosullar][GROUP BY alan1, alan2, …[HAVING kosul]]
[ORDER BY alan1, alan2, …] [LIMIT baslangic, adet] ;
Where ifadesiyle tablodan istenilen kritere göre kayıtlar sorgulanır. Where yazılmaz ise bir önceki yazımızda tüm kayıtların etkileneği üzerineydi.
[WHERE kosullar] ifadede
koşullar; istenilen koşul yada koşulların yazılacağı kısımdır. Koşullar and / or bağlacıyla birleştirilir.
Tüm kayıtları önce görelim
MariaDB [obs]> select * from ogrenci; +----------+--------+-----------+------------+------------+-----------+ | ogrNo | adi | soyadi | mobil | dtarihi | bolumu | +----------+--------+-----------+------------+------------+-----------+ | 03050095 | Ayşe | Güneş | NULL | 1998-03-01 | NULL | | 20220001 | Canan | Demirel | 5351234567 | 1940-03-10 | ASTRONOMI | | 22050917 | Murat | Sulupınar | NULL | NULL | NULL | | 75050917 | Temel | Demir | 5557779777 | 1989-01-28 | Fizik | | 91050075 | Gülçin | Demircan | 532100011 | NULL | NULL | | 91050099 | Yahya | Demircan | 532100010 | 2022-03-10 | Matematik | .... Görünmeyen kayıtların olduğunu varsayalım
Örnek :Matematik bolumu öğrencilerinin adını görüntüleyiniz.
MariaDB [obs]> select adi from ogrenci where bolumu='Matematik'; +-------+ | adi | +-------+ | Yahya | +-------+ 1 row in set (0.001 sec)
where bolumu=’Matematik’; –> sadece Matematik olan kayıtların, adi görüntülendi.
Örnek: adının ilk harfi A olan ve soyadının ilk harfi K olanların soyadını gösteren sql ifadesi ?
MariaDB [obs]> select soyadi -> from ogrenci -> where left(adi,1) ='A' and left(soyadi,1)='K'; Empty set (0.002 sec)
Tüm kayıtlar incelenirse adi ‘A’ ile soyadi ‘K’ ile başlayan hiç kayıt olmadığı için Empty döndü.
Örnek: adının ilk harfi A ile başlayan veya soyadinin ilk harfi D ile başlayanların adı ve bolumunu görüntüleyiniz.
MariaDB [obs]> select adi,bolumu -> from ogrenci -> where left(adi,1) ='A' or left(soyadi,1)='D'; +--------+-----------+ | adi | bolumu | +--------+-----------+ | Ayşe | NULL | | Canan | ASTRONOMI | | Temel | Fizik | | Gülçin | NULL | | Yahya | Matematik | +--------+-----------+ 5 rows in set (0.001 sec)
Örnek: Adi, Temel olan öğrencinin telefonunu görüntüleyen sql ifadesi;
MariaDB [obs]> select mobil from ogrenci where adi='Temel'; +------------+ | mobil | +------------+ | 5557779777 | +------------+ 1 row in set (0.001 sec)
Örnek: telefonu 532 hat olanların adi ve soyadini görüntüleyen sql ifadesi;
MariaDB [obs]> select adi,soyadi from ogrenci where substring(mobil,1,3)='532'; +--------+----------+ | adi | soyadi | +--------+----------+ | Gülçin | Demircan | | Yahya | Demircan | +--------+----------+ 2 rows in set (0.001 sec)
Örnek: öğrencilerin 25 yaşından büyük olanların adını ve yaşını gösteren SQL ifadesi, burada koşul kısmında ve select yanında fonksiyon kullanıldı.
MariaDB [obs]> select adi,year(curdate())-year(dtarihi) -> from ogrenci -> where year(curdate())-year(dtarihi)>25; +-------+-------------------------------+ | adi | year(curdate())-year(dtarihi) | +-------+-------------------------------+ | Canan | 82 | | Temel | 33 | +-------+-------------------------------+ 2 rows in set (0.031 sec)
AND / OR
Her isteğinde sağlanması isteniyorsa AND, isteklerden bazılarına uyması isteniyorsa OR bağlacı kullanılmalıdır.
Örnek: Adının ilk harfi C olanlar ile Telefonu 555 ile başlayanlar denildiğine AND
MariaDB [obs]> select adi,soyadi,mobil from ogrenci where left(adi,1)='C' and left(mobil,3)='555'; Empty set (0.001 sec)
Örnek: Adının ilk harfi C olanlar veya Telefonu 555 ile başlayanlar denildiğinde OR kullanılmalıdır.
MariaDB [obs]> select adi,soyadi,mobil from ogrenci where left(adi,1)='C' or left(mobil,3)='555'; +-------+---------+------------+ | adi | soyadi | mobil | +-------+---------+------------+ | Canan | Demirel | 5351234567 | | Temel | Demir | 5557779777 | +-------+---------+------------+ 2 rows in set (0.001 sec)