Bu deyim sorgularımızda en çok kullandığımız deyimdir. Kelimenin anlamından yola çıkarak, bir seçim işlemi yapmak için kullanılır. Veritabanına kaydettiğimiz verileri bir şarta bağlı olarak çekmek isteğimiz durumlarda kullanırız veya şartsız tüm verileri çekeriz. Öncelikle "SELECT" ifadesinin kullanımına bir bakalım.
Select ifadesinin yazım biçimi;
- SELECT alan_adlari FROM tablo_adi
- WHERE secim_kriteri
- ORDER BY siralanacak_alan [ASC/DESC]
- LIMIT nereden,kac_tane
SELECT ifadesinin en yalın halini yazmaya çalıştım. Kafa karıştırmayacak kadar. Bu ifadeye eklenebilecek daha çok şey var ama gözünüzü korkutmayalım. Temelde bu yazımla bile bir çok işi halledebilirsiniz. Bu yazımı açıklamaya çalışacağımıza örnekler ile anlatmaya çalışalım.
Örnek bir tablo oluşturalım ve adı "ogrenciler" olsun.
| id | ad_soyad | okul_no | yas | cinsiyet |
| 1 | Zeynep Çimen | 125 | 15 | Bayan |
| 2 | Emrah Yalaz | 127 | 16 | Erkek |
| 3 | Ahmet Topuz | 128 | 15 | Erkek |
| 4 | Elif Duman | 130 | 16 | Bayan |
| 5 | Hasan Durmaz | 132 | 17 | Erkek |
Bu tabloyu referans alarak birkaç sorgu oluşturalım.
- SELECT ad_soyad,cinsiyet FROM ogrenciler
Örnekte 2 alan seçildi ve hiçbir şart koşulmadı yani tüm kayıtlar listelenir.
| ad_soyad | cinsiyet |
| Zeynep Çimen | Bayan |
| Emrah Yalaz | Erkek |
| Ahmet Topuz | Erkek |
| Elif Duman | Bayan |
| Hasan Durmaz | Erkek |
- SELECT * from ogrenciler
- WHERE cinsiyet='Bayan'
" * " kullanarak tüm alanların seçileceğini söyledik. WHERE ifadesi ile cinsiyeti "Bayan" olan öğrencilerin seçileceğini söyledik. Bu sorgudan 2 sonuç çıkar.
| id | ad_soyad | okul_no | yas | cinsiyet |
| 1 | Zeynep Çimen | 125 | 15 | Bayan |
| 4 | Elif Duman | 130 | 16 | Bayan |
WHERE ifadesinin kullanımına başka bir örnek;
- SELECT id,ad_soyad FROM ogrenciler
- WHERE cinsiyet='Erkek' && yas>'15'
Örnekte birden fazla şart sunmuş olduk. Araya konulan "&&" işaretleri "ve" anlamına gelir. Bunun yerine istenirse "and" kullanılabilir. Sorguda cinsiyeti erkek olan ve yaşı 15'ten büyük olan öğrenciler seçilmektedir. Makalede listeleme işlemi anlatıldığı için daha fazla ayrıntıya girmeyelim. Ayrıntılı bilgi için bu makaleye bakabilirsiniz. Yukarıdaki sorgunun sonucu;
| id | ad_soyad |
| 2 | Emrah Yalaz |
| 5 | Hasan Durmaz |
Aynı sorguyu "ORDER BY" kullanarak sıralama yapmanız mümkün, az önceki sorguya küçük bir ekleme yaparak sonucun id bilgisine göre azalan olmasını sağlayalım. Yukarıya bakarsanız şu an artan bir sıralamaya sahip.
- SELECT id,ad_soyad FROM ogrenciler
- WHERE cinsiyet='Erkek' && yas>'15'
- ORDER BY id DESC
Busorguda kullanılan "DESC" ifadesi sorgunun id bilgisine göre azalan olacağını söyler. Bunun yerine "ASC" yazılır ise artan bir sıralama elde edilir. Sorgunun sonucu;
| id | ad_soyad |
| 5 | Hasan Durmaz |
| 2 | Emrah Yalaz |
Kısaca LIMIT ifadesinden de bahsedecek olursak çıkan sonuçları sınırlandırmak için kullanılır diyebiliriz. Yani sorgunuzun sonucunda 50 kayıt dönüyor fakat size 5 kayıt lazım, bunu LIMIT ile yapabilirsiniz. Yine az önceki sorguda 2 sonuç çıkıyor ben 1 kayıt istiyorsam şöyle yapmalıyım.
- SELECT id,ad_soyad FROM ogrenciler
- WHERE cinsiyet='Erkek' && yas>'15'
- ORDER BY id DESC
- LIMIT 1
| id | ad_soyad |
| 5 | Hasan Durmaz |
Veya belli bir kayıttan itibaren istendiği kadar kayıt seçilebilir. Yani az önce tek bir değer belirttiğim için çıkan ilk sonucu verdi. Şöyle dersek;
- SELECT id,ad_soyad FROM ogrenciler
- WHERE cinsiyet='Erkek' && yas>'15'
- ORDER BY id DESC
- LIMIT 1,1
| id | ad_soyad |
| 2 | Emrah Yalaz |
Sıralamanın 0'dan başladığını unutmadan, 1. kayıttan başla 1 kayıt getir şeklinde açıklayabiliriz. Bu durumda çıkan sonuç içerisindeki 2. kayıt seçilmiş olur.
Kısaca select ifadesini anlatmaya çalıştık. Şimdi bu seçim işlemini php ile birleştirelim. Önceki derslerimizde sorgularımızı mysql_query() ile mysql'e gönderdiğimizi söylemiştik. Yine öncelikle sorgumuzu oluşturup çalıştırıyoruz. Daha sonra çıkan sonuçları bir döngü ve bir fonksiyon yardımı ile tablo içerisine yerleştirip listeliyoruz.
Önceki dersteki örneğimize "listele.php" dosyasını ekleyip bu kodları da içine yapıştırabilirsiniz.
- <?php
- $sorgu=mysql_query("select * from deneme");
- echo "<table>";
- echo '<tr><td>Ad</td><td>Soyad</td><td>E-Posta</td></tr>';
- while($kayit=mysql_fetch_array($sorgu)){
- echo '<tr>';
- echo '<td>'.$kayit["ad"].'</td>';
- echo '<td>'.$kayit["soyad"].'</td>';
- echo '<td>'.$kayit["e_posta"].'</td>';
- echo '</tr>';
- }
- echo '</table>';
- ?>
While döngüsü parantezleri içerisine yazılan mysql_fetch_array() fonksiyonu, verilen sorgudaki kayıtları bir bir çeker ve döngünün her turunda sıradaki kaydı işler. Sorgudan çıkan kayıtlar bittiğinde sonuç üretilemeyeceğinden döngü sonlanır. Zaten baktığınızda döngü dışında tablo başlatılıyor ve bitiriliyor. Araya da döngüden gelen satırlar ekleniyor ve listeleme işlemi bu kadar. mysql_fetch_array() fonksiyonuna benzer başka fonksiyonlar da mevcut. Örneğin mysql_fetch_assoc(), mysql_fetch_object() ... gibi. Bu fonksiyonların farklarını bu makalede bulabilirsiniz.
Hiç yorum yok:
Yorum Gönder