structured query language kelimesinin kısaltmasıdır ve database ile iletişimde kullanılan dildir. yazılım sektöründe herkes biraz bilse de uzmanlarına zor ulaşılır, gerçek anlamda profesyonel olarak bilen kişiler altından daha değerlidir çünkü teorik bilginin yanında çok fazla tecrübe gerektirir.
örnek bir sql sorgusu: select * from entries where uye="canarslan12" ile benim girdilerime ulaşabilirsiniz.
structured quey language, yani yapısal sorgulama dili.
ilişkisel veri tabanı üzerinde işlemler yapmaya ve verileri bizim istediğimiz şekle getirmeye yarar.
Peki veri tabanı ne demek? Kısaca "verilerimizin elektronik ortamda saklandığı yapı" diyebiliriz. Sql tanımında özellikle "ilişkisel veri tabanı" diye belirtmemin nedeni, SQL kullanıl(a)mayan veri tabanı sistemlerinin de olması.
Peki ilişkisel veri tabanı ne demek? Onu da kısaca tanımlayalım. Örneğin sizin bir vatandaşlık numaranız var. Bu numara ile size ait diğer veriler ilişkili. Yani adınız, soy adınız, doğum tarihiniz gibi bilgilere bu numara üzerinden erişebilir. Detaylarını ayrı girdi içerisinde yazarım.
SQL kullanmayı öğrenmelimisiniz? Eğer veriler ile sıklıkla çalışan biriyseniz öğrenmenizde yarar olabilir. Yazılım geliştirmeyi hedefliyorsanız mutlaka öğrenmeniz gerekiyor. Onun dışında hobi olsun diye öğrenilecek bir şey değil.
Veriler ile sıklıkla çalışan biriyseniz sözünü de açayım. Örneğin Excel uygulaması üzerinde çok sık çalışıyorsanız ve vlookup komutunun hantallığından bıktıysanız SQL size yeni kapılar açabilir, excel içerisinde de SQL kullanma imkanınız var ve gerçekten çok işe yarıyor. Eskiden microsoft ofis uygulamalarında veri tabanı olarak access kullanılırdı ama artık bunu kullanmayı Microsoft bile önermiyor. "Access kullanacaksan yine kullan ama önerim sql server express kullanman" diyor.
SQL kullanmayı öğrenmek isteyenlere de önerim Microsoft Sql Server Express kurmalarıdır. Sql Express ile birlikte sql server management studio uygulamasını da indirmenizde yarar var. Lisans gerektirmeyen ücretsiz bir uygulama.
MySql de veri tabanı kullanımını öğrenmek için güzel bir kaynak. Zaten bir veri tabanı sistemini öğrendikten sonra diğerlerini de gözden geçirin, kolaylıkla uyum sağlarsınız. MySql, postgresql gibi veri tabanı sistemlerini de kurup denemenizi öneririm.
Peki, nasıl öğreneceğiz? Öncelikle matematik dersinde yıllar önce gördüğümüz kümeler konusunu gözden geçirin. her şeyin temeli burada. Kümeler ve kartezyen çarpım konusuna bir çalışın.
İnternet üzerinde eğitim videoları ve dokümanları bulmak mümkün. Üzerinde çalışmak için örnek veri tabanı indirmeniz gerekebilir. Aşağıda bir çok örneği deneyebileceğiniz ve microsoft eğitimlerinde de kullanılan veri tabanı örneklerini indirebileceğiniz bir adres var:
Grafik ara yüzü kullanmaktan çekinmeyin, en hızlı öyle öğreniliyor. Örneğin ilk başlanan konu "Select" komutudur.
Grafik ara yüz üzerinden tabloda istediğiniz sütunları seçtiğinizde, bu bilgileri elde etmek için hazırlanan SQL cümlesinin nasıl değiştiğini anlamaya çalışmak, bir dokümanın tamamını okumaktan daha hızlı sonuç veriyor.
Join, inner join, outer join gibi konular kümeler ve kartezyen çarpım ile ilgili.
Kafa karıştıran konulardan bir tanesi "group by" komutu. onu biraz sona bırakın. Gruplamayı öğrenmeden önce sıralama (order by) kullanımını öğrenmek gerekiyor.
Bu seviye temel kullanım. Bir veri tabanını profesyonel olarak kullanacaksanız, mutlaka indeks yapılarını da öğrenmeniz gerekiyor. Ayrıca sql tunning olarak bilinen bir kavram var. Bir veri tabanından istediğiniz verileri almanın farklı yolları var. Sql cümlesini biraz daha farklı kullanarak daha yüksek performans ile verileri almanızı sağlayacak yöntemleri öğrenmenizde yarar var. Tabi ki bu söylediğim durum veri tabanı içerisinde 10 milyon kayıttan fazlası var ise fark yaratıyor.
Daha sonraki aşamalarda ise bazı işleri veri tabanının kendisine yaptırmanızı sağlayan stored procedure, trigger geliştirme gibi konuları öğrenmek gerekiyor. Bunlar biraz daha ileri düzey konular.
Veri tabanı ile uğraşan iki grup vardır, biri yazılım geliştiriciler. Yazılım geliştirenler yukarıda saydıklarımı bilirler.
Bir de veri tabanı yöneticiliği vardır ki bu şahıslar genelde alemde db admin olarak bilinir. Bu kişiler normal zamanda pek iş yapmıyor gibi görünür, ama kritik insanlardır. Veri tabanının sağlıklı bir şekilde hayatta kalmasını sağlarlar, güvenliğinden sorumlu olurlar. Üzerinde çalıştığı donanımı denetler, yedekleme sistemlerini kurar (db adminin iyisi yedeği eliyle almayan, her şeyi sisteme bağlayan kişidir), sistemin sağlığını denetler. Performansı sorgular, fazla kaynak tüketen sorguları yakalar ve sorguyu geliştiren yazılımcıya "bre zındık, bu hal? nerede bu tablonun indeksi deyyus?" diye sorar. Sistem ayaktayken kraldır, sistem çökerse kıyameti gelir. Eskiden bu adamlar zor bulunurdu, büyük veri tabanı sistemleri için stabilitesinden dolayı oracle kullanılırdı ki üzerinde çalıştığı donanımdan işletim sistemine kadar her şeyi farklıydı, az bulunurdu ve bunların hepsinden anlayan adama yarı tanrı muamelesi yapılırdı. Oracle veri tabanı da çok lanet bir şeydir, güzel çalışır ama çökünce tam çöker. Zamanla oracle hakimiyetini yitirdi, veri tabanı sistemlerinin yönetimi grafik arayüzler ile daha kolay yapılır hale geldi ve db admin maaşları düştü. İleride bu kişiler de olmayacak çünkü bulut ortamında çalışan sunucu hizmeti satın aldığınızda db admin çalıştırmanıza da gerek kalmıyor.