SQL Nedir?

Önceki yazımızda SQL’e kısaca değinmiştik. Modern veritabanı sistemleri üzerinde işlem yaptığımız dile SQL denmekte. Bir çok veritabanı standart SQL komutlarını desteklemekte. Aynı zamanda hepsi daha gelişmiş bir yönetim için kendine has komutlar da barındırmakta. Biz şimdi standart SQL’i biraz daha detaylı inceleyelim.

Veritabanı Kavramı yazımızda SQL’den kısaca bahsetmiştik. Bir sorgu dili olan SQL, veritabanları üzerinde çalışır. Her veritabanı SQL çalıştırmak için özel konsollar barındırabilir. Veya kendi programlarımızda da, veritabanına bağlantı teknolojimize göre çeşitli SQL komutlarını veritabanı yönetim sistemine gönderebilir ve sonuçlarını alabiliriz.

Şimdi geçelim SQL dili özellikleri ve örneklerine. Ben Veritabanı Kavramı yazısını yazarken sizin için oluşturuduğum database üzerinde çalışacağım. MS SQL’imin konsolunu açıp veritabanımı seçiyorum. Ve konsolda bulunan New Query düğmesine basıyorum. Bana SQL dilinde sorgular yazabileceğim bir ekran açılıyor. O ekrana SQL dilinde sorgumu yazıyorum. EXECUTE düğmesine bastığımda alttaki RESULTS bölümünde bana veritabanımdan dönen sonuçları listeliyor:

MS SQL

Kırmızı çerçeveler bahsettiğim tıklamalar. Mavi ile çerçevelediğim SQL kodunu yazdım. Ve MS SQL bana yeşil ile çerçevelediğim sonuçları getirdi.

Yazdığım kodu açıklamak gerekirse; Select deyimiyle veritabanından kayıt listelemek istediğimi, * deyimiyle bütün sütunları istediğimi, from Ogrenciler deyimiyle de nereden istediğimi belirtiyorum. Yani SQL’de select * from Ogrenciler ifadesi veritabanına Ogrenciler tablosundaki tüm kayıtları, tüm sütunlarıyla beraber listelemek istediğimi anlatıyor.

Gelin dilin ana kavramlarını başlıklar altında inceleyelim:

SELECT 

Yukarıda örnek verdiğimiz Select, database’den kayıt listelemek için kullanılır. Yani database’deki bütün sorgulamaları, raporlamaları vs select ile başlayan ifadelerle yaparız. Yukarıda Ogrenciler tablosundaki bütün datayı nasıl çekeceğimizi gördük. Şimdi numaralarla ve doğum tarihleriyle ilgilenmediğimizi sadece isimleri listelemek istediğimizi düşünelim. Bunun sql sorgusu aşağıdaki gibi olacaktır:

sql

Görüldüğü gibi select sonrasına bu kez * değil, OgrenciAdi yazdım. Yani listelenmesini istediğim sütunu belirttim. select OgrenciAdi, DogumTarihi from Ogrenciler yazarak hem OgrenciAdi, hem de DogumTarihi’ni listeleyebilirdim. select OgrenciNo, OgrenciAdi, DogumTarihi from Ogrenciler ifadesi ise zaten bütün sütunları içerdiği için  select * from Ogrenciler sorgusuyla aynı işi yapacaktır, pratikte.

 

WHERE

Yukarıda select’leri yazarken; sütunları istediğimiz gibi ekleyip çıkardık. Ama her seferinde tablodaki 10 kayıt için de listeleme yaptık. Peki sütunlarda değil de, satırlarda süzmeler yapmak istiyorsak? İşte burada WHERE ifadesi devreye giriyor. Where ifadesi, SQL’de tek başına bir anlam ifade etmez. Başka komut yapılarından (SELECT, UPDATE, INSERT) sonra kullanılır.

Örneğin öğrencilerimizden numarası 1 olan öğrencinin adını çekip yazdırmaya ihtiyacımız var. Hemen kodluyoruz:

Burada ana sorgumuzdan sonra gelen where ifadesi kayıtlar arasında koşullara göre süzme yapacağımız anlamına geliyor. Where OgrenciNo = 1 diyerek seçtiğimiz tabloda sadece OgrenciNo alanı 1’e eşit olan kayıtların listelenmesini istedik. = yerine > işareti koysaydık 1’den büyük olan kayıtlar listelenecekti:

Bu kez sadece 1’den büyük numaralı öğrenciler geldi (ilk baştaki satır numarası, öğrenci numarasıyla karıştırılmamalı). = veya > işaretleri yerine <, >=, <=, <> gibi ifadeleri kullanabilirsiniz.

LIKE: Where’in yanında yukarıdaki işaretlere ek olarak LIKE ifadesini de yazabiliyoruz. LIKE ifadesi; = işaretine benzer bir iş görür. Ancak tamamen eşit olması gerekmez. % v işaretinden de yardım alarak, belli bir kısmı eşit olan kayıtları listeleyebiliriz. Örneğin; adı H ile başlayan bütün öğrencilerin, bütün bilgilerini listeleyelim:

% işareti, “gerisi önemsiz” anlamına geliyor. ‘H%’ yazdığımız zaman H ile başlayan kayıtlar anlamına gelir. ‘%H’ yazsaydık H ile biten kayıtları istemiş olurduk.

Örnekte görüldüğü gibi H’nin iki tarafına % koyarak içinde H harfi geçen bütün kayıtları listeleyebiliriz. Like komutuyla alanlar içerisinde arama yapma yeteneği oldukça gelişmekte.

 

AGGREGATE FUNCTIONS

Her veritabanı yönetim sisteminde çok çeşitli fonksiyonlar bulunabilir. Ancak aggregate functions (kümeleme fonksiyonları) dediğimiz fonksiyonlar, genelde hep standarttır. Bunlar Min (en küçük bulma), Max (en büyük bulma), Sum (toplama), Avg (ortalama alma) ve Count (sayma) fonksiyonlarıdır.

Örneğin yukarıda Ogrenciler tablosundaki tüm kayıtların sayısını sorgulamışız.

Burada ise OgrenciAdi sütunundaki en küçük kaydı sorgulamışız. Sayısal olmayan alanlarda en küçük kaydı çekersen, alfabetik olarak ilk kaydı getirecektir.

Burada ise 1981 doğumlular içinde (where year(DogumTarihi) = 1981), doğum tarihi en büyük olan kaydı seçmişiz (Year fonksiyonu her VTYS yazılımında desteklenmeyebilir, örnek olarak kullanılmıştır).

 

INSERT

Bu kısma kadar kayıtlar içerisinde listelemeler yaptık. SQL sadece sorgulamaya değil, kayıtlar üzerinde değişiklik yapma işine de yarar. Örneğin derslerimizi kaydedeceğimiz Dersler tablomuza Matematik dersini ekleyelim.

insert into tabloya kayıt eklediğimizi simgeliyor. Dersler ise tablonun adını. Parantez içine alınmış DersNo ve DersAdi ise Dersler tablosundaki alanlarımızın adı. Values ifadesinden sonraki parantez içerisinde, aynı sırayla alanlara yazılacak değerleri veriyoruz. Sayısal tipteki alanlara yazacağımız sayıları direkt yazabiliriz. Sayısal olmayan alanlara ise değerlerimizi tek tırnak içinde yazarak gönderiyoruz.

Bu işlemimizden sonra Dersler tablosundaki tüm kayıtları listeleyelim:

Insert yazdıkça kayıtların arttığını görebilirsiniz:

 

UPDATE

Yeni kayıt eklemeyi öğrendik. Peki mevcut kayıtlar üzerinde nasıl değişiklik yapacağız? Mesela “Beden” diye bir ders yok. Bunu düzeltmek istiyoruz. Ne yapmamız gerekiyor. Tam olarak şunu yazmalıyız: update Dersler set DersAdi = ‘Beden Eğitimi’ where DersAdi = ‘Beden’

Burada update komutumuzu, hemen ardından gelen Dersler ise hangi tabloda güncelleme yaptığımızı belirtiyor. set DersAdi = ‘Beden Eğitimi’ hangi alana ne yazacağımızı anlatıyor. where DersAdi = ‘Beden’ kısmını ise yukarıda where bölümünde zaten anlatmıştık. Tüm kayıtlarda DersAdi’ni değiştirmeyeceğimizi sadece DersAdi = ‘Beden’ olan kayıtlarda değişiklik yapmak istediğimizi belirtiyor. Komutumuzun ardından Dersler tablosundaki kayıtları tekrar listeleyelim:

 

DELETE

Bir kaydı siler. Örneğin delete from Ogrenciler where OgrenciNo = 1 komutunu gönderirsek, öğrenci numarası 1 olan kaydı Ogrenciler tablosundan tamamen silecektir.

 

SQL öğrenmesi basit bir dildir ama bu kadar basit değil elbette. Burada en temel haliyle, SQL hakkında fikir versin diye, bunları anlattım. Mesela Select işlemi başlı başına bir kaç yazı gerektiren bir işlem. O yüzden onu ve ORDER, GROUP BY, HAVING, JOIN, UNION gibi komutları ayrı bir yazıda anlatacağım. Daha ileriki bir yazıda da SQL kullanarak tabloları ve başka nesneleri nasıl yaratacağımıza değinebiliriz. Ancak burada “SQL Nedir?” sorusunun cevabını verdiğimizi düşünüyorum.

One thought on “SQL Nedir?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir