Root > Documents > Programlama > Frequently Used Commands At SQL
Cyber-Warrior.Org \ Doküman \ Programlama > Frequently Used Commands At SQL
Madde
  Yazar : White_shadoW
  Date : 31.10.2005 21:03:00
 
# Frequently Used Commands At SQL
 

SQL (Structured Query Language) veri tabanlarindaki verileri islemek için kullanilan yapisal sorgulama dilidir.

Bu dil yardimiyla veritabanlarindaki tüm islemler yapilabilir. Backup almadan tutunda bir tabloya veri girmeye varincaya kadar hersey.

SQL’i su anda piyasada bulunan hemen hemen her veritabaninda kullanabilirsiniz. SQL’de her veritabaninda kullanilan ortak ifadeler olmasina karsin, veritabanlarinin kendine özgü ifadeleri de vardir. Mesela Oracle’da SQL ile yapabildiginiz bazi seyleri baska veritabanlarinda yapamayabilirsiniz.

SQL temel olarak su ifadelerle kullanilir. SELECT, FROM, WHERE, ORDER BY, GROUP BY, HAVING, UPDATE, DELETE, INSERT.

Burada kullandigimiz SQL cümleleri ISCI adli bir tablo üzerine yazilmistir. Alanlar ISCI_NO, ISCI_ADI, YAS, GIRIS_TARIHI, MAAS.

SELECT: Tablodan seçmek istedigimiz alanlari belirtmek için kullanilir. Eger tablodan tüm alanlari seçmek istiyorsak o zaman alan isimleri yerine * isareti konur.

FROM: Üzerinde islem yapilacak tablo/tablolari belirtmek için kullanilir.

WHERE: Tablodan eger tüm kayitlari degilde istedigimiz bazi kayitlari elde etmek istiyorsak, örnekte maasi 250 milyondan fazla olan isçilerin numarasi ve adi gibi, o zaman buraya istedigimiz kriteri yazariz.

SELECT ISCI_NO, ISCI_ADI
FROM ISCI
WHERE MAAS>250000000



DISTINCT: Birbirinin ayni olan satirlarin listelenmemesi için bu ifade kullanilir. Mesela ISCI tablosunda bulunan birbirinin ayni olmayan isimleri listelemek istersek

SELECT DISTINCT ISCI_ADI
FROM ISCI

seklinde bir SQL ifadesi yazariz.



IN: Kosul belirtirken kullaniriz. Mesela ismi AHMET, ALI veya MUSTAFA olan isçilerin bilgilerini listelemek için

SELECT *
FROM ISCI
WHERE ISCI_ADI=’AHMET’ OR ISCI_ADI=’ALI’ OR ISCI_ADI=’MUSTAFA’

seklinde bir ifade kullaniriz. Bunun yerine

SELECT *
FROM ISCI
WHERE ISCI_ADI IN (’AHMET’ ,’ALI’ ,’MUSTAFA’)

ifadesini de kullanabiliriz. Yani listenin içindeki herhangi bir degerin bulunmasi kayitin seçilmesi için yeterlidir.

LIKE: Eger aradigimiz kayitin bulunmasi için tam bir karsilastirma yapamiyorsak o zaman kullaniriz. Mesela isminin bas harfi A ile baslayan isimleri bulmak için

SELECT *
FROM ISCI
WHERE ISCI_ADI LIKE ‘A%’ ifadesi kullanilir.

% isareti uzunlugu önemsiz olmak üzere yazildigi yere her türlü ifade gelebilir anlamindadir.

? isareti ise bir karakter olmak üzere her türlü degeri alabilir anlamindadir. Mesela isminin sondan üçüncü harfi A, ve son harfi Z olan kayitlari listelemek istersek sondan ikinci harfin ne oldugu önemli degildir. O zaman o harf yerine asagida görüldügü üzere ? isaretini kullaniriz.

SELECT *
FROM ISCI
WHERE ISCI_ADI LIKE ‘%A?Z’ ifadesi kullanilir.



BETWEEN: Kosul belirtirken iki deger arasini belirtmek için kullanilir. Örnek: Yasi 30 ile 40 arasindaki isçilerin kayitlarini listelemek için

SELECT *
FROM ISCI
WHERE YAS BETWEEN 30 AND 40

ifadesi kullanilir. Bunu ayni zamanda asagidaki ifade ile de yapabilirsiniz. BETWEEN yazim kolayligi saglar.

SELECT *
FROM ISCI
WHERE YAS>=30 AND YAS<=40



SUM: Seçilen degerlerin toplamini bulur. Isçilerin aldigi toplam ücreti görmek için

SELECT SUM(UCRET)
FROM ISCI

ifadesi kullanilir.

MAX, MIN, AVG: Verilen degerin en büyügünü, en küçügünü ve ortalamasini bulur. 1999 yilinda giren isçilerin en yüksek ücretinin, en düsük ücretinin ve ortalamasinin ne kadar oldugunu ögrenmek istersek asagidaki ifadeyi kullaniriz.

SELECT MAX(UCRET), MIN(UCRET), AVG(UCRET)
FROM ISCI
WHERE GIRIS_TARIHI>’01.01.1999’

MAX en büyük degeri, MIN en küçük degeri, AVG ise seçilen degerlerin ortalmasini bulur.



ORDER BY: Tablodan seçtigimiz kayitlari siralamak için kullanilir. Yukardaki örnekte isimleri alfabetik sira ile görmek istersek

SELECT DISTINCT ISCI_ADI
FROM ISCI
ORDER BY ISCI_ADI

yazariz. Eger siralamayi tersine çevirmek istersek

SELECT DISTINCT ISCI_ADI
FROM ISCI
ORDER BY ISCI_ADI DESC

yazariz.

GROUP BY: Genelde istatistik amaçlar için kullanilir. Mesela hangi tarihte kaç isçinin ise alindigini bulmak için

SELECT GIRIS_TARIHI,COUNT(*)
FROM ISCI
GROUP BY GIRIS_TARIHI

yazmaniz yeterli olacaktir. Bu ifade size gün bazinda kaç isçinin ise alindigini gösterecektir. Eger belli bir tarihten önce ya da sonrasini isterseniz veya sadece sayinin 10’dan büyük oldugu günleri görmek isterseniz o zaman ifadeyi su sekilde yazmak gerekir

SELECT GIRIS_TARIHI,COUNT(*)
FROM ISCI
WHERE GIRIS_TARIHI>’01.01.1999’
GROUP BY GIRIS_TARIHI
HAVING COUNT(*)>10

HAVING, grup fonksiyonlarinin kriterleri için kullanilir. SUM, COUNT vb. gibi.



UPDATE: Tabloda bulunan bir istediginiz bir veya daha fazla alanin güncellenmesi amaciyla kullanilir. Mesela isçilerin maaslarina % 20 zam yapildigini düsünürsek asagidaki ifade ile bunu tabloda gerçeklestirebiliriz.

UPDATE ISCI
SET MAAS=MAAS*1.2

Eger maaslarla birlikte aldiklari primleri de %20 oraninda artirmak isterseniz

UPDATE ISCI
SET MAAS=MAAS*1.2 , PRIM=PRIM*1.2

seklinde bir ifade kullanilir. Ayni zamanda WHERE ifadesini kullanarak sadece belli kayitlar üzerinde güncelleme yapabilirsiniz.




DELETE: Tabloda bulunan kayitlari silmek için kullanilir. Eger

DELETE FROM ISCI

derseniz tüm kayitlari gönderirsiniz. DELETE ifadesini kullanirken dikkatli olun. Buradada yine WHERE ifadesini kullanarak sadece belli kritere uyan kayitlarin silinmesini saglayabilirsiniz. Kötü bir örnek ama olsun, patron 45 yasindan büyük isçileri isten atti (burasi Türkiye, olmaz demeyin) ve kayitlarinin silinmesi isteniyor. O zaman

DELETE FROM ISCI
WHERE YAS>45

ifadesi kullanilir.

INSERT: Tablolara veri girisi yapmak amaciyla kullanilir.

INSERT INTO ISCI (ISCI_NO,ADI,SOYADI) VALUES (1000,’AHMET’,’SAVAS’);

Eger giris yaparken tablonun bütün alanlari kullanilacaksa alan isimlerini vermeye gerek yoktur.

Not: UPDATE, DELETE ve INSERT ifadelerini kullanirken dikkatli olmalisiniz. Eger SQL tabanli bir veri tabani kullaniyorsaniz bu ifadeleri veritabanlarinin kendi tool’lari üzerinde kullanin. Çünkü Delphi ile gelen SQL Explorer’da transact.gif (959 bytes) isaretine basmayi unutursaniz yaptiginiz islemin geri dönüsü olmayabilir. Yani en son yaptiginiz islemi Rollback yapamazsiniz ve eger gerçek veritabani üzerinde yaptiysaniz islemi basiniz bayagi agriyabilir veya o is yerinde yazdiginiz son SQL ifadesi olabilir. :-))



IKI TABLODAN BIRDEN KAYIT SEÇMEK

Isçilerin kimlik bilgilerinin ISCI_KIMLIK tablosunda tutuldugunu kabul ederek bizden KDZ.EREGLI dogumlu olanlarin listesinin istendigini varsayalim. Tablolar birbirine ISCI_NO alani üzerinden iliskili olsun.

SELECT A.ISCI_NO, A.ISCI_ADI, B.DOGUM_YERI
FROM ISCI A, ISCI_KIMLIK B
WHERE B.DOGUM_YERI=’KDZ.EREGLI’
AND A.ISCI_NO=B.ISCI_NO

seklinde bir ifade yazarak listemizi elde edebiliriz. Burada WHERE kosuluna yazdiginiz siranin pek bir önemi yoktur. Her sartta ayni sonuçlari elde ederseniz. Fakat performans açisindan biraz farkeder. Yukardaki ifade

SELECT A.ISCI_NO, A.ISCI_ADI, B.DOGUM_YERI
FROM ISCI A, ISCI_KIMLIK B
WHERE A.ISCI_NO=B.ISCI_NO
B.DOGUM_YERI=’KDZ.EREGLI’

ifadesinden daha hizli çalisir. Çünkü ilk ifadede önce dogum yeri KDZ.EREGLI olan kayitlar seçilir daha bu kayitlara isçi tablosu birlestirilir. Sonraki ifadede ise önce tüm kayitlar birlestirilir, bunlarin arasindan dogum yeri KDZ.EREGLI olanlar seçilir.

SQL i kisaca (!) anlatmaya çalistim... Örnek olarak bir sirket werdim ama yeterince aydinlattigimi saniyorum...

DipNOT:1 ay öncesine kadar bende SQL dökümani ariyordum ve MMx abinin yazdigindan baya faydalandim benim aradigim döküman ise böyle bir seydi ve bulamadim bende benim aradigim tipde bir döküman yazdim..

Döküman Alinti Degildir..Tarafimca CW userlarina Yazilmistir.

Cyber-Warrior TiM
White_shadoW


   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©