SQL (Standard Query Language, Yapılandırılmış Sorgu Dili), veri tabanı oluşturmak ve yönetmek için kullanılan bir dildir. Veri tabanlarıyla iletişim kurulmasını sağlayan bir köprüdür. Veriye erişmek için ‘query’ adı verilen kod blokları yazılır. Bu kod blokları verinin filtrelenmesine, manipüle edilmesine, verinin analiz edilmesine ve ihtiyaç duyulan verinin veritabanından çıkarılmasına olanak sağlar. Bu yazıda bir veri bilimci ya da bir veri analizci için olmazsa olmaz yetkinliklerden biri olan SQL komutlarını ve genel yazım şekillerini (sentaks) inceleyeceğiz.
Not: Bu yazıda PostgreSQL’in genel kullanım kuralları incelenmesine karşın ilgili sentaksların birçoğu Oracle, MySQL gibi diğer SQL arayüzleri için de geçerlidir.
Ön açıklama: Bu yazıda w3schools sitesindeki veri tabanı kullanılmıştır. İlgili sitede istediğiniz senaryolarla bilgisayarınıza herhangi bir program indirmeden pratik yapabilirsiniz.
SELECT
Select komutu en çok kullanılan komutlardan biridir. Bu komut bir tablodan verinin seçilmesine yarar.
Bu komut ile veri setindeki tüm bilgiler ve sütunlar çağrılır. Veri setinin genel bir resmi çizilir.
Tüm sütunlar yerine yalnızca belli sütunlar çağrılmak istenirse komut aşağıdaki gibi kullanılır. Bu örnekte tüm sütunlar yerine yalnızca CustomerName isimli sütun seçilmiştir.
Not: SQL komutları genellikle büyük harf kullanılarak yazılır. Bunun nedeni kodun daha kolay okunmasını sağlamaktır (bir nevi adettendir de denilebilir). Küçük harf kullanımında herhangi bir hata ile karşılaşılmaz.
Benzer şekilde kodlar ‘;’ ile bitirilir. Noktalı virgül kullanımı yukarıda bahsedilen büyük harf kullanımına benzer şekilde herhangi bir hata alınacağından değil, kodun daha kolay okunmasını sağlayacağındandır. Özellikle SQL ile veri analiz edilirken birçok satır kod yazılabileceğinden noktalı virgül kullanımı işleri kolaylaştıracaktır.
SELECT DISTINCT
Bir veri bilimcinin en çok karşılaştığı problemlerden biri duplicate (yinelenen) verilerdir. Analizleri yaparken daha sağlıklı sonuçlar elde etmek için yinelenen verilerden sadece bir tanesiyle devam etmek istenir. Ya da bazı durumlarda bir değişkendeki farklı değerler incelenmek istenir. Bu gibi durumlarda kullanılan komut SELECT DISTINCT komutudur.
Bu ifade, Customer tablosunda kaç farklı şehir olduğu bilgisini verir.
SELECT WHERE
SELECT WHERE komutu veriyi filtrelemek için ya da veriye bir koşul koymak için kullanılır. Aşağıdaki mantıksal işlemlerle birlikte kullanılarak birden fazla koşul da birleştirilebilir:
Bu ifadenin çıktısı aşağıdaki gibi olur:
COUNT
COUNT fonksiyonu veri setindeki satır sayısını ya da diğer bir deyişle gözlem sayısını verir.
Not: Verideki satır sayısı hangi sütun kullanılırsa kullanılsın aynı sonucu vereceği için COUNT(sütun_adı) veya COUNT(*) komutlarından herhangi biri kullanılabilir. Fakat, ilerleyen zamanlarda yazılan kod tekrar okunduğunda, kod yazılırken nasıl bir problemle uğraşıldığını hatırlayabilmek için sütun adı ile birlikte kullanmak daha kullanışlı olacaktır.
Bu ifade veri tabanında kaç farklı ülke olduğu bilgisini üretir.
UPPER / LOWER
UPPER ve LOWER fonksiyonları string (karakter) bir string ifadeyi büyük ya da küçük harfe dönüştürmek için kullanılır. Örneğin, veri setinde bir string ifadeye ait gözlemler bulunmak istensin, ancak ilgili değişkenin veri setinde büyük harf mi yoksa küçük harf mi kullanılarak yazıldığından emin olunmasın. ‘=’ mantıksal operatörü, büyük/küçük harfe duyarlı olduğundan verilerin bir kısmı kaybedilebilir. Bu gibi senaryolar için UPPER veya LOWER fonksiyonu kullanılabilir.
Yukarıdaki kodun ilk kısımda şehir sütunu küçük harfe çevriliyor ve ‘berlin’ ifadesi aranıyor. İkinci kısımda ise sütun büyük harfe çevriliyor ve bu sefer de ‘LONDON’ ifadesine eşit olanlar aranıyor. Bu ifadenin çıktısı aşağıdaki gibi olur:
ORDER BY
ORDER BY komutu bir sütunu artan (ASC) ya da azalan (DESC) şekilde sıralamak için kullanılır. Sayısal ifadeler küçükten büyüğe ya da büyükten küçüğe, karakter ifadeler ise alfabetik ya da ters sırada sıralanır.
SQL’de varsayılan, verilerin artan biçimde sıralanmasıdır (ASC). SQL’e sıralama şekli özel olarak belirtilmediği sürece veriler artarak sıralanır.
Bu ifade Price sütununu en büyükten en küçüğe doğru sıralar. Bu çıktıya göre en pahalı ürün 263.5 birim fiyatıyla Cote de Blaye’dir.
LIMIT
LIMIT ifadesi, çıktısı alınmak istenen gözlem sayısını verir.
Not: Büyük bir veri setiyle çalışılması halinde, veri analiz edilirken her SQL kodunun sonuna LIMIT ifadesiyle bir sınır koymak işlemin daha hızlı gerçekleşmesini sağlar.
Bu ifade, CategoryID değeri 1 olan en pahalı 5 ürünü verir.
BETWEEN
BETWEEN operatörü belli bir aralıktaki değerleri seçmek için kullanılır.
Not: BETWEEN operatörü kullanılırken yazılan alt ve üst sınırlar aralığa dahildir. Diğer bir deyişle “> =” ve “< =” ifadelerini kullanmak ile aynı sonuç elde edilir. Aralığın dışında kalan değerler seçilmek istenirse NOT BETWEEN ifadesi kullanılır.
IN
IN operatörü, bir listeye ait olan ifadeleri seçmek için kullanılır.
BETWEEN komutuna benzer şekilde, bir listeye ait olmayanlar NOT IN kullanılarak seçilir.
LIKE / LIKE
LIKE ve ILIKE operatörleri verideki örüntüleri seçmek için kullanılır.
LIKE operatörü büyük ve küçük harfe duyarlıdır. Büyük ve küçük harfe duyarlı olmaması için LIKE yerine ILIKE operatörü kullanılabilir.
Eğer veri setinde belli bir örüntünün dışındaki değerler alınmak isteniyorsa NOT LIKE ifadesi kullanılabilir.
AGGREGATE
Aggregate fonksiyonları birden çok girdi değerine karşılık tek bir sonuç verir ve sayısal değişkenlere uygulanır. Çok kullanılan aggregate fonksiyonlarından bazıları aşağıdaki gibidir:
Sütun Alias
Bir sütuna isim vermek istendiğinde AS ifadesi kullanılır. İsimlendirme yalnızca query süresince geçerlidir. Özellikle aggregate fonksiyonları kullanılarak elde edilen sütunlara alias vermek çıktı yorumlanırken kolaylık sağlar.
Bu ifadenin çıktısı aşağıdaki gibidir:
Çıktı incelendiğinde, ortalama değeri ROUND fonksiyonuyla daha okunaklı hale getirilebilir. Örneğin virgülden sonra 2 basamak kullanmak için aşağıdaki kod yazılır.
Son olarak, şu ana kadar işlenen ifadelerin çoğunu içeren bir query ile yazıyı sonlandıralım:
Yukarıdaki SQL sorgusu ile Supplier ID değeri 1 veya 2 olan, ürün adı L ile başlamayan ve ücreti 10 birimden büyük olan en yüksek ücrete sahip ilk 5 ürünün bilgisine erişilir:
Bu yazımızda veri ile uğraşan tüm profesyonellerin bilmesi gereken SQL sorgu diline ait temel komutları inceledik. Veri bilimi, SQL ve daha birçok konu başlığında kendinizi geliştirmek için Miuul’un sunmuş olduğu eğitimleri inceleyebilirsiniz.
Kaynaklar
Udemy, Portilla J., The complete SQL bootcamp: Go from zero to hero
Udemy, Çolakoğlu Ö., Uygulamalarla SQL öğreniyorum
W3Schools, SQL Tutorial
Medium, Akçin M. T., The Essential Toolbox: Fundamental SQL Statements-I