Academytech’te 7-8 ay sürecek C#.NET eğitimimin ikinci kulvarına girmiş bulunmaktayız. Değerli öğretmenimiz İbrahim ERSÖZ ile devam ettiğimiz eğitimde şimdi ki konumuz Microsoft SQL Server. Dün ve önce ki gün SQL’e dair öğrendiklerimi kısa kısa yazacağım. Bu arada o kadar zaman PHP-MySQL ikilisi ile uğraşmama rağmen SQL’in bu kadar zevkli olduğunu görememişim. Büyük ayıp
SELECT ‘Uğur’
SELECT bizim bir sorguyu gerçekleştirmek için ana kelimemizdir. SEÇ anlamına geliyor. Yukarıda ki sorgu ekrana Uğur yazdırır.
SELECT * FROM ELEKTRON
Bu basit birşey fakat SQL’de yeniler için kısaca anlatayım. SELECT ile sorgu cümlesine girdik (*) işareti getirilecek tabloda ki bütün sütunları ister. FROM ELEKTRON hangi tabloda bu işlemin gerçekleşeceğidir.
SELECT AD,PAROLA FROM ELEKTRON
Üstte ki sözcük ise ELEKTRON tablosundan sadece AD ve PAROLA sütunlarının gelmesini istemektir.
SELECT AD,PAROLA,’Selamünaleyküm’ AS SELAM FROM ELEKTRON
Bu sözcük AD ve PAROLA sütununu getirmekle beraber ‘Selamünaleyküm’ AS SELAM ile yeni bir sütun oluşturur. SELAM bu sütunun ismidir ve Selamünaleyküm ise tamamen içeriği oluyor.
İki Tabloyu Birleştirmek
- INNER JOIN Yöntemi
SELECT * FROM ELEKTRON
INNER JOIN
HALKA ON
ELEKTRON.HALKASI = HALKA.ID
Bu sorguda ELEKTRON tablosunda ki HALKASI sütunu HALKA tablosunda ki HALKA.ID ile eşitlenip birleştiriliyor. Yani bu sorgu cümlesinden birinci tabloda ki ELEKTRON‘un HALKA numarası HALKA tablosunda ki ID ile eşlenerek geliyor. INNER JOIN, içte birleşmek gibi bir anlama geliyor. INNER JOIN ardından birleştireceğimiz tablo olan HALKA‘yı yazdık. ON‘un arından neye göre birleştireceğimizi belirtiyoruz. Önce tablo sonra nokta koyup sütun adını yazarak eriştik ve eşleşmeyi yaptık.
- IN Yöntemi
INNER JOIN‘e göre çok performanssız olduğu ve gerekmedikçe kullanılmaması gerektiği önemle belirtildi hocamız tarafından. Ne kadar içiçe SELECT varsa o kadar performansızlık olur bir çok zaman.
SELECT * FROM ELEKTRON WHERE HALKASI IN(SELECT ID FROM HALKA)
WHERE HALKASI ile ELEKTRON tablosunun HALKASI sütununda arama yapacağımızı belirttik. İçeride ki sorguda HALKA tablosunun ID‘leri getirildi ve HALKASI sütununa eşitlendi.
Kritere göre çağırmak
SELECT * FROM ELEKTRON WHERE HALKASI = ’5′
Yukarıdaki sorgu HALKASI 5′e eşit olanları çağırdı.
SELECT * FROM ELEKTRON WHERE HALKASI != ’5′
Yukarıdaki sorgu HALKASI 5′e eşit olmayanları çağırdı.
SELECT * FROM ELEKTRON WHERE HALKASI != ’5′ & AD = ‘GEN’
Yukarıdaki sorgu HALKASI 5‘e eşit olmayan ve AD‘ı GEN olanları çağırdı.
SELECT * FROM ELEKTRON WHERE HALKASI != ’5′ OR AD = ‘GEN’
Yukarıdaki sorgu HALKASI 5‘e eşit olmayanları veya AD‘ı GEN olanları çağırdı.
SELECT * FROM ELEKTRON WHERE AD LIKE ‘%EN’
Yukarıdaki sorgu ELEKTRON tablosunda AD sütununda EN ile biten AD‘ları çağırdı. LIKE ‘%EN’ belirli aralıklarda arama yapabilmemizi sağlar. Bu sorgu GEN adını getirebilir.
SELECT * FROM ELEKTRON WHERE AD LIKE ‘%EN%’
Yukarıdaki sorgu ortasında EN bulunan ADları getirir. Örneğin ASENA.
SELECT * FROM ELEKTRON WHERE AD LIKE ‘?EN%’
Yukarıdaki sorgu ilk harfi bilinmeyen ve arından EN gelen gerisi herhangi bir şey olan tüm ADları getirir. Örneğin SENA gelir fakat az önceki örneğimizde ki ASENA ismi gelmez. Soru işaretini arttırarak bilinmeyen harf sayısınıda arttırabiliriz. Ortalara da soru işareti koyarak arama gerçekleştirebiliriz.
Dataları saymak
SELECT COUNT(*) AS SAYI FROM ELEKTRON
COUNT(*) fonksiyonu ile ELEKTRON tablosunda kaç satır olduğunu öğrendik ve bunu AS SAYI ile SAYI adında oluşturduğumuz tabloya ekledik.
SELECT COUNT(*) AS [UĞURLU SAYI] FROM ELEKTRON
Üstteki yazımda UĞURLU SAYI adında Türkçe karakterli hayali bir sütun adı üretebiliyoruz. Fakat karakter kodlamalarında ki kıllıklardan ötürü hiç tavsiye etmem.
Belirli bir değer arasındaki verileri getirmek
SELECT * FROM ELEKTRON WHERE BETWEEN YAS 20 AND 30
BETWEEN‘in Türkçe karşılığı ARASINDA anlamındadır. WHERE BETWEEN YAS, YAS sütununda belirli birşeylerin ARASINDA ARAMA yapacağımız anlamına geliyor. Bu aralığıda 20 AND 30 ile belirliyoruz. Yani 20 ve 30 yaşları arasında ki YAŞlara sahip ELEKTRONlar geliyor.
SQL CASE yapısı
SELECT CASE 1 WHEN 1 THEN ‘BİR’ ELSE ‘BİR DEĞİL’ END
Bu sorguda CASE‘den sonra bir değer verdik. Verdiğimiz değer 1. WHEN‘den sonra gelen değer CASE değerine eşit mi diye kontrol edilecek. Eğer eşitse THEN‘in ardında ki yazı yazacak yani ‘BİR‘ değilse ‘ELSE‘nin arında ki ‘BİR DEĞİL‘ yazısı yazacak ve END ile sözcük bitirilecek. 1, 1′e eşit olduğu için tabiki sonuç BİR olacak.
Olayı biraz daha egzantrik hale getirelim.
SELECT AD,
CASE WHEN YAS >= 20 AND YAS <= 30
THEN ’20-30 ARASINDA’
ELSE ‘DEĞİL’
END
AS DURUM
FROM ELEKTRON
Üstteki sorgumuzda AD sütununu getirdik ve ardından YAS sütunu üzerine bir takım işlemler yaptık. Dikkat ederseniz CASE herhangi bir değer almadı çünkü karşılaştırmaları WHEN bölümünde yaptık. Eğer yaş 20′den büyük ve 30′dan küçük ise THEN ifadesinde ki ‘20-30 ARASINDA‘ yazısı çıkacak. Değilse ‘DEĞİL‘ yazıp END ile kestirip atacak. Tabii AS DURUM ile sonucu DURUM adlı bir hayali sütun üzerine ekledik.
NULL olmayanları getir
SELECT * FROM ELEKTRON WHERE NOT YAS IS NULL
Yaşı NULL yani boş olmayanları getir anlamına geliyor. Eğer NOT‘ı kaldırırsanız YAS‘ı NULL olanları getirir.
Şimdilik bu kadar biraz yemek yiyeyim
Herkese başarılar…
Mustafa Uğur AKÇIL
İzinsiz kopyalanamaz, yayınlanamaz veya ticari işlerde kullanılamaz !
[...] öğrendiği yeni SQL konularıyla beraber bir akşam hiç usanmadan şunları yazmış ve bu daha başlangıç [...]