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)

 

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)