"Vatanını en çok seven, görevini en iyi yapandır."


Hoş Geldin, Ziyaretçi!

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

  • Yeni üyeler Neler Yapmalı, Nasıl Başlamalı? Detaylar için tıklayın
    Rütbeler ve genel görevlendirme konuları hakkında bilgi almak için tıklayın
    Uzmanlık alanları hakkında bildirge için tıklayın
    Güncel forum kuralları için tıklayın

SQL Server T-SQL'e Giriş Ve Sorgular #2

Codbar

Yarbay
Katılım
8 Şub 2017
Mesajlar
1,340
Uzmanlık Alanları:
Veritabanı Sistemleri
Yapay Zeka
Yazılım / Kodlama
Görev/Org:
lojistik
Merhabalar değerli forum üyeleri, bu sefer Veritabanı ile ilgili, üçüncü serisinin devamı ile karşınıza çıkıyorum. Daha önceden paylaşımlarım bu konuda olmuştu. Fakat tam olarak derli toplu değildi. Bunu çözmek için belli bir başlık altında alt konulardan oluşan bir makale düşündüm. Uzun bir makale olacak, keyifli okumalar dilerim.

Bu makale içeriğine geçmeden ön bilgi olarak konu başlıkları şu şekildedir;
  1. Like, Between ,İn & Null İfadeleri
  2. Karakter İşlemleri
1552423796220.png
LİKE, BETWEEN ,IN & NULL İFADELERİ
LIKE
Bu operatör karakterler içerisinde karşılaştırma yapmak için kullanılır. Bir çok farklı yöntem ile gerçekleştirebildiği için, basit metin arama işlemlerinde tercih edilebilecek yöntemdir. LIKE operatörüyle birlikte kullanılan joker karakterler vardır;

  • % Karakteri: Birden fazla harf ve rakamın yerini tutar.
  • _ Karakteri: Bir tek harf ya da rakamın yerini tutar.
  • [Harf] Karakteri: Herhangi bir harf yerine gelebilecek harfleri belirtir.
  • [^Harf] Karakteri: Herhangi bir harf yerine gelemeyecek harfleri belirtir.
  • [A-Z] Karakteri: Belirli harf grupları arasındaki harfleri belirtir.
Yani belli bir sütunda herhangi bir harfi yada kelimeyi aramak yada ilişkilendirilen kayıtları jokerler aracılığıyla -tek tırnak içerisinde- onları getirir.

Örneğimize gelirsek; YH veri tabanımıza "İsim" adında yeni bir tablo oluşturalım.


Ardından aşağıdaki verileri tablomuza ekleyelim.


Evet tablomuzu oluşturduk ve sorgulama yapabiliriz artık diyeceğim ama ondan önce sizlere fotoğraflardan ilkine dikkat çekmenizi isteyeceğim. Fotoğraflarda tablomuzun bir primary key'i eksik olduğunu görüyoruz ve hemen Desing diyerek düzeltmek istiyoruz. Fakat karşımıza şöyle bir hata çıkıyor;

Ne yapmamız gerekiyor? Nasıl çözebiliriz? Demeden edemiyoruz ve aldığımız hatanın nedenini sorguluyoruz. Nedeni ise kısaca; Sql Server'in tablo yetkilerinden kaynaklanıyor. Kurulumdan sonra verilerimizi ayarlamak istiyorsak ilk yapacağımız işlemdir. Çözümü basit Sql Server ayarlarından çözebiliriz.


Tools->Options->Designers-> Prevent saving changes that require table re-creation (Yanındaki tik kutucuğunu kaldırmak) Yolunu izleyerek çözebiliriz.


Örnek_1: Adı sütunun içerisinde "e" harfi geçenleri listeleyen sorguyu yazalım.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_2: Adı sütunu içerisinde baş harfi "e" olanları listeleyen sorguyu yazalım.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_3: Adi sütunu içerisinde son harfi "e" ile biten sorgu cümleciğini yazalım.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Not: Dikkat ettiniz ise aranılacak kelimenin başında('...%'), sonunda('%...) yada herhangi bir yerinde('%...%) nasıl % işaretinin kullanılacağına dair bilgi edinmişsinizdir.

Örnek_4: "an" ile biten tüm 7 harfli isimleri listeleyen sorguyu yazalım.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_5: "g" ya da "b" ile başlayan soyadlarını listeleyen sorguyu yazalım.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_6: "g" ile başlayan ama ikinci harfi "ö" olmayan soyadları ya da "a" ile "t" arasında "an" ile biten isimleri listeleyen sorguyu yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


BETWEEN ... AND...
Bu koşullu operatörümüz select cümlelerinde where koşulu ile birlikte kullanılır. Between iki operand alır. Aldığı bu ilk değer küçük, ikinci değeri ise büyük olanıdır. Kullanım şekline gelirsek ... WHERE (Aranılacak_Sütun -Değer) BETWEEN ... AND ... şeklindedir.


Artı olarak between bize ekstra yük bindirmekten kurtarıyor. Nasıl mı? Şöyle açıklayayım; Bir maaş sütunumuz olduğunu düşünelim ve bu maaş sütunundan değeri 2000'e eşit olan ve 5000 değerinden düşük maaşları ekrana getirelim.

Tabi aklımıza hemen bu şekilde bir çözüm gelir; ....... where maas >= 2000 and maas <= 5000
Sonuç olarak doğru ama gelin birde bu çözümü Between ile yapalım; ........ where maas between 2000 and 5000


IN / NOT IN
  • IN koşullu operatörümüz ise where ile kullanılabilirken, bir yandan da birden çok kayıtı ararken bize kolaylık sunabiliyor. IN operatörü için bu ifadeyi kullanırsak daha doğru olur; "Birden fazla OR durumu için bir kısaltmadır."
  • NOT IN için ise söyleyeceğimiz şey; Bu operatörü kullanarak belirtilen kayıtların dışında ki kayıtları listeler.
Örneğin; vizenotları bulunan bir sütundan değeri 55,70,80 olanları getiren sorguyu yazın der isek aklımıza hemen böyle bir şey gelir;
-- ..... where vizenotları= 55 OR vizenotları=70 OR vizenotları=80
bunun yerine in operatörü ile şu şekilde yazabiliriz;
-- .... where vizenotları in(55,70,80)IS NULL / IS NOT NULL

  • Sorgulama yaparken Boşluk ve NULL kavramı önemlidir. Yeri geldiğinde null değerlerini görüntülemek, manipüle etmek isteriz. İşte burada ondan bahsedeceğiz.
  • Genelde Boşluk ile karıştırılan bir ifadedir Null ifadesi. Null ifadesi bir alanda boşluk dahil hiç bir verinin olmamasını temsil eder. Çünkü boşluk bilgisayar dilinde bir değere sahiptir. Null kavramı bilinmezlik anlamına gelir ve NULL olan iki değer birbiriyle eşitlik ya da benzeri bir işleme tabi tutulmaz.
  • Sql Server'da metinsel bir değer ile Null'u birleştirmek varsayılan olarak mümkün değildir. Birleştirmeye kalksak bile sonuç NULL olarak döner.
  • Ama veritabanı kayıtlarının işlenerek yönetildiği uygulamalarda Null kayıtlar, doğru kullanılmadıkları takdirde geliştirme aşamalarında hatalara sebebiyet verebilir ve son kullanıcı açısından Null değeri de bir anlamı olmadığından onun yerine farklı bir şeyler yapılabilir. Örneğin; Uygulamalarda "Kayıt Bulunmadı" gibi metinler Null kayıtların yerine son kullanıcıya sunulabilir.
  • İşte Microsoft, Null değerlerini yönetmek için bazı operatörler ve fonksiyonlar geliştirmiştir. Bunlardan bazıları başlıklardan da anlaşılacağı gibi Null ve Is Null'dır.
IS NULL
Bu operatör where filtresi ile kullanılabilirken, herhangi bir sütunda değer girilmemiş null'arı tüm kayıtları listeler.(**Null değerlerini ekrana getirmek istiyorsanız kesinlikle IS NULL kullanın)
Örneğin; Kitap tablosunda Isbn_numarası sütununa hiç veri girilmemiş kayıtları getirmek istersek sorgu nasıl olmalıdır?
SQL:
Please, Giriş yap or Kayıt ol to view codes content!
IS NOT NULL
IS NULL ifadesinin olumsuz şeklidir. Bu operatörü kullanır isek NULL değeri haricindeki kayıtları getirir.


ISNULL
Bu operatörümüzü üstteki ayrılmış IS NULL ile karıştırmayınız. Bu operatörümüz ne işe yaradığını anlatmaya geçeyim hemen. Üst tarafta bir kaç bilgiden bahsetmiştim son kullanıcıya dair. İşte bu operatörümüz iki değer (
kontrol edilecek değer, eşleşen değerin yerine bize sunacak metin) almakla kalmayıp güzel bir şey sunuyor bize. (Bu arada ISNULL ifadesi Where filtresi ile kullanılmaz.)


Örneğin; Sınıf tablosunda bulunan bölüm alanına değer girilmemiş kayıtlar için "Bölüm bilgisi bulunamadı" yazsın.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


GENEL ÖRNEKLER
Bu örneklerde kullanacağımız Sinif tablosunu oluşturacağımız sütun bilgileri-özellikleri aşağıdaki gibidir.

Oluşturduğumuz bu tablonun doldurulmuş şekli aşağıdaki gibidir. (Soruya istinaden bilgiler değiştirilebilir.)


Örnek_1: İkinci sınav notu 75 ile 100 arasında olan öğrencilerin sınav notu ortalamalarını hesaplayıp isimleriyle birlikte görüntüleyen sorgu cümleciğini yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_2: Bilgisayar ve Mekatronik bölümünde okumayan ve doğum tarihleri girilmemiş olan kayıtları getiren sorguyu yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_3: 1.sınava girmeyip 2.sınava giren öğrencilerin yada Ad-soyadı içerisinde "an" ifadesi geçen kayıtları getiren sorguyu yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_4: Adı girilmiş olup soyadı girilmeyen ya da doğum tarihi 1994 küçük ve bilgisayar mühendisliği okuyan kayıtları getiren sorguyu yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


KARAKTER İŞLEMLERİ
Bu konuda Hem Kayıt Yenilemede hem de kayıt görüntülemede kullanılan ve Bulduğu Karekterlerin Başlama Noktasının İndex'ini bulan işleçleri(kelimeleri) öğrenelim. SQL’de herhangi bir string verinin (sütun türü karakter olanların) ilk ve son karakterlerinden istediğimiz kadarını left ve right aracılığıyla elde edebiliriz. Kullanım kalıpları:
  • left (Sutun_Adi,N) : Belirtilen sütun içerisinde soldan n adet parça almak-döndürmek için kullanılır.
  • right (Sutun_Adi,N) : Belirtilen sütun içerisinde sağdan n adet parça almak-döndürmek için kullanılır.
  • Substring(String_Veri,Baslangic_Konumu,N): String verilerde istenilen karakter kadar verinin geri döndürülmesini sağlamak için Substring fonksiyonu kullanılır. Substring deyimi 3 parametre alır.
Örneklerimize geçmeden önce kullanacağımız Üyeler tablosu aşağıdaki gibidir:

&


Örnek_1: Mail bilgisinin son 3 karakteri "com" olanlarının, adreslerini ve kime ait olduklarını sorgulayan sql cümleciğini yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_2: Adını ve soyadını tek sütunda gösterip, 4. karakterden itibaren 4 karakter olacak şekilde görüntüleyen sorguyu yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!

  • len(Sütun): Belirtilen sütun içerisinde girilen her bilginin uzunluğunu (karakter sayısını) belirler.
  • charindex (Bulunacak Karakter,Sütun,Başlangıç Noktası):Bir string türündeki veri içinde istediğimiz bir string verinin (bir karakter olabilir, birden fazla karakter olabilir) başladığı noktasını-index'ini tespit ederiz.
    • Ama aradığımız karakterden sütun içerisinde birden fazla bulunuyor ise bulduğu ilk karekterin index'ini verir.
    • CHARINDEX kullanırken ayrıca bir 3. ifade daha kullanabiliriz. Bu 3. ifadeyi kullanırsak bu sefer şunu demiş oluyoruz, ilgili veri stringinde şu kadar karakterden sonraki kısımda ara...

Örnek_3: Mail alanımızın uzunluğunu ve içerisinde "@" ifadesinin sütun içerisinde başlangıç noktasını bulan sorguyu ayrı ayrı sütunlarda gösteriniz.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


Örnek_4: Mail alanın domain kısmını ekrana getiren sorguyu yazınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!


String veri içinde boşluklar varsa bu boşlukları kaldırmak için genelde bu komutlar ve küçültme, büyütme ile ters çevirme işlemleri için de kullanılır.
  • Ltrim(Sutun): Soldan-verinin sonundaki tüm boşlukları kırpar.
  • Rtrim(Sutun): Sağdan-verinin sonundaki tüm boşlukları kırpar.**
    • (ltrim(rtrim(sutun)) : Hem sağ hem soldan tüm boşlukları kırpar.
  • Reverse (Sutun): Karakter bilgilerini ters çevirir. (MEHMET iken; TEMHEM olarak dönmesi gibi)
  • upper(Sutun): Sutundaki karekterleri Büyük harf yapar.
  • lower(Sutun): Sutundaki karekterleri Küçük harf yapar.

Örnek_5: Adı kısmını büyük olarak, soyadı kısmını ise ters çevirerek ekrana yansıtınız.
SQL:
Please, Giriş yap or Kayıt ol to view codes content!



Elimden geldiğince konuları örnekler ile anlatmaya çalıştım...

animated-goodbye-image-0044.gif
Umarım Makale Yararlı Olmuştur... @Dapirr
 
Son düzenleme:
  • Beğen
Tepkiler: JTM
Üst