
Mysql, sql deyimlerinden in ve not in deyimlerinde şimdi sırası ile değineceğiz. İlk başta mysql ime bağlanıyorum.
# cmd
# mysql
Telefonlar isminde veritabanını kullanmak için
mysql > use telefonlar;
ERROR 1049 (42000): Unknown databases 'telefonlar'
use telefonlar diyerek düzeltiyorum telefon diyerek veritabanıma geçiyorum
mysql > use telefon;
Database changed
Burda telefonlar isminde bir tablom var.
mysql > show tables;
+------------------+
| Tables_in_telefon|
+------------------+
| telefonlar |
| telefonlar2 |
+------------------+
2 rows in set (0.06 sec)
select * from telefonlar diyerek tablomdaki tüm verileri görüyorum.
mysql> select * from telefonlar;
+----+-----------+------------+--------+
| id | isim | soyisim | numara |
+----+-----------+------------+--------+
| 1 | Suleyman | Demirkeser | 0322 |
| 2 | tel | tel2 | 9595 |
| 3 | Ahmet | Danaci | 959 |
| 4 | insert id | NULL | NULL |
+----+-----------+------------+--------+
4 rows in set (0.00 sec)
in deyimi genel kullanımına değinecek olursak Normal sql deyiminden farklı olarak sadece kıstas kısmında yani where kısmında işin içine girmiş olur.şöyleki yine select, seçmek istediğimiz alanlar veya alan from tablo dedikten sonra where diyerek herhangi bir alanı verdikten sonra buraya mesela id in bu parantezin içine hangi değerlerin yer almasını istiyorsak yada hangi değer olmasını istiyorsak o değerler yazılır.
Birden fazla değer yazmamız gerektiğinde araya virgül kullanırız.Where kıstasında kullandığımız alanın select kısmında yer almasına gerek yoktur.
yani burda id kullanırken select id virgül isim demedim. Sql imizi çalıştırdığımızda.
mysql> select isim from telefonlar where id in ( 3 );
+-------+
| isim |
+-------+
| Ahmet |
+-------+
1 row in set (0.00 sec)
Id 3 e eşit olan kayıtları seçmiş olur. birden fazla kayıt seçmek istediğimizde de araya virgül atarak bu şekilde yazarız.
mysql> select isim from telefonlar where id in (3,4);
+-----------+
| isim |
+-----------+
| Ahmet |
| insert id |
+-----------+
2 rows in set (0.00 sec)
İfadelerimiz tabi metinde şu şekilde metin olduğunuda belirterek yazabilirdik.
select isim from telefonlar where id in (3,4) ifadesi karşılığı sql de şu şekildedir.select * from telefonlar where id = 3 or id = 4 şeklindedir
mysql> select isim from telefonlar where id = 3 or id = 4;
+-----------+
| isim |
+-----------+
| Ahmet |
| insert id |
+-----------+
2 rows in set (0.00 sec)
Bu iki ifadeyi çağırdığımızda ikiside bize aynı sonucu döndercektir. In ifadesi genelde subquery lerde kullanılır. Bunun yanında id in ile birlikte kullanılırken Burda not ifadesinide kullanmamız mümkündür. Sql imizi değiştirip select * from telefonlar where id not in (3,4) dediğimizde
mysql> select isim from telefonlar where id not in (3,4);
+----------+
| isim |
+----------+
| Suleyman |
| tel |
+----------+
2 rows in set (0.00 sec)
Id si üç ve dört olmayan kayıtlar bize gelecektir. Bunu geniş yazacak olursak id üç ve dörde eşit olmayan kayıtlar where id farklı üç and id farklı dört şeklinde de yazabiliriz.
mysql> select isim from telefonlar where id!=3 AND id!=4;
+----------+
| isim |
+----------+
| Suleyman |
| tel |
+----------+
2 rows in set (0.00 sec)
Yine bu sql i çalıştırdığımızda bir önceki sql ile aynı sonucu verecektir. İşte in ve not in deyimlerinin normal yazdığımız sql ile kıyaslayarak daha basit şekilde yazabiliriz. In ve not in deyimlerinin sql de kullanımları bu şekildedir.