Sql Notlarım

**Ankesenamon**

Kıdemli Üye
8 Eki 2007
2,220
21
34
SQL Hakkında Ders Bilgileri (Oldukça geniş kapsamlı ve örnekler ile açıklanmış.
SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. (sub language) SQL ile yalnızca veri tabanı üzerinde işlem yapabiliriz. SQL cümlecikleri kullanarak veri tabanına kayıt ekleyebilir, olan kayıtları değiştirebilir, silebilir ve bu kayıtlardan listeler oluşturabiliriz. SQL cümlecikleri genellikle aynı olmakla birlikte farklı veri tabanı ortamlarında değişebilmektedir. Ayrıca veri tabanlarının kendilerine özgü sql komutlarıda vardır. Biz burada her ortamda geçerli olan temel sql komutları işleyeceğiz.Şimdi örnekler kullanacağımız bir database tanımlayalım.
Tablo adı : personel
Kolon : sicil_no:text (8)
Kolon : ad:text (8)
Kolon : soyad:text (8)
Kolon : dogum_tarihi:date
Kolon : dogum_yeri:text (8)
Kolon : cinsiyeti:text(1)
Kolon : medeni_hali:binary
Kolon : meslek_id:smallint
Kolon : egitim_durumu:binary
Kolon : adres:text (50)
Tablo adı : ucretler
Kolon : per_sicil_no:text (8)
Kolon : baslama_tarihi:date
Kolon : aylık_ucret:numeric
Kolon : aile_yardimi:numeric
Kolon : egitim_yardimi:numeric
Kolon : kesinti:numeric:
Tablo adı : meslekler
Kolon : meslek_id:smallint
Kolon : aciklama:text (23)
Kolon : taban_ücret:numeric

FROM
İlk önce bu komut ile başlayalım. Bu komut bütün SQL cümleciklerinde bulunması gerekli bir komuttur.Bu komut ile hangi tablolar üzerinde çalışacağımızı veri tabanına söylüyoruz. Eğer aynı sql cümleciği ile bir kaç tablo üzerinde işlem yapmak istersek tablo isimleri arasına virgül koymalıyız. Aşağıdaki örnekleri SELECT komutundan sonra açıklayacağız.

Örnek 1 :
SELECT * FROM personel;

Örnek 2 :
SELECT * FROM personel,ucretler;

SELECT
Bu komut ile database üzerindeki tablonun hangi kolonları alacağımız veritabanına söyleriz.Tablonun bütün kolonlarını görmek istiyorsak '*' karekterini kullanırız. Sadece belli kolonları görmek istiyorsak kolon isimlerini aralarına virgül koyarak yanyana yazmalıyız.Yukarıdaki örnekleri açıklayacak olursak birinci örnek personel tablosundaki bütün kayıtları getirecektir. İkinci örnekte ise personel ve ücretler tablosundaki bütün kayıtlar çekilecektir.

Örnek 3 :
SELECT * FROM meslekler ;

Bütün meslek bilgilerini almak istersek yukarıdaki gibi bir query yazmalıyız.

Örnek 4 :
SELECT ad,soyad FROM personel;

Bu query ise bize firmamızda çalışan bütün personeli listeler.

ORDER BY ... ASC/DESC
Bu komut ile belirtilen kolona göre artan veya azalan bir sıralama ile sorgulama yapabiliriz.

ASC : kullanarak küçükten büyüğe doğru artan sıralama yapabiliriz.
DESC : kullanarak büyükten küçüğe doğru azalan sıralama yapabiliriz.

Ancak ASC kullanmak zorunlu değildir. Çünkü default sıralama tipi ASC'dir. Aynı anda birkaç kolon üzerinden de sıralama yapabiliriz.
Örnek 1 :
SELECT * FROM personel ORDER BY ad ASC;

Bu query ile personel tablosundaki bütün kayıtları ad'a göre küçükten büyüğe dogru sıralarız.

Örnek 2 :
SELECT * FROM personel ORDER BY soyad DESC;

Bu query da yukarıdakinin tersine kayıtları büyükten küçüğe dogru sıralar.

Örnek 3 :
SELECT * FROM personel ORDER BY ad,soyad;

Bu query kayıları ad göre artan bir sıralama yapar. Ancak aynı ad ile yaratılmış birden fazla kayıt varsa ise bunlarıda soyad sırasına göre artan bir şekilde sıralar. Eğer her iki kolnda aynı ise o zaman okuduğu sırada sıralar.

Örnek 4 :
SELECT * FROM personel ORDER BY dogum_tarihi DESC,ad,soyad ;

Bu query'de ise pernel kayıtları büyükten küçüğe doğru sıralanıyor. Yani en genç eleman'dan başlanarak en yaşlı elemana doğru bir liste yapılıyor. Doğum tarihleri aynı olanlarda ise ad ve soyad'a göre bir sıralama yapılmaktadır.

WHERE
Yukarıda yaptığımız sorgulamaların hepsinde hiç bir koşul belirtmedik.Yani bütün kayıtları tablolardan çektik. Ancak gerçek hayat'ta bu kayıtların sadece bir kısmına ihtiyaç duyarız.Bize gerekli olan dataları diğerlerinden ayıran bazı özellikleri vardır. İşte bu özellikleri bu komut yardımı ile kullanarak gerekli datalara ulaşabiliriz.

Örnek 5 : Adı ahmet olan personeli listelemek istersek ne yapacağız.Aşagıdaki gibi bir sorgulama yapacağız.

SELECT * FROM personel WHERE ad='ahmet';

Örnek 6 : Yaşı 40'dan büyük personeli listeleme istersek;
SELECT * FROM personel WHERE dogum_tarihi < '01.01.1959'

sorgulamasını kullanmalıyız.Elemanın 40 yaşında büyük olması için 1959 yılından önce doğmuş olması gerekmektedir. O halde dogum_tarihi 1959 yılından küçük olmalıdır.

Örnek 7 : Adana'da doğmuş personeli listelemek istersek
SELECT * FROM personel WHERE dogum_yeri = 'Adana'

Örnek 8 : 300 milyondan fazla maaş alan kişileri işe maaşa göre sıralamak istersek;

SELECT * FROM ucretler WHERE aylik_ucret >= 300000000 ORDER BY aylik_ucret;

SQL OPERATORLER VE TABLOLAR ÜZERİNDE İŞLEMLER
Her programlama dilinde olduğu gibi SQL'de de operatörler bulunur. Üç çeşit operatör mevcuttur. Karşılaştırma oparatörleri , mantıksal operatörler ve kümeleme operatörleri.Bu karşılaştırma operatörleri aşağıdaki gibidir ;
operatör anlamı
a>X ... X... a'dan küçük
a<X ... X... a'dan büyük
a=X ... X... a'ya eşit
a=>X ... X... a'dan küçük eşit
a<=X ... X... a'dan büyük eşit
a<>X ... X... a'ya eşit değil
Mantıksal operatörler ise AND,OR,NOT olarak verilebilir. Bu operatörler burada anlatmayacağız. Bunlar standart bütün dillerde aynı olan operatörlerdir.Kümeleme operatörleri ise datalar üzerinde gruplama yapmamızı sağlayan operatörlerdir.Bu operatörler Between , In , Like operatörleridir. Bu operatörlerin hepsini where ile birlikte kullanmalıyız.

BETWEEN
Aralıklı sorgulama yapmak istersek kullanabilecegimiz bir operatördür.

Örnek 1 :
SELECT * FROM ucretler WHERE aylik_ucret BETWEEN 200000000 AND 300000000

Bu cümlecik ile 200 ile 300 milyon arasında maaş alanlar listelenecektir.

Örnek 2 :
SELECT *
FROM fat_bsl
WHERE ft_tar BETWEEN '01.01.1998' AND '04.06.1999'

Bu sorgulamada ise fatura tarihi 01.01.1998 ve 04.06.1999 tarihleri arasındaki faturalar listelenmiştir.Verilen tarih formatının sistemde kullanılan tarih formatı ile aynı olmasına dikkat edilmelidir. Yoksa sizin verdiğiniz tarih doğru olsa bile format farklı ise sorgulamanız geriye data döndürmez.

IN
Bu komut ile belli bir kolonun kümesini vererek işlemimizi daha kolay bir şekilde yapabiliriz.

Örnek 3 :
SELECT * FROM personel WHERE meslek_id IN (1,2,3)

Buradaki örnek 'te 1,2 veya 3 meslek grubundan herhangi birine dahil olan personel listelenemektedir.Bu örnek aşagıdaki şekildeki gibide yapabiliriz;

SELECT * FROM personel
WHERE meslek_id=1 OR meslek_id=2 OR meslek_id=3

devam edecekk
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.