
Mevcut kayıtları sorgulamak için mysql de select ifadesini kullanıyoruz. mysql e consoldan balganiyorum
# cmd
# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.22-community-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
daha sonra use ile kullanmak istediğim tablonun adını vererek tabloya geçiş yapiyorum
mysql> use telefon;
Database changed
daha sonra show tables dediğimde bana mevcut tabloları gösteriyor
mysql> show tables;
+-------------------+
| Tables_in_telefon |
+-------------------+
| telefonlar |
+-------------------+
1 row in set (0.00 sec)
İşte bu tabloların içinde verileri getirip göstermek için select ifadesini kullanıyoruz. select ifadesinin genel kullanımı şöyledir. select boşluk getirmek istediğim alanların isimleri. daha sonra from diyerek tablonun ismini vermemiz gerekir.İşte bu şekilde select dedikten sonra alanların isimleri ve daha sonra from diyip tablo ismini vererek kayıtları getirebiliriz. Dört kayıt döndüğünü ve bunların isim ve soyisim değerlerini karşıma getirdi.
mysql> select isim,soyisim from telefonlar;
+----------+------------+
| isim | soyisim |
+----------+------------+
| Suleyman | Demirkeser |
| Suleyman | NULL |
| Suleyman | Demirkeser |
| Suleyman | NULL |
+----------+------------+
4 row in set (0.00 sec)
Eğerki daha fazla alan varsa yine virgül atmak suretiyle bunları getirebiliirm.
mysql> select id,isim,soyisim from telefonlar;
+----+----------+------------+
| id | isim | soyisim |
+----+----------+------------+
| 1 | Suleyman | Demirkeser |
| 2 | Suleyman | NULL |
| 3 | Suleyman | Demirkeser |
| 7 | Suleyman | NULL |
+----+----------+------------+
4 row in set (0.00 sec)
Gelen kayıtların burdaki alan sırası benim selecte verdiğim alan sırası ile aynıdır. Yani burdaki sırayı ters çevirerek sıranın değişmesini sağlayabilirim
mysql> select isim,soyisim,id from telefonlar;
+----------+------------+----+
| isim | soyisim | id |
+----------+------------+----+
| Suleyman | Demirkeser | 1 |
| Suleyman | NULL| 2 |
| Suleyman | Demirkeser | 3 |
| Suleyman | NULL | 7 |
+----------+------------+----+
4 row in set (0.00 sec)
Buraya gelen kayıtlar doğal veritabanı sırasıyle gelirler. Bir tablodaki tüm alanları seçmek için ise selecten sonra alan isimleri değilde yıldız ifadesini kullanabilirim.
select * from tablo adı dediğimde o tablodaki tüm kayıtlar karşıma gelecektir.
mysql> select * from telefonlar;
+----+----------+------------+--------+
| id | isim | soyisim | numara |
+----+----------+------------+--------+
| 1 | Suleyman | Demirkeser | NULL |
| 2 | Suleyman | NULL | NULL |
| 3 | Suleyman | Demirkeser | NULL |
| 7 | Suleyman | NULL | NULL |
+----+----------+------------+--------+
4 row in set (0.00 sec)
Select ifadesinde where ifadesini kullanarak gelen kayıtlarda sınırlandırma yapabilirim. where ifadesinden sonra yazdığım koşullarla gelen kayıtlardan sadece bu koşula uyanlar görünecektir. Yani diğer tabirle bu koşula uyan kayıtlar getirilecektir.
Mesela id si üç ten büyük olan kayıtları görmek istiyorsam select yıldız from dedim ki tüm alanlar gelecek telefonlar tablosundan seçim işlemini yapıyorum ve id alanı üçten büyük olan değerleri seçiyorum.evet tek kayıt geldi
mysql> select * from telefonlar where id>3;
+----+----------+------------+--------+
| id | isim | soyisim | numara |
+----+----------+------------+--------+
| 7 | Suleyman | NULL | NULL |
+----+----------+------------+--------+
1 row in set (0.00 sec)
Üçten büyük ve eşit olan kayıtları listeleyebilirim.
mysql> select * from telefonlar where id>=3;
+----+----------+------------+--------+
| id | isim | soyisim | numara |
+----+----------+------------+--------+
| 3 | Suleyman | Demirkeser | NULL |
| 7 | Suleyman | NULL | NULL |
+----+----------+------------+--------+
2row in set (0.00 sec)
Veya üçe eşit olan kayıtları listeleyebilirim
mysql> select * from telefonlar where id = 3;
+----+----------+------------+--------+
| id | isim | soyisim | numara |
+----+----------+------------+--------+
| 3 | Suleyman | Demirkeser | NULL |
+----+----------+------------+--------+
1
row in set (0.00 sec)
İşte where kısmında verdiğim kritere göre birden fazla kayıtı getirebilirim. burdaki where ifadesi çok farklı değerler alabilir. herhangi bir where ifadesi yazmazsam bana mevcut olan tüm kayıtları verdiğim alanlarla getirecektir. yani select * from tablolar tüm alanları kapsadığı ve herhangi bir paremetre olarak koşul koymadığım için o tablodaki tüm kayıtları dönderir.