Zihni Özgürlük

Index Kullanımı

Belirli sutunlardaki değerleri hızlıca bulmak için kullanılır. Eğer sutun index olarak tanımlanmamışsa mysql ilk kayıttan aranan kayıta kadar tüm satırları tarar. Eğer sutun index olarak tanımlanmışsa mysql rastgele arama yapabilir, bu da sorgunun hızlanmasını sağlar.

Örneğin, öğrenciler tablosu aşağıdaki gibi olsun. Sorgularımızda adi alanını çok fazla kullandığımızdan bu kolonu indexleyelim.


mysql > ALTER TABLE ogrenciler ADD INDEX(adi)

+-----+-----+------+

| id  | adi |notu    |

+-----+-----+------+

| 123 |Veli |60    |

| 124 |Veli |70    |

| 125 |Ali  |80    |

| 126 |Ali  |30    |

| 127 |Hasan|61    |

+-----+-----+------+

HAVING Kullanımı

Having cümleciği ile grup kriterleri tanımlanır, gruplanmış kolonlardaki veriler where cümleciği ile filtrelenemez, bunun yerine having cünleciği kullanılır.


Örneğin, öğrenciler tablosu aşağıdaki gibi olsun.

+-----+-----+------+

| id  | adi |notu  |

+-----+-----+------+

| 123 |Veli |60    |

| 124 |Veli |70    |

| 125 |Ali  |80    |

| 126 |Ali  |30    |

| 127 |Hasan|61    |

+-----+-----+------+

not ortalaması 60 dan büyük olan öğrencileri bulmak isteyelim.

mysql> SELECT adi, AVG(notu) FROM ogrenciler GROUP BY adi HAVING AVG(notu) > 60

+-----+------+

| adi |notu  |

+-----+------+

|Hasan|61    |

|Veli |65    |

+-----+------+

AVG Fonksiyonu

AVG([DISTINCT] expr)

expr ile verilen kolondaki değerlerin aritmetik ortalamasını döndürür. DISTINCT parametresi opsiyoneldir, verilirse kolondaki benzersiz değerlerin aritmetik ortalaması alınır. Eşleşen satır bulunamazsa null döndürür.


Öğrenciler tablosu aşağıdaki gibi olsun.

+-----+-----+------+

| id  | adi |notu  |

+-----+-----+------+

| 123 |Veli |60.5  |

| 124 |Veli |73.5  |

| 125 |Ali  |87.5  |

| 126 |Ali  |45.5  |

| 127 |Hasan|55.5  |

+-----+-----+------+

her öğrencinin not ortalamasını bulmak isteyelim.

mysql> SELECT adi, AVG(notu) FROM ogrenciler GROUP BY adi

+-----+------+

| adi |notu  |

+-----+------+

|Ali  |66.5  |

|Hasan|55.5  |

|Veli |67.5  |

+-----+------+

MySql DATE_ADD Fonksiyonu

DATE_ADD(tarih,INTERVAL ifade birim)

Tarih hesaplamaları için kullanılır.

Tarih paremetresi başlangıç değeridir. Date veya Datetime tipinde bir değer almalıdır.

İkince parametre ise iki bölümden oluşur.
Birim ve ifade parametreleri için değerler aşağıdadır.

Örneğin, datetime türünde bir alanımız -tarih adında- olsun, şimdiki andan 12 saat önceki ve 12 saat sonraki kayıtları çekmek isteyelim.

SELECT * FROM tablom WHERE tarih < DATE_ADD(NOW(), INTERVAL 12 HOUR) AND tarih >DATE_ADD(NOW(), INTERVAL -12 HOUR);
Birim değeri beklenen ifade değeri
MICROSECOND Mikrosaniyeler
SECOND Saniyeler
MINUTE Dakikalar
HOUR Saatler
DAY Günler
WEEK Haftalar
MONTH Aylar
QUARTER Çeyrekler
YEAR Yıllar
SECOND_MICROSECOND Saniyeler.Mikrosaniyeler
MINUTE_MICROSECOND Dakikalar.Mikrosaniyeler
MINUTE_SECOND Dakikalar:Saniyeler
HOUR_MICROSECOND Saatler.Mikrosaniyeler
HOUR_SECOND Saatler:Dakikalar:Saniyeler
HOUR_MINUTE Saatler:Dakikalar
DAY_MICROSECOND Günler.Mikrosaniyeler
DAY_SECOND Günler Saatler:Dakikalar:Saniyeler
DAY_MINUTE Günler Saatler:Dakikalar
DAY_HOUR Günler Saatler
YEAR_MONTH Yıllar-Aylar

IN() Fonksiyonu

expr IN (deger,…)

expr ile belirtilen değerin IN ile belirtilen kümede olup olmadığını kontrol eder, eğer varsa 1döndürür, yoksa 0 döndürür.

mysql> SELECT 'siyah' IN ('siyah','mavi','yeşil','kırmızı')
-> 1
mysql> SELECT 'pembe' IN ('siyah','mavi','yeşil','kırmızı');
-> 0