MySQL Select  : Sorgulama

Veritabanların da veriler üzerinde;

  • yeni kayıt (insert),
  • güncelleme (update)
  • silme (delete)

dışında  kayıtları görmek, kayıt saymak gibi ne yapılacaksa  SORGU – SELECT akla gelmelidir.

Genel İfadesi:

SELECT gosterilecek bilgiAlanları
FROM tabloAdi[WHERE kosullar] [GROUP BY alan1, alan2, …[HAVING kosul]] [ORDER BY alan1, alan2, …] [LIMIT baslangic, adet] ;

Örnek Tablomuz

Bilgi alanları/ sütunlar
+----------+----------+-----------+------------+------------+-----------+
| ogrNo    | adi      | soyadi    | mobil      | dtarihi    | bolumu    |
+----------+----------+-----------+------------+------------+-----------+

şeklindeydi.

En basit select ifadesi: select * from ogrenci;

* : tüm bilgi alanları (tüm sutunlar)
where : olmaması ise tüm kayıtlar anlamına gelir.

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 |
.....Burada binlerce kayıt olduğunu varsayın, yazacağınız ifadeler sonucu başka kayıtlarda etkilenebilir.

soru: öğrencilerin adını ve soyadını görüntüleyiniz.

MariaDB [obs]> select adi,soyadi from ogrenci;
+--------+-----------+
| adi    | soyadi    |
+--------+-----------+
| Ayşe   | Güneş     |
| Canan  | Demirel   |
| Murat  | Sulupınar |
| Temel  | Demir     |
| Gülçin | Demircan  |
| Yahya  | Demircan  |
+--------+-----------+
6 rows in set (0.000 sec)

Gösterilecek bilgilerde *  yanında  ilave bilgi alanı olarak kullanmak anlamsızdır.

MariaDB [obs]> select *,adi from ogrenci;
+----------+--------+-----------+------------+------------+-----------+--------+
| ogrNo    | adi    | soyadi    | mobil      | dtarihi    | bolumu    | adi    |
+----------+--------+-----------+------------+------------+-----------+--------+
| 03050095 | Ayşe   | Güneş     | NULL       | 1998-03-01 | NULL      | Ayşe   |
| 20220001 | Canan  | Demirel   | 5351234567 | 1940-03-10 | Astronomi | Canan  |
| 22050917 | Murat  | Sulupınar | NULL       | NULL       | NULL      | Murat  |
| 75050917 | Temel  | Demir     | 5557779777 | 1989-01-28 | Fizik     | Temel  |
| 91050075 | Gülçin | Demircan  | 532100011  | NULL       | NULL      | Gülçin |
| 91050099 | Yahya  | Demircan  | 532100010  | 2022-03-10 | Matematik | Yahya  |
+----------+--------+-----------+------------+------------+-----------+--------+
6 rows in set (0.000 sec)

Koşul (where) olmadığı için tüm kayıtlar listelenmektedir.

Örn: tüm öğr.lerin adi, soyadi ve doğum tarihini görüntüleyiniz.

MariaDB [obs]> select adi,soyadi,dtarihi from ogrenci;
+--------+-----------+------------+
| adi    | soyadi    | dtarihi    |
+--------+-----------+------------+
| Ayşe   | Güneş     | 1998-03-01 |
| Canan  | Demirel   | 1940-03-10 |
| Murat  | Sulupınar | NULL       |
| Temel  | Demir     | 1989-01-28 |
| Gülçin | Demircan  | NULL       |
| Yahya  | Demircan  | 2022-03-10 |
+--------+-----------+------------+
6 rows in set (0.002 sec)

Select yanında mySQL fonksiyonları kullanılabilir.

Soru :Tüm ogrencilerin adinin ve soyadinin ilk harflerini görüntüleyen sql ifadesini yazınız.

MariaDB [obs]> select left(adi,1),left(soyadi,1) from ogrenci;
+-------------+----------------+
| left(adi,1) | left(soyadi,1) |
+-------------+----------------+
| A           | G              |
| C           | D              |
| M           | S              |
| T           | D              |
| G           | D              |
| Y           | D              |
+-------------+----------------+
6 rows in set (0.000 sec)

soru: doğum tarihi ve adını görüntüleyiniz.

MariaDB [obs]> select dtarihi,adi from ogrenci;
+------------+--------+
| dtarihi    | adi    |
+------------+--------+
| 1998-03-01 | Ayşe   |
| 1940-03-10 | Canan  |
| NULL       | Murat  |
| 1989-01-28 | Temel  |
| NULL       | Gülçin |
| 2022-03-10 | Yahya  |
+------------+--------+
6 rows in set (0.000 sec)

soru:adı ve yaşları gösteren sql

MariaDB [obs]> select adi,year(now())-year(dtarihi) from ogrenci;
+--------+---------------------------+
| adi    | year(now())-year(dtarihi) |
+--------+---------------------------+
| Ayşe   |                        24 |
| Canan  |                        82 |
| Murat  |                      NULL |
| Temel  |                        33 |
| Gülçin |                      NULL |
| Yahya  |                         0 |
+--------+---------------------------+
6 rows in set (0.001 sec)

soru: tum adların ilk harfi küçük, digerleri büyük yazdıran SQL ifadesi nedir?

MariaDB [obs]> select  lcase(left(adi,1)),    ucase(substring(adi,2)) from ogrenci;
+--------------------+-------------------------+
| lcase(left(adi,1)) | ucase(substring(adi,2)) |
+--------------------+-------------------------+
| a                  | YşE                     |
| c                  | ANAN                    |
| m                  | URAT                    |
| t                  | EMEL                    |
| g                  | üLçIN                   |
| y                  | AHYA                    |
+--------------------+-------------------------+
6 rows in set (0.022 sec)

Birleşik yazdırmak için de CONCAT()

MariaDB [obs]> select  concat(lcase(left(adi,1)),ucase(substring(adi,2))) from ogrenci;
+----------------------------------------------------+
| concat(lcase(left(adi,1)),ucase(substring(adi,2))) |
+----------------------------------------------------+
| aYşE                                               |
| cANAN                                              |
| mURAT                                              |
| tEMEL                                              |
| güLçIN                                             |
| yAHYA                                              |
+----------------------------------------------------+
6 rows in set (0.001 sec)

 

MySQL Select  : Sorgulama

Veritabanların da veriler üzerinde;

  • yeni kayıt (insert),
  • güncelleme (update)
  • silme (delete)

dışında  kayıtları görmek, kayıt saymak gibi ne yapılacaksa  SORGU – SELECT akla gelmelidir.

Genel İfadesi:

SELECT gosterilecek bilgiAlanları
FROM tabloAdi[WHERE kosullar] [GROUP BY alan1, alan2, …[HAVING kosul]] [ORDER BY alan1, alan2, …] [LIMIT baslangic, adet] ;

Örnek Tablomuz

Bilgi alanları/ sütunlar
+----------+----------+-----------+------------+------------+-----------+
| ogrNo    | adi      | soyadi    | mobil      | dtarihi    | bolumu    |
+----------+----------+-----------+------------+------------+-----------+

şeklindeydi.

En basit select ifadesi: select * from ogrenci;

* : tüm bilgi alanları (tüm sutunlar)
where : olmaması ise tüm kayıtlar anlamına gelir.

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 |
.....Burada binlerce kayıt olduğunu varsayın, yazacağınız ifadeler sonucu başka kayıtlarda etkilenebilir.

soru: öğrencilerin adını ve soyadını görüntüleyiniz.

MariaDB [obs]> select adi,soyadi from ogrenci;
+--------+-----------+
| adi    | soyadi    |
+--------+-----------+
| Ayşe   | Güneş     |
| Canan  | Demirel   |
| Murat  | Sulupınar |
| Temel  | Demir     |
| Gülçin | Demircan  |
| Yahya  | Demircan  |
+--------+-----------+
6 rows in set (0.000 sec)

Gösterilecek bilgilerde *  yanında  ilave bilgi alanı olarak kullanmak anlamsızdır.

MariaDB [obs]> select *,adi from ogrenci;
+----------+--------+-----------+------------+------------+-----------+--------+
| ogrNo    | adi    | soyadi    | mobil      | dtarihi    | bolumu    | adi    |
+----------+--------+-----------+------------+------------+-----------+--------+
| 03050095 | Ayşe   | Güneş     | NULL       | 1998-03-01 | NULL      | Ayşe   |
| 20220001 | Canan  | Demirel   | 5351234567 | 1940-03-10 | Astronomi | Canan  |
| 22050917 | Murat  | Sulupınar | NULL       | NULL       | NULL      | Murat  |
| 75050917 | Temel  | Demir     | 5557779777 | 1989-01-28 | Fizik     | Temel  |
| 91050075 | Gülçin | Demircan  | 532100011  | NULL       | NULL      | Gülçin |
| 91050099 | Yahya  | Demircan  | 532100010  | 2022-03-10 | Matematik | Yahya  |
+----------+--------+-----------+------------+------------+-----------+--------+
6 rows in set (0.000 sec)

Koşul (where) olmadığı için tüm kayıtlar listelenmektedir.

Örn: tüm öğr.lerin adi, soyadi ve doğum tarihini görüntüleyiniz.

MariaDB [obs]> select adi,soyadi,dtarihi from ogrenci;
+--------+-----------+------------+
| adi    | soyadi    | dtarihi    |
+--------+-----------+------------+
| Ayşe   | Güneş     | 1998-03-01 |
| Canan  | Demirel   | 1940-03-10 |
| Murat  | Sulupınar | NULL       |
| Temel  | Demir     | 1989-01-28 |
| Gülçin | Demircan  | NULL       |
| Yahya  | Demircan  | 2022-03-10 |
+--------+-----------+------------+
6 rows in set (0.002 sec)

Select yanında mySQL fonksiyonları kullanılabilir.

Soru :Tüm ogrencilerin adinin ve soyadinin ilk harflerini görüntüleyen sql ifadesini yazınız.

MariaDB [obs]> select left(adi,1),left(soyadi,1) from ogrenci;
+-------------+----------------+
| left(adi,1) | left(soyadi,1) |
+-------------+----------------+
| A           | G              |
| C           | D              |
| M           | S              |
| T           | D              |
| G           | D              |
| Y           | D              |
+-------------+----------------+
6 rows in set (0.000 sec)

soru: doğum tarihi ve adını görüntüleyiniz.

MariaDB [obs]> select dtarihi,adi from ogrenci;
+------------+--------+
| dtarihi    | adi    |
+------------+--------+
| 1998-03-01 | Ayşe   |
| 1940-03-10 | Canan  |
| NULL       | Murat  |
| 1989-01-28 | Temel  |
| NULL       | Gülçin |
| 2022-03-10 | Yahya  |
+------------+--------+
6 rows in set (0.000 sec)

soru:adı ve yaşları gösteren sql

MariaDB [obs]> select adi,year(now())-year(dtarihi) from ogrenci;
+--------+---------------------------+
| adi    | year(now())-year(dtarihi) |
+--------+---------------------------+
| Ayşe   |                        24 |
| Canan  |                        82 |
| Murat  |                      NULL |
| Temel  |                        33 |
| Gülçin |                      NULL |
| Yahya  |                         0 |
+--------+---------------------------+
6 rows in set (0.001 sec)

soru: tum adların ilk harfi küçük, digerleri büyük yazdıran SQL ifadesi nedir?

MariaDB [obs]> select  lcase(left(adi,1)),    ucase(substring(adi,2)) from ogrenci;
+--------------------+-------------------------+
| lcase(left(adi,1)) | ucase(substring(adi,2)) |
+--------------------+-------------------------+
| a                  | YşE                     |
| c                  | ANAN                    |
| m                  | URAT                    |
| t                  | EMEL                    |
| g                  | üLçIN                   |
| y                  | AHYA                    |
+--------------------+-------------------------+
6 rows in set (0.022 sec)

Birleşik yazdırmak için de CONCAT()

MariaDB [obs]> select  concat(lcase(left(adi,1)),ucase(substring(adi,2))) from ogrenci;
+----------------------------------------------------+
| concat(lcase(left(adi,1)),ucase(substring(adi,2))) |
+----------------------------------------------------+
| aYşE                                               |
| cANAN                                              |
| mURAT                                              |
| tEMEL                                              |
| güLçIN                                             |
| yAHYA                                              |
+----------------------------------------------------+
6 rows in set (0.001 sec)