SQL

SQL Verilerin Sorgulanması

Merhabalar, bugün SQL (Yapılandırılmış Sorgu Dili) üzerinde basit select komutları kullanarak verilerimizi sorgulayacağız. Ben yönetim sistemi  olarak MySQL kullandım, sizler SQL Server da kullanabilirsiniz.

phpMyAdmin

phpMyAdmin‘i bilgisayarınıza sanal sunucu kurarak çalıştırabilirsiniz. Evrensel tanımı aşağıdaki gibidir:

phpMyAdmin, PHP ile yazılmış açık kaynak kodlu bir araçtır. Başlıca kullanım amacı İnternet üzerinden MySQL veritabanı yönetimidir. Veritabanı oluşturma ve silme, tablo ekleme/değiştirme/silme, alan ekleme/değiştirme/silme, SQL sorguları çalıştırma, kullanıcıları, yetkileri ve alan anahtarlarını yönetme gibi işlevleri yapabilen ücretsiz bir yazılımdır.

phpMyAdmin‘in genel amacı verilerin depolanması ve gerektiğinde de bu verilere erişilebilmesidir.

Select

Select komutu, veritabanında bulunan verileri sorgulamak için kullanabileceğimiz en basit komuttur.

Yukarıdaki ifadede select_listesi bize sorgu sonucunda görmek istediğimiz kolonların listesini gösterirken tablo_listesi ise listelediğimiz kolonları içeren tabloların listesidir.

Şimdi MySQL‘de bir veritabanı oluşturalım ve sorgumuzu çalıştıralım. Oluşturduğumuz veritabanının ismi OrnekCalisma, tablomuzun ismi ise arabalar.

Bağlantımızı Sağlayalım:

Ben burada PDO kullanmayı tercih ettim. PDO hakkında daha fazla bilgi almak için tıklayın.

Select Komutu

OrnekCalisma veritabanında, arabalar tablosunda select komutumuzu çalıştıralım.

Bu sorgunun dizi olarak çıktısı aşağıdaki gibidir:

Görüldüğü üzere; arabalar tablomuzda bulunan bir satırlık verimizi başarılı bir şekilde bizlere iletti. Şimdi de sadece belirli kolonları çalıştıralım.

Select ifademizin ikinci kısmında ulaşmak istediğimiz kolonları yazıyoruz. Bmw, Ford ve Seat kolonlarında tutulan verileri çağırdık. Kolonlar arasında virgül kullanıyoruz. Bunun sonucunda ise çıktımız aşağıdaki gibidir:

Dizi çıktımızda da görüldüğü üzere, sadece kolonlarını belirttiğimiz verileri görmekteyiz. Bazı durumlarda tablolarımızda onlarca kolon olabilir ve biz bu kolonları tek tek yazmakla uğraşmak istemeyebiliriz. Bu gibi durumlarda star (*) ifadesini, bir önceki örnekte olduğu gibi kullanarak tüm kolonlardaki verileri listeleyebilirsiniz. Fakat, sorgu performansı açısından yazmanız tavsiye edilir.

AS Anahtar Sözcüğü (Alias)

Sorgu listesinde, bazı durumlarda listedeki sütun isimleri değiştirilmek istenebilir. Bu gibi sorunlarda ise As anahtar sözcüğünü kullanıyoruz. Bu şekilde oluşturulan yeni isimlere Alias denir. Yukarıdaki örneğimiz üzerinden devam edelim:

Sorgumuz sonucunda  mevcut kolon isimlerimiz yerini Alias kullanımı ile belirlediğimiz isimlerin aldığını görebilirsiniz. Kolon isimlendirmeleri yukarıda da görebileceğiniz gibi farklı şekillerde olabilir.

Birinci kullanım şekli olarak bmw AS BMW kullandık, mevcut kolon ismimizden sonra AS ifadesi ile yeni belirlediğimiz ismi atayabiliriz. İkinci kullanımda, AS ifadesi yerine boşluk kullanabiliriz. Sorgularımızın daha düzenli gözükmesi açısından AS ifadesini kullanarak yazmak daha sağlıklı olabilir. Son gösterimimizde, tek tırnak içerisinde yazmamızın nedeni yeni belirlediğimiz ismin içerisinde boşluk olması. Bu gibi durumlarda tek tırnak kullanıyoruz.

Sorgu Sonuçlarının Koşul İle Sınırlandırılması (Where)

Select komutu ile daha önce verilerimizi getirebileceğimizi belirtmiştik. Fakat select ifadesi bizlere tablodaki tüm verileri getirecektir. O halde en basit hali sorgumuz şu şekilde olmalıdır:

Ben id kolonumda değeri 2 olan verimin gelmesini istiyorum, buna göre sorgumuzu oluşturalım.

WHERE ifadesi kullanılırken bizlere gelen kayıtlar TRUE, FALSE veya UNKNOWN olarak değerlendirilir. TRUE ifadesi, bizim koşulumuza uygun olarak iletilen verileri temsil eder. FALSE ifadesi ile koşula uymayan veriler temsil edilir. UNKNOWN ifadesi ise koşul için erişilen verinin NULL olduğunu belirtir. NULL değer ifadesi sayı tipleri için 0, karakter tipleri içinse boşluk anlamını taşır. NULL değerler UNKNOWN olarak değerlendirilir ve iki farklı NULL değer birbiri ile eşit mi değil mi diye kontrol edilemez.

Yukarıda gördüğümüz örnekte id değeri 2 olan verimizin gelmesi için oluşturduğumuz sorguda eğer koşullarımızda kullandığımız ifade sayısal ise direkt yazabiliyoruz fakat karakter olsa idi tek tırnak içerisinde yazmak durumundaydık.

Yukarıdaki örnekte mavi olan arabaların listelendiğini uygun tablo biçimi ile gözlemleyebilirsiniz.

Peki neden tek tırnak kullanıyoruz?

Bu sorunun da cevabına değinelim. Tek tırnak kulanmadan yazdığımız her ifade kolon ya da tablo olarak nitelendirilir, SQL tarafından nesne olarak algılanır. Biz, bu ifadelerin nesne değil bir ifade olduğunu belirtmek için tek tırnak kullanmak durumundayız.

Birden Fazla Koşul İfadesi

Sorgularımızda sadece tek bir koşul ifadesi değil aynı zamanda birden fazla koşul ifadesini de aynı anda kullanabiliriz. Bunun için ise AND veya OR operatörlerinin kullanılması gerekir.

Burada rengi mavi veya id değeri 2 olan verilerimizi bize iletmesini istedik. Or (veya) operatörü iki koşuldan birisi de uysa, TRUE olarak çalışacaktır. Bir de AND (ve) operatörü ile ilgili bir örnek yapalım.

Burada ise kullanmış olduğumuz AND operatörü rengi mavi ve id değeri sadece 2 olan verileri bizlere gösterecektir.

Olumsuz Koşul (NOT)

Kullandığımız sorgularda şartları olumsuz yapmak istersen NOT operatörünü kullanabiliriz. Bunun için bir örnek yapalım.

Örneğimizde id değeri 1 olmayan kayıtları filtrelemiş olduk. Bu örneğin çıktısı ise, id değeri 1 olmayan tüm kayıtların gösterileceği anlamına gelir. Uygun tablo biçimi ile test edebilirsiniz.

Koşul Önceliği

WHERE ifadesi ile kullanabileceğimiz koşul operatörlerini tanıdık ve kullanım biçimlerine dair örnekler yaptık. Bu şartların sağlanmasında bazen istenmeyen sonuçlarla karşılaşabiliriz. Bunun için parantez kullanımını bilmemiz gerekir.

Sorgularımızda öncelik işlemleri sırası ile;

  • WHERE ifadesinden sonra parantez içerisindeki işlemler
  • NOT operatörü
  • Bu operatörden sonra varsa AND operatörü ve sonrasında da yine varsa OR operatörü işlem görür.

Bu konuda bir örnek yapalım:

Yukarıdaki SQL sorgumuzda, renk değeri kesinlikle mavi olan, yil değeri ise 2006 ya da 2010 değerlerine sahip verilerimizi listeledik.

Burada, parantez kullanmasaydık eğer sorgumuzda öncelikli olarak AND operatörü çalışacaktı yani renk değeri mavi olan ve yil değeri 2006 olan verilerimizin sonuç kümesi ile yil değeri 2010 olan verilerimiz OR operatörü ile karşımıza gelecekti.

Sorgulamada Karşılaştırma Operatörlerinin Kullanılması

 

OPERATÖR AÇIKLAMA
!= İki ifadenin eşit olup olmadığını kontrol eder.
!> Soldaki koşulun sağdakinden büyük olup olmadığını kontrol eder.
!< Sağdaki koşulun soldakinden büyük olup olmadığını kontrol eder.
< Soldaki koşul sağdaki koşuldan küçük mü kontrol eder.
<= Soldaki koşul sağdaki koşuldan küçük veya eşit mi kontrol eder.
<> İki ifadenin birbirine eşit olup olmadığını kontrol eder.
= İki ifade arasındaki eşitliği kontrol eder.
> Soldaki ifadenin sağdakinden büyük olup olmadığını kontrol eder.
>= Soldaki ifade sağdaki ifadeden büyük ya da eşit mi diye kontrol eder.
ALL Bir karşılaştırma operatörü ya da alt sorgu ile kullanıldığı zaman alınan değerlerin tümü arama koşulunu sağlayan satırları alır.
BETWEEN Dahil olan bir aralığı belirtir. Başlangıç ve bitiş değerinin arasında yer alan AND operatörü ile kullanılır.
CONTAINS Sözcükler ve ifadeler için belirsiz bir arama yapar.
EXISTS Bir alt sorgu ile kullanıldığı zaman alt sorgudan satır dönüyor mu kontrol eder.
IN Arama koşulunu sağlayan değerleri içeren liste sağlar.
IS NOT NULL Değerin boş olup olmadığını kontrol eder.
NULL Değer boş mu kontrol eder.
LIKE Verilen örnek değerle eşleşmeyi kontrol eder.
NOT BETWEEN Verilen aralıkta yer almayan değerleri döndürür.
NOT IN Satır döndürmeyen değerlerin listesini içerir.
NOT LIKE Verilen örnekle eşleşmeyen değerleri döndürür.

Yazının devamı gelecektir.