SQL ve MySQL Arasındaki Fark Nedir?

Aslında bu komik bir soru, ancak bir çok kişi tarafından aratılmış ve bende şöyle bir aratıp sonuçlara baktığımda çok güzel sonuçlar göremediğim için ufak bir yazı yazmak istedim. İngilizce olarak “what’s difference between sql and mysql” diye arattığımda, çok güzel bir örnek karşıma çıktı. Bunu sizlerle paylaşmak istiyorum.

SQL uzun haliyle Structured Query Language yani Yapılandırılmış Sorgu Dili demektir. Basit tanımıyla, veritabanı içindeki depolanan verilere ulaşmak ve onlar üzerinde işlem yapmak için kullanabileceğimiz bir dildir.

MySQL ise, bir üründür ve (RDMS * Relational Database Management System) İlişkisel Veritabanı Yönetim Sistemlerinden biridir. MySQL haricinde Oracle, Informix, Postgres ve MSQL‘de aynı şekilde birer üründür ve veritabanı yönetim sistemidir.

Tüm bu ilişkisel veritabanı yönetim sistemleri dil olarak SQL’i kullanır. Her birinin kullandığı SQL dilinde küçük farklılıklar olsada temelde hepsi SQL’i kullanmaktadır.

Bunu gerçek hayattan bir örnekle açıklamak gerekirse, Türkiye’de konuşulan dil Türkçe’dir. Ancak bazı şehirlerde lehçe’de değişiklikler olur. Yine de temelinde konuşulan dil Türkçe’dir.

Yani Türkçe’ye SQL dediğimizde, bazı şehirler ise veritabanı yönetim sistemleri olsun. Bütün RDMS’ler aynı dili konuşuyor sadece lehçeleri farklı o kadar.

Umarım basitçe anlaşılır olmuştur 🙂 Sizinde bu konuda üstüne katmak istediğiniz bilgiler olursa lütfen çekinmeden yorum bırakın.

MySQL 30 Günden Eski İçerikleri Silmek

30 günden eski içerikleri silmek büyük projelerde işimize yarayacaktır. Ben genelde öyle yapıyorum, çok önemli içerik depolanmıyorsa anlık olarak kullanıcıyı ilgilendiren içerikler ise belli aralıklarla bu sorguyu çalıştırıp 30 günden eski içerikleri veritabanınızda boşu boşuna yer kaplamaması için silebilirsiniz.

DELETE FROM tablo_adiniz
WHERE tarih_alani_adiniz < DATE_SUB(NOW(), INTERVAL 1 MONTH);

Kırmızı yere tablo adınızı, yeşil yere de tabloda tarihi tuttuğunuz alanın adını yazıp çalıştırmanız yeterli sorguyu.

İsterseniz 10 günlük, 15 günlük.. x günlük şeklinde de içerik silebilirsiniz.
O zamanda INTERVAL 1 MONTH yerine INTERVAL x DAY olacak.

Mesela 15 günlük içeriği silelim;

DELETE FROM tablo_adiniz
WHERE tarih_alani_adiniz < DATE_SUB(NOW(), INTERVAL 15 DAY);

Güncelleme: MySQL Event Scheduler (olay zamanlayıcısı) ile bu işlemi otomatikte yaptırabiliriz. Şu sorguyu çalıştırmamız yeterli;

SET GLOBAL event_scheduler = ON;

DELIMITER $$

CREATE EVENT clearLog
ON SCHEDULE EVERY ‘1’ MONTH
STARTS ‘2011-05-01 00:00:00′
DO
BEGIN
DELETE FROM tablo_adiniz WHERE tarih_alani_adiniz < DATE_SUB(NOW(), INTERVAL 1 MONTH);
END$$

DELIMITER ;

MySQL LENGTH() fonksiyonu

Açıklama
Belirlenen kolonun karakter uzunluğunu döndürür.

Örnek Kullanımı
Örneğin test tablosunda ad kolonu karakter uzunluklarını yazdıralım;

SELECT *, LENGTH(ad) as ad_uzunluk FROM `test`

şimdide bu uzunlukları 3’e eşit olanları listeleyelim sadece;

SELECT *, LENGTH(ad) as ad_uzunluk FROM `test`
HAVING ad_uzunluk = 3