SQLde cokca Kullanilan Komutlar

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
velociraptor
Yottabyte4
Yottabyte4
Mesajlar: 46629
Kayıt: 14 Mar 2006, 02:33
cinsiyet: Erkek
Teşekkür etti: 4801 kez
Teşekkür edildi: 4055 kez

SQLde cokca Kullanilan Komutlar

Mesaj gönderen velociraptor »

SQL (Structured Query Language) veri tabanlarindaki verileri islemek icin kullanilan yapisal sorgulama dilidir. Bu dil yardimiyla veritabanlarindaki tüm islemler yapilabilir. Backup almadan tutunda bir tabloya veri girmeye varincaya kadar hersey. SQLi su anda piyasada bulunan hemen hemen her veritabaninda kullanabilirsiniz. SQLde her veritabaninda kullanilan ortak ifadeler olmasina karsin, veritabanlarinin kendine özgü ifadeleri de vardir. Mesela Oracleda 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 secmek istedigimiz alanlari belirtmek icin kullanilir. Eger tablodan tüm alanlari secmek istiyorsak o zaman alan isimleri yerine * isareti konur.

FROM: üzerinde islem yapilacak tablo/tablolari belirtmek icin kullanilir.

WHERE: Tablodan eger tüm kayitlari degilde istedigimiz bazi kayitlari elde etmek istiyorsak, örnekte maasi 250 milyondan fazla olan iscilerin 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 icin 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 iscilerin bilgilerini listelemek icin 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 icindeki herhangi bir degerin bulunmasi kayitin secilmesi icin yeterlidir.

LIKE: Eger aradigimiz kayitin bulunmasi icin tam bir karsilastirma yapamiyorsak o zaman kullaniriz. Mesela isminin bas harfi A ile baslayan isimleri bulmak icin 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 ücü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 icin kullanilir. örnek: Yasi 30 ile 40 arasindaki iscilerin kayitlarini listelemek icin 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: Secilen degerlerin toplamini bulur. iscilerin aldigi toplam ücreti görmek icin SELECT SUM(UCRET) FROM ISCI ifadesi kullanilir.

MAX, MIN, AVG: Verilen degerin en büyügünü, en kücügünü ve ortalamasini bulur. 1999 yilinda giren iscilerin 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ücük degeri, AVG ise secilen degerlerin ortalmasini bulur.

ORDER BY: Tablodan sectigimiz kayitlari siralamak icin kullanilir. Yukardaki örnekte isimleri alfabetik sira ile görmek istersek SELECT DISTINCT ISCI_ADI FROM ISCI ORDER BY ISCI_ADI yazariz. Eger siralamayi tersine cevirmek istersek SELECT DISTINCT ISCI_ADI FROM ISCI ORDER BY ISCI_ADI DESC yazariz.

GROUP BY: Genelde istatistik amaclar icin kullanilir. Mesela hangi tarihte kac iscinin ise alindigini bulmak icin SELECT GIRIS_TARIHI,COUNT(*) FROM ISCI GROUP BY GIRIS_TARIHI yazmaniz yeterli olacaktir. Bu ifade size gün bazinda kac iscinin ise alindigini gösterecektir. Eger belli bir tarihten önce ya da sonrasini isterseniz veya sadece sayinin 10dan 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 icin kullanilir. SUM, COUNT vb. gibi.

UPDATE: Tabloda bulunan bir istediginiz bir veya daha fazla alanin güncellenmesi amaciyla kullanilir. Mesela iscilerin maaslarina % 20 zam yapildigini düsünürsek asagidaki ifade ile bunu tabloda gerceklestirebiliriz. 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 icin 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 iscileri 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 toollari üzerinde kullanin. cünkü Delphi ile gelen SQL Explorerda transact.gif (959 bytes) isaretine basmayi unutursaniz yaptiginiz islemin geri dönüsü olmayabilir. Yani en son yaptiginiz islemi Rollback yapamazsiniz ve eger gercek veritabani üzerinde yaptiysaniz islemi basiniz bayagi agriyabilir veya o is yerinde yazdiginiz son SQL ifadesi olabilir. :-)) iKi TABLODAN BiRDEN KAYIT SEcMEK iscilerin 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 sonuclari elde ederseniz. Fakat performans acisindan 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 calisir. cünkü ilk ifadede önce dogum yeri KDZ.EREGLI olan kayitlar secilir daha bu kayitlara isci tablosu birlestirilir. Sonraki ifadede ise önce tüm kayitlar birlestirilir, bunlarin arasindan dogum yeri KDZ.EREGLI olanlar secilir.
ALINTIDIR
Cevapla