veritabanından istenen koşullara uygun verileri,bilgileri getirmek için kullanılır. Sade kullanımını şu şekildedir. [code language=”sql”] SELECT result_clause FROM source_clause WHERE where_clause. [/code] result_clause : SQL’den gelmesi istenen kolonların seçildiği alandır. Alabileceği değerler “*” veya “alan1, alan2, alan3, …” a. * : Tüm alanları getirmek için kullanılır. [code language=”sql”] SELECT * FROM personel [/code] Komutu personel tablosundaki tüm kayıtların okuması için kullanılır. b. alan1, alan2 … : Sadece istenen kolonların gelmesi için kullanılır. [code language=”sql”] SELECT calismadonemi, personid, calismagunu FROM calisma [/code] komutu ise çalışma tablosundan sadece calisma donemi, personel id ve calisma gunu bilgilerini getirmek için kullanılır. from_clause : SQL de okunacak verilerin hangi tablolardan okunacağı ve tablolar arası ilişkilerin nasıl olması gerektiğini gösterir. Basit SQL cümleciklerinde from_clause da tek tablo adı varken, bazı SQL cümlecikleri onlarca tablo adından oluşabilir. [code language=”sql”] SELECT * FROM personel : [/code] Basit bir SQL cümleciğidir. PERSONEL tablosundaki tüm verileri koşulsuz olarak okur ve getirir. [code language=”sql”] SELECT * FROM personel INNER JOIN calisma ON calisma.personid = personel.personid [/code] Biraz daha karmaşık bir SQL cumleceğidir. Personel tablosundaki tüm verilerden çalışma tablosunda da var olanları getirir. Burada WHERE olmadığı için koşulsuz bir IF(eğer) oldugu düşünülebilir, ancak INNER JOIN de araya gizli bir koşul ilave edilmiştir. Sadece çalışma tablosunda hareketi olan kayıtlar karsımıza gelir. Birden fazla tablodan veri okuyan SQL cümleciklerinde karşılaştırılacak/gösterilecek kolonların hangi tabloya ait olduğu “.”(nokta) işareti ile belirtilir. Bu veritabanından veritabanı değişebilir. Örneğin bu SAP/ABAP dili için “~” dir. [code language=”sql”] SELECT personel.personid, personel.name, calisma.calismadonemi,calismagunu FROM personel INNER JOIN calisma ON calisma.personid = personel.personid. [/code] Cümleciğinde program PERSONEL tablosundan personid, name alanlarını, CALISMA tablosundan calisma donemi ve calisma gunu bilgisini getirmektedir. where_clause : SQL de okunacak verinin hangi özelliklere seçileceği/filtreleneceğini belirtir. [code language=”sql”] SELECT * FROM personel INNER JOIN calisma ON calisma.personid = personel.personid WHERE personel.name = ‘HALIL KINIK’. [/code] cümleciği bize sadece adı “HALIL KINIK” olan personelin bilgilerinin getirilmesini sağlar. Where_clause da kullanılabilecek komutlar; a.Standart matematik karşılaştırmaları aynen matematikte nasıl kullanılıyorlarsa SQL’de de aynı anlama gelirler. Bazı SQL’lerde sol taraftaki matematik ifade yerine sağ tarafta parantez içinde yazılan kısaltmalarda aynı analama gelecek şekilde kullanılabilir. = (eq) eşittir > (gt) büyüktür < (lt) küçüktür >=(ge) büyük veya eşittir <=(le) küçük veya eşittir <>(ne) eşit değildir b. Like : Benzer komutu. Bu okunan datalar içinden matematik ifadelerle seçemediğimiz komutalar için kullanılır. Girdiğimiz ifadeye göre benzer olan verilerin seçilmesi için kullanılır. Burada benzerlik girdiğimiz %(yüzde) işaretinin yerine göre oluşur. * Aşağıdaki komut bize istenen listeden adı “HALİL” ile başlayanları listeler. [code language=”sql”] SELECT * FROM personel INNER JOIN calisma ON calisma.personid = personel.personid WHERE personel.name like ‘HALİL%’. [/code] * Aşağıdaki komut bize istenen listeden adı “HALİL” ile bitenleri listeler. [code language=”sql”] SELECT * FROM personel INNER JOIN calisma ON calisma.personid = personel.personid WHERE personel.name like ‘%HALİL’. [/code] * Aşağıdaki komut bize istenen listeden adının herhangi bir yerinde ( başı,ortası,sonu ) “HALİL” olanları listeler. [code language=”sql”] SELECT * FROM personel INNER JOIN calisma ON calisma.personid = personel.personid WHERE personel.name like ‘%HALİL%’ [/code] Kullanılan SQL komutları aşağıdaki tablo yapısı baz alınarak yazılmıştır. Burada basit olarak; Personelin çalıştığı Departman bilgilerinin tutulduğu “Departman”, Personel özlük bilgilerinin tutulduğu “Personel” ve Personel aylık dönemlere göre çalısma bilgilerinin tutulacağı “calisma” tabloları oluşturulmuştur. [code language=”sql”] CREATE SCHEMA `yazilimcitynet` ; CREATE TABLE `yazilimcitynet`.`departman` ( `departmanid` INT NOT NULL , `departmanname` VARCHAR(45) NOT NULL , `adet` INT NOT NULL , PRIMARY KEY (`departmanid`) , UNIQUE INDEX `departmanid_UNIQUE` (`departmanid` ASC) , UNIQUE INDEX `departmanname_UNIQUE` (`departmanname` ASC) ); CREATE TABLE `yazilimcitynet`.`personel` ( `personid` INT NOT NULL , `name` VARCHAR(50) NOT NULL , `address` VARCHAR(255) NULL , `city` VARCHAR(50) NULL , `departmanid` INT , `age` INT NULL , PRIMARY KEY (`personid`) ); CREATE TABLE `yazilimcitynet`.`calisma` ( `calismadonemi` VARCHAR(6) NOT NULL , `personid` INT NOT NULL , `calismagunu` INT NULL , `ucretliizin` INT NULL , `ucretsizizin` INT NULL , PRIMARY KEY (`personid`) ); [/code] Yukarıdaki örnek bloğundan bağımsız bir başka SELECT yazım şekli ise aşağıdaki gibidir. [code lang=”sql”] SELECT P.PERSONEL_ID, P.ADI, P.SOYADI, G.GOREV FROM KT_PERSONEL P, KT_GOREVLER G WHERE (P.GOREV_ID = G.GOREV_ID) AND P.PERSONEL_ID IN (SELECT PERSONEL_ID FROM IC_GOREVYER WHERE SERVIS_ID = ‘FSUB’) and G.GOREV_ID <> ‘BIM’ and G.GOREV_ID<>’PS’ and P.PERSONEL_ID<>’BT’ ORDER BY PERSONEL_ID,SOYADI,GOREV select T.TEST_ID, t.test "ESKI", ut.adi"YENI AD", t.unitetest_id"ESKI UNITE KOD", ut.unite_test_id"YENI KOD" from kr_testler t, al_lis_unite_test ut where (t.test = ut.adi); select T.TEST_ID,T.TEST,T.KISA_ADI,T.REP_ORDER,S.TETKIK_ID from kr_testler t, SU_KR_ORDER_ESLES S where (T.TEST_ID=S.TEST_ID) AND T.test_id in (select test_id from kr_test_device where device_id=900) SELECT * FROM kt_VIZIT WHERE VIZIT_TAR BETWEEN ‘01.01.2009’ AND ‘31.10.2009’ AND R_U=’U’ AND VIZIT_ID LIKE ‘Y%’ select t.*, t.rowid from translates t where TIP=1 and azeri=’null’ order by turkce tercumesi olmayan kayıtlar getirildi select t.*, t.rowid from aa_azkamu_maaslar t WHERE (EMEK_TARIHI = ‘01.06.2009’ OR EMEK_TARIHI = ‘01.07.2009’) AND EMEK_NO = ‘DG13′ emek hakkı getirildi SELECT P.PERSONEL_ID,P.ADI,P.SOYADI,G.GOREV FROM KT_PERSONEL P,KT_GOREVLER G WHERE (P.GOREV_ID=G.GOREV_ID) kod ad unvan getirildi SELECT P.USERKOD,P.PROGKOD,K.ADI||’ ‘||K.SOYADI ,C.ADI FROM SU_HBYS_PROG P,KT_PERSONEL K,SU_HBYS_PROGLAR C WHERE (P.PROGKOD=C.PROGKOD ) AND (P.USERKOD=K.PERSONEL_ID) ORDER BY K.ADI||’ ‘||K.SOYADI [/code]]]>