TEMEL SQL Bu doküman Yazılım Geliştirme ekibi tarafından Eğitim Destek ekibi için hazırlanmıştır. SQL : Yapısal Sorgulama Dili olarak açıklanabilecek olan SQL dili Temel olarak veritabanı üzerinde nesneler oluşturma, nesne silme, veri seçme, veri silme, veri değiştirme gibi işlemlerin yapılmasında kullanılır. SQL dili ilk bakışta karmaşık görünmesine karşın konuşma diline yakın olduğu için anlaşılması kolay bir dildir. SQL dili özet olarak veri yönetim komutları , veri tanımlama komutları komutlarından oluşmaktadır. Bu komutlar ileride örneklerle birlikte açıklanacaktır. Vega Yazılım veritabanları üzerinde SQL komutlarının kullanımı için AddOns klasöründeki DBManager. exe programı kullanılır. Dikkat edilmesi gereken hususlar şunlardır. 1. SQL ifadeleri büyük harfle yazılmalıdır. 2. SQL ifadeleri bir yada daha fazla satırdan oluşabilmektedir. 3. Okunaklı olması için ifadeler ayrı ayrı satırlara yazılmalıdırlar. 4. Anahtar kelimeler kısaltılamaz yada satırlara bölünemez. 5. Firma bazlı tabloların başına ! F eklenir. 6. Dönem bazlı tabloların başına başına ! F! D eklenir. 7. Yazılan SQL cümlesini çalıştırma için F5 tuşuna basılır. Not: Bu dökümandaki örneklerde yazılan SQL komutları DbManager de SQL penceresine yazılarak F5 tuşuna basarak çalıştırılabilmektedirler. BİR TABLODAN VERİ SEÇME İŞLEMİ SQL Dilinde bir tablodan veri seçme işlemi SELECT komutu ile yapılır. # SELECT İfadesinin Kullanımı : SELECT FROM Tablo_adi Yukarıdaki yapıda geçen ifadelerin anlamları : ? SELECT : Tablodan veri seçileceğini gösterir. ? DISTINCT : Tekrarı olan kayıtları bir defa gösterir. ? : Tüm kolonları ifade eder yani bütün alanları seçer. ? Column : Yalnızca belirtilen kolonların seçilmesini sağlar? FROM : Belirtilen kolonların seçileceğini belirler. ? Tablo_adi : Seçme işleminin hangi tablodan yapılacağını gösterir Yukarıda da görüldüğü veri seçme işlemi için SELECT komutu ardında neler seçileceği, ardından FROM ifadesi ve verinin hangi tablo dan seçileceği belirtilmektedir. # SELECT İfadesi ile Tek Bir Tablodan Veri Seçme : Örnek 1: Carilerin bütün bilgilerinin seçilmesi : SELECT FROM ! FTBLCARI Örnek 2: Stokların stok kodu, malın cinsi ve kalan bilgilerini seçmek : SELECT STOKKODU, MALINCINSI, KALAN FROM ! FTBLSTOKLAR? Örneklerde de dikkat edileceği üzere ; Görüntüleme sırası SELECT ten sonraki yazım sırasıyla aynıdır. Karakter tipli veriler Sola dayalı, Nümerik veriler Sağa dayalı gösterilmektedir. # Kolonlara Alias Tanımlamak : Kolonlara alias tanımlayarak? Gösterimdeki kolon başlığı değiştirilebilir. ? Hesaplamalarda kolaylık ve anlaşılırlık sağlanır. ? Kullanımı : Kolon isminden hemen AS ' BAŞLIK METNİ ' şeklinde yazılır. Örnek 3: Alış faturalarından alış fiyatını alias kullanarak seçmek : SELECT AFIYATI AS 'FATURADAKI ALIS FIYAT' FROM ! F! DTBLALFATHAREKET? Örnekte de dikkat edileceği üzere ; Görüntülemede AFIYATI alanının başlığında FATURADAKI ALIS FIYATI yazmaktadır. # SELECT ile Koşula Göre Veri Seçmek : Sorgulama sonucunda seçilen kayıtları sınırlandırmak için WHERE ifadesi kullanılır. ? Kullanımı : SELECT FROM Tablo_adi WHERE Koşul Koşul Koşul Yukarıdaki yapıda geçen ifadelerin anlamları : ? WHERE : Belirtilen koşullara göre seçme yapılacağını bildirir. ? Koşullar : Karşılaştırma operatörü, ifade, sabit, kolon ismi olabilir ? AND : Ve anlamındadır. Kaydın seçilebilmesi için AND ifadesinin sağındaki ve solundaki iki koşulun da mutlaka sağlaması gerekir? OR : Veya anlamındadır. Kaydın seçilebilmesi için OR ifadesinin sağındaki ve solundaki iki koşuldan en az birini sağlaması gerekli ve yeterlidir. Örnek 4: Bakiyesi negatif olan carilerin FirmaAdı, Firma Kodunu seçmek : SELECT FIRMAKODU, FIRMAADI, FROM ! FTBLCARI WHERE BAKIYE<0 Örnek 5: 1. Özel Kodu Kırtasiye olan VE Alış Fiyatı 500000 den büyük olan Stok kayıtlarının bütün bilgilerini seçmek : SELECT FROM ! FTBLSTOKLAR WHERE KOD1='Kırtasiye' AND ALISFIYATI>500000 Örnek 6: Firma Kodu Gıda olan VEYA 2. Özel Kodu Yemek olan Cari kayıtlarının Firma Kodu, Firma Adı, Yetkili Adı ve Telefon bilgilerini seçmek : SELECT FIRMAKODU, FIRMAADI, YETKILI, TELEFON1 FROM ! FTBLCARI WHERE FIRMAKODU='Gıda' OR KOD2='Yemek' # Aritmetik İşlem Operatörlerini Kullanmak : Sorgulama sonucunda seçilen kayıtlar üzerinde aritmetik işlem operatörleri olan kullanılabilir. Örnekler üzerinde bu konuyu açıklayabiliriz. Örnek 7: Stoklar tablosundan AlışFiyatı ile Maliyetini toplayıp TOPLAM başlığı altında göstermek. SELECT STOKKODU, MALINCINSI, ALISFIYATI+MALIYET AS TOPLAM FROM ! FTBLSTOKLAR Not: Alış Fiyatı ile Maliyet arasında operatörünün kullanıldığına dikkat ediniz. Aynı şekilde operatörleride kullanılabilir. # Karşılaştırma Operatörlerini Kullanmak : SQL cümlenizde kullanabileceğiniz karşılaştırma operatörleri aşağıdadır. = ? Eşittir Operatörü <> ? Eşit Değil Operatörü > ? Büyüktür Operatörü < ? Küçüktür Operatörü >= ? Büyük Eşittir Operatörü <= ? Küçük Eşittir Operatörü Örnek 8: Stoklar tablosundan Alış Fiyatı 5,000,000 dan küçük olan stok bilgilerini seçmek. SELECT FROM ! FTBLSTOKLAR WHERE ALISFIYATI<5000000 Örnek 8: Bakiyesi olan carilerin FirmaKodu ve Telefon bilgisini seçmek. SELECT FIRMAKODU, TELEFON1 FROM ! FTBLCARI WHERE BAKIYE>0 OR BAKIYE<0? Diğer Karşılaştırma Operatörleri Aşağıdadır : IN ? Verinin Liste içinde olup olmadığını kontrol eder. LIKE? Belirli bir formattaki karakterleri ifade eder. BETWEEN? İki değer arasını ifade eder. IS NULL? Verinin NULL olup olmadığını kontrol eder Bu operatörleri örneklerle inceleyelim. Örnek 9: Vergi Dairesi bilgisi boş olan carileri seçmek : SELECT FROM ! FTBLCARI WHERE VERGIDAIRESI IS NULL Örnek 10: Firma Kodu alanı Gıda, Giyim, İthalat değerlerinden birine eşit olan carileri seçmek : SELECT FIRMAKODU, FIRMAADI, YETKILI FROM ! FTBLCARI WHERE FIRMAKODU IN Örnek 11: 15.08.2003 ile 20.08.2003 tarihleri arasında açılan stok kartlarının seçilmesi : SELECT STOKKODU, MALINCINSI FROM ! FTBLSTOKLAR WHERE KARTINACILMATARIHI BETWEEN '2003.08.15' AND '2003.08.20' Örnek 12: Malın Cinsi alanında BEDEN kelimesi geçen stokların seçilmesi : SELECT FROM ! FTBLSTOKLAR WHERE MALINCINSI LIKE '%BEDEN%' NOT: LIKE ifadesini DOS işletim sistemindeki DIR komutuna benzetebiliriz. Birden çok karakter yerine % işareti, tek karakter yerine _ karakteri kullanılır. Örneğin Firma Kodunun ilk harfi A, sondan bir önceki harfi K olan firmaları seçmek istersek, Yazmamız gereken SQL cümlesi aşağıdaki gibi olacaktır : SELECT FROM ! FTBLCARI WHERE FIRMAKODU LIKE 'A%K_' # Seçilen Veriyi Sıralı Göstermek : SQL dilinde SELECT ile seçilen kayıtları istenilen alan göre sıralı halde göstermek için ORDER BY Sütun veya Sütunlar ifadesi kullanılır. Örneklerle inceleyelim : Örnek 13: Cari kayıtlarını Firma Koduna göre alfabetik olarak sıralı seçmek : SELECT FROM ! FTBLCARI ORDER BY FIRMAKODU

Devam!! Örnek 14: Alış Fiyatı 10,000,000 dan yüksek ve 1. Özel Kodu = TÜKETİM olan stok kartlarını Stok Kodu ve Malın Cinsi alanlarına göre alfabetik sıralı olarak seçmek : SELECT FROM ! FTBLSTOKLAR WHERE (ALISFIYATI>10000000) AND (KOD1='TÜKETİM') ORDER BY STOKKODU, MALINCINSI BİR TABLODAKİ VERİYİ GÜNCELLEME İŞLEMİ SQL Dilinde bir tablodaki veriyi güncelleme işlemi UPDATE komutu ile yapılır. # UPDATE İfadesinin Kullanımı : UPDATE tablo_adı SET sutun-1='Yeni Değer1', sutun-2='Değer2' WHERE Güncellenecek_Kayıtlar_Koşulu Yukarıda da görüldüğü veri güncelleme işlemi için UPDATE komutu ardından hangi tablonun güncelleneceği ardından hangi sütunların güncelleneceği ve yeni değerleri son olarak varsa güncellenecek kayıtları gösteren WHERE koşullu ifadesi. !!! DİKKAT: Update komutunda dikkat edilmesi gereken nokta WHERE ifadesi kullanılmaz ise tablodaki bütün kayıtların güncelleneceğidir. Örnek 15: Cari tablosunu, Firma Kodu İTHALAT olan carilerin 1. Özel Kodunu Ticari ve 2. Özel Kodunu Yabancı olarak güncellemek istersek yazacağımız SQL cümlesi : UPDATE ! FTBLCARI SET KOD1='Ticari', KOD2='Yabancı' WHERE FIRMAKODU='İTHALAT' Örnek 16: Stoklar tablosundaki bütün stokların Alış Fiyatlarına 1,000,000 eklemek için yazacağımız SQL cümlesi aşağıdaki gibi olacaktır : UPDATE ! FTBLSTOKLAR SET ALISFIYATI=ALISFIYATI+1000000 BİR TABLODAN VERİ SİLME İŞLEMİ SQL Dilinde bir tablodaki veriyi silme işlemi DELETE komutu ile yapılır. # DELETE İfadesinin Kullanımı : DELETE FROM <tablo_adı> WHERE <Silinecek_Kayıtlar_İçin_Koşul_veya_Koşullar> Yukarıda da görüldüğü veri silme işlemi için DELETE komutu ardından verinin silineceği tablo adı, ardından da hangi verilerin silineceğini gösteren WHERE koşullu ifadesi kullanılır. !!! DİKKAT: Delete komutunda dikkat edilmesi gereken nokta WHERE ifadesi kullanılmaz ise tablodaki bütün kayıtların silineceğidir. Örneklerle UPDATE ifadesini görelim. Örnek 17: Stoklar tablosundaki Alış Fiyatı boş olan kayıtları silmek istersek : DELETE FROM ! FTBLSTOKLAR WHERE ALISFIYATI IS NULL Örnek 18: Satış Faturalarının hareket satırlarının bulunduğu TBLSATFATHAREKET tablosundan IND si 105 olan stoka ait bütün hareketleri silmek istersek : DELETE FROM ! F! DTBLSATFATHAREKET WHERE STOKNO=105 Örnek 19: Alış Faturalarının hareket satırlarının bulunduğu TBLALFATHAREKET tablosundan EVRAKNO alanı boş olan hareketleri silmek istersek : SELECT FROM ! F! DTBLALFATHAREKET WHERE EVRAKNO IS NULL Örnek 20: Stok Özel Kodlarının bulunduğu TBLSTOKKODTAN tablosundaki bütün özel kodları silmek istersek SELECT FROM ! FTBLSTOKKODTAN BİRDEN ÇOK TABLODAN VERİ SEÇME Birden çok tablodan sütün seçilmesinin gerektiği durumlarda tablo birleştirme ile yapılır. Tablo birleştirmenin temel yapısı aşağıdaki gibidir : FROM < Sol_Tablo > < Birleştirme Şekli > < Sağ_Tablo > ON < Birleştirme_Koşulu > Bu şekilde birden çok tablo birleştirilebilmektedir. Tablo birleştirme işlemi İç Birleştirme ve Dış Birleştirme olarak iki şekilde yapılmaktadır. # İÇ BİRLEŞTİRME : Birleştirmenin yapıldığı her iki tablodan sadece birleştirme koşuluna uyan kayıtları veren birleştirme yöntemidir. # DIŞ BİRLEŞTİRME : Tablolardan biri veya her ikisindeki bütün kayıtları veren birleştirme yöntemidir. Sol , Sağ , Tam olarak üç şekilde yapılabilir. ? LEFT JOIN : Sol_Tablo dan bütün kayıtları, Sağ_Tablo dan ise sadece birleştirme koşuluna uyan kayıtları verir. En sık kullanılan birleştirme yöntemidir. ? RIGHT JOIN : Sağ_Tablo dan bütün kayıtları, Sol_Tablo dan ise sadece birleştirme koşuluna uyan kayıtları verir. Nadiren kullanılan bir birleştirme yöntemidir. ? FULL OUTER JOIN : Sol_Tablo ve Sağ_Tablo dan bütün kayıtları verir. Nadiren kullanılan bir birleştirme yöntemidir. # Aşağıdaki kümeleri birer tablo olarak düşünürsek : LEFT JOIN yapılırsa sonuç X ve Y bölgesindeki kayıtlar RIGHT JOIN yapılırsa sonuç Z ve Y bölgesindeki kayıtlar FULL OUTER JOIN yapılırsa sonuç X, Y ve Z bölgesindeki kayıtlar INNER JOIN yapılırsa sonuç Y bölgesindeki kayıtlar Örnek 21 : Satış faturalarının başlık bilgisi TBLSATFATBASLIK tablosunda tutulmaktadır. Fatura belgelerinde kullanılan özel kod listesindeki kodlar ise TBLBELGEKODTAN tablosunda tutulmaktadır. Bu durumda TBLBELGEKODTAN tablosunda tanımlı kodların kullanıldığı satış faturalarına ait başlık bilgilerine ulaşmak istediğimizde INNER JOIN birleştirme yöntemini kullanırız. SELECT BASLIK. TARIH, BASLIK. BELGENO, BASLIK. TUTAR, BELGEKOD. KOD, BELGEKOD. CATEGORY AS KACINCIKOD FROM ! F! DTBLSATFATBASLIK AS BASLIK INNER JOIN ! FTBLBELGEKODTAN AS BELGEKOD ON BELGEKOD. KOD=BASLIK. OZELKOD1 OR BELGEKOD. KOD=BASLIK. OZELKOD2 Örnekte görüldüğü gibi birleştirme koşulumuz Fatura başlığındaki Özelkod1 veya Özelkod2 bilgisinin, TBLBELGEKODTAN tablosunda kayıtlı olması durumudur. Örnek 22 : Cari Giriş Bordrolarının başlık bilgisinin tutulduğu TBLCARGIRBASLIK tablosunda bordronun işlendiği cariye ait olarak sadece FIRMANO alanı bulunmaktadır. TBLCARGIRBASLIK tablosundaki bütün bordro başlıklarını ve bu bordronun ait olduğu carilerin Firma kodu, Yetkili vb.. bilgilerini Sol birleştirme yani LEFT JOIN yaparak görebiliriz. Bu durumda sol tablomuz TBLCARGIRBASLIK, sağ tablomuz ise TBLCARI olur. SELECT BASLIK. TARIH, BASLIK. TUTAR, CARI. FIRMAKODU, CARI. YETKILI FROM ! F! DTBLCARGIRBASLIK AS BASLIK LEFT JOIN ! FTBLCARI AS CARI ON CARI. IND=BASLIK. FIRMANO Örnekte görüldüğü gibi birleştirme koşulumuz başlıktaki Firmano bilgisinin Cari tablosundaki IND alanına eşit olmasıdır. Örnek 23 : Stok hareketlerinin tutulduğu TBLSTOKHAREKETLERI tablosunda hareketi gören stoğa ait sadece STOKNO alanı bulunmaktadır. Stoklar tablosundan sadece hareket gören stoklara ait Ind ve Stokkodu ile harekete ait Evrakno, Tutar, Parabirimi vb.. bilgileri Sağ birleştirme yani RIGHT JOIN yaparak görelim. Sol tablomuz TBLSTOKLAR, sağ tablomuz ise TBLSTOKHAREKETLERI olmaktadır. SELECT STOKLAR. IND, STOKLAR. STOKKODU, STOKHAREKET. EVRAKNO, STOKHAREKET. TUTAR, STOKHAREKET. PARABIRIMI FROM ! FTBLSTOKLAR AS STOKLAR RIGHT JOIN ! F! DTBLSTOKHAREKETLERI AS STOKHAREKET ON STOKHAREKET. STOKNO=STOKLAR. IND Örnekte görüldüğü gibi birleştirme koşulumuz Stok Hareketlerindeki Stokno bilgisinin Stoklar tablosundaki IND alanına eşit olmasıdır. NOT: Yukarıda anlatılan SQL komutları ile ilgili daha ayrıntılı örnekler için Vegawin Raporlar modülündeki raporların SQL cümlelerini inceleyebilirsiniz.

Teşekkür ederim. Güzel paylaşım..