Bu Sayfayı Paylaş:

Kavram

Limit

Tanım: Bazı ilişkisel veritabanı sistemlerinde (örneğin MySQL) gelen kayıtlardan ilk sıradan belirli bir sayıda almak için kullanılan ifade. Örneğin select * from Uye limit 10 sorgusu ile ilk 10 kayıt alınır

İpucu

MySQL'de İki Tarih Arasında Saat Farkının Alınması

MySQL'de iki tareih arasındaki saat farkı aşağıdaki gibi alınabilir : 

time_to_sec(timediff(CURRENT_TIMESTAMP(), insert_date)) / 3600

Yukarıda örnekte şimdiki zamanla, insert_date arasında geçen zaman saat cinsinden alınır. Değer kusurlu gelebilir . Örneğin 24.0492 ise iki gün arasında 24 saatten fazla zaman geçmiş demektir 

Bir tablo üzerinde aşağıdaki sorguyla test edebilirsiniz

select insert_date, time_to_sec(timediff(CURRENT_TIMESTAMP(), insert_date)) / 3600 from table_adi

 

İpucu

MySQL'de Belirli Bir Gün Önceki Tüm Günkü Kayıtların Alınması

Belirli bir gün önceki (00:00 dan 24:00 e kadar) olan kayıtlar aşağıdaki gibi alınabilir : 

select * from table where
day(tarih_sutun)=day(DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -1 DAY)) and month(tarih_sutun)=month(DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -1 DAY)) and year(tarih_sutun)=year(DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -1 DAY));

-1 yerine -3 yazarsanız bugünden üç gün öncek tümi günün kayıtlarına erişmiş olursunuz. Şimdiki zamanı belirli bir gün önceye alıp (veri istenen güne) kayıtın günü, ayı ve yılı eşit olan kayıtlara bakıldığında o günün kayıtları gelmiş olur



Veri

MySQL'de Case Kullanımı

MySQL'de bazı yerlerde (örneğin select işleminde seçilecek değer için) koşul kullanılabilir. Koşul kullanımının genel yapısı aşağıdaki gibidir :

case  
when then
when then
else
end case

Örneği select işleminde bir int sütunun değeri 0 dan büyük ise a , değil ise b verilmesi sağlanabilir 

select case when sutun_adi>0 then 'a' else 'b' from tablo_adi

 


Örnek

MySQL Cursor Örneği

Aşağıda MySQL'de yapılan basit bir cursor örneği görülmektedir. person tablosunda firstname ve lastname kayıtları alınmaktade ve cursor açılarak ad ve soyadlar , ile birleştirilip, ekranda gözümesi sağlanmatadır. 
 
-- sadece ekranda sonucu gormek icin
DECLARE _output TEXT DEFAULT '';
 
DECLARE v_firstname varchar(45);
DECLARE v_lastname varchar(45);
 
DECLARE finished BOOL DEFAULT FALSE;
 
DECLARE cur CURSOR FOR SELECT firstname,lastname FROM person;
 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = TRUE;
 
OPEN cur;
 
REPEAT FETCH cur INTO v_firstname,v_lastname;
 
IF NOT finished THEN
    SET _output = concat(_output,',',v_firstname," ",v_lastname); 
END IF;
 
UNTIL finished END REPEAT;
 
CLOSE cur;
 
select _output;
 
Not : MySQL'de cursor kodu , stored procedure, function gibi bölümlerin içine koyarak test edebilirsiniz

Kavram

RAND Fonksiyonu

Tanım: MySQL'de 0 ile 1 arasında float sayı üretilmesini sağlayan fonksiyon. Örneğin SELECT sutun_adi, RAND() FROM tablo_adi şeklinde kullanılabilir

İpucu

MySQL'de Belirli Sayıda Rastgele (Random) Kayıt Seçmek

MySQL'de bir belirli sayıda rastgele kayır seçmek için aşağıdaki gibi bir sorgu kullanılabilir : 

select * from tablo_adi order by RAND() limit 100;

Yukarıdaki sorgu tablodan rastgele 100 kayit seçmektedir. Her çalıştırıldığında farklı kayıtların geleceği görülebilir 

 

 


İpucu

MySQL'de Where İfadelerinde Float ve Double Değerleri İçin Eşittir Çalışmamaktadır

MySQL'de float değerleri için = ifadesi ile karşılaştırma yaparsanız başarısız olmaktadır. Örneğin aşağıdaki gibi bir sorgu başarısız olmaktadır : 

select * from uye where no=0.1

no sütunu float tipinde ise veritabanında 0.1 olmasına rağmen size sonuç dönmemektedir. Bunun yerine aşağıdaki gibi yapmanız gerekmektedir : 

select * from uye where ABS(no - 0.1) < 0.0001

Görüldüğü gibi değerin 0.1 ile olan farkını alıp 0.0001 den küçük olmasına baktık. Bu şekilde yapıldığında veritabanında 0.1 olan kayıtlar gelmektedir






Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir