May 4th, 2008
yazar Zihni.
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 |
+-----+-----+------+
Nis 25th, 2008
yazar Zihni.
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 |
+-----+------+
Nis 24th, 2008
yazar Zihni.
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 |
+-----+------+
Şub 10th, 2008
yazar Zihni.
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 |
Oca 12th, 2008
yazar Zihni.
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