You are on page 1of 11

VER TABANI YNETM SSTEMLER I

BLM 8

Alako BURMA

8. TEMEL SQL KOMUTLARI-II


8.1. SELECT (Se) Komutu Veri tabanndaki tablo veya tablolardan istenilen zellikteki verileri seip listeleme iin kullanlan komuttur. Genel kullanm aadaki gibidir. SELECT [ DISTINCT | ALL ] <stun(lar)> FROM <tablo ad (lar)> [ WHERE <art (lar)> ] [ GROUP BY <stunlar>] [ HAVING < grup kstlamas>] [ ORDER BY <stun(lar) [ ASC | DESC ]> ] Select komutundan sonra listelenmesi istenilen stunlarn isimleri aralarna virgl iareti konularak yan yana yazlr. Tablonun btn stunlarnn listelenmesinde * karakteri kullanlr. FROM dan sonra listeleme yaplacak tablo / tablolarn isimleri yazlr. Eer ayn sql cmlecii ile bir ka tablo zerinde ilem yaplmak istenirse tablo isimleri arasna virgl konulmaldr. Personel tablosundaki tm kaytlarn listelenmesi istenirse ;

ekil 8.1.1. Personel Tablosundaki Tm Kaytlarn Listelenmesi

62

VER TABANI YNETM SSTEMLER I

Alako BURMA

Tablo ierisinde istenilen bir arta uygun kaytlarn listelenmesi istenirse WHERE yardmc szc kullanlr ve szcn yanna gerekli art yazlr. Ayrca select szcnn yanna sadece listelenmesi istenilen alanlarn adlar yazlabilir. SQL dilinde where ifadesinden sonra yazlan artta karlatrlan alan bilgisi rakamsal ifade ise aynen yazlarak, karakter ise alan bilgisi tek trnak iareti arasna alnarak yazlmaldr.

ekil 8.1.2. Personel Tablosundan stenilen Kaytlarn Listelenmesi Yukardaki rnekte personel tablosundan sadece sicilno, ad, soyad ve adres alanlar listelenmitir.

63

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.3. Personel Bilgilerinin Seilerek Listelenmesi-1 Sicil numaras 960 olan personel ait tm bilgiler listelenmitir. 8.1.1. SQL Operatrleri Her programlama dilinde olduu gibi SQL'de de operatrler bulunur. eit operatr mevcuttur. Karlatrma operatrleri, mantksal operatrler ve kmeleme operatrleri. Karlatrma operatrleri aadaki gibidir; a>X ... X... a'dan kk a<X ... X... a'dan byk a=X ... X... a'ya eit a=>X ... X... a'dan kk eit a<=X ... X... a'dan byk eit a<>X ... X... a'ya eit deil Mantksal operatrler ise AND, OR, NOT olarak verilebilir. Bu operatrler standart btn dillerde ayn olan operatrler olduu iin ayrca anlatlmayacaktr. Kmeleme operatrleri ise datalar zerinde gruplama yapmay salayan operatrlerdir. Bunlar Between, In, Like operatrleridir. Bu operatrlerin hepsi where ile birlikte kullanlmaldr.

ekil 8.1.1.1. Personel Bilgilerinin Seilerek Listelenmesi-2 Burada birimKodu 101 ve soyad Kantar olan personele ait sicilno, ad, soyad, birimKodu ve adres bilgileri seilerek listelenmitir. 64

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.1.2. Personel Bilgilerinin Seilerek Listelenmesi-3 Between Aralkl sorgulama yaplmak istenildiinde kullanlan bir operatrdr. Burada sicil numaras 300 ile 500 arasnda olan personele ait sicilno, ad, soyad, birimkodu ve adres bilgileri between and deyimleri ile seilerek listelenmitir.

ekil 8.1.1.3. Personel Bilgilerinin Seilerek Listelenmesi-4 IN operatr ile belli bir kolonun kmesi verilerek ilerin daha kolay yaplmas salanr. Burada meslekKodu 1,2,3 ve 7 olan personele ait sicilno, ad, soyad, meslekKodu ve adres bilgileri IN operatr ile seilerek listelenmitir. SQL> select sicilno, adi, soyadi, birimkodu, adres from personel 2 where meslekkodu=1 or meslekkodu=2 or meslekkodu=3 or meslekkodu=7; IN operatr kullanlmadan bu komut yukardaki gibi de yazlabilirdi. Her iki komutta ayn ii yapar. Ama IN ile sorgunun yazlmas daha kolaydr. 65

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.1.4. Personel Bilgilerinin Seilerek Listelenmesi-5 Like operatr iinde belli bir karakter dizisi bulunan kaytlara ulamak iin kullanlr. Like operatrnde % iareti kullanlr. Burada personelin ad ierisinde S harfi geen personele ait sicilno, ad, soyad, meslekkodu ve adres bilgileri Like deyimi ile seilerek listelenmitir. Eer art where adi like Se% olarak yazlm olsayd ad sadece Serpil ve Selim olan personel listelenirdi. rnek-1) SELECT * FROM personel WHERE adres LIKE '%stanbul%'; Bu sorgulama ile adres alannda stanbul geen kaytlar listelenir. rnek-2) SELECT * FROM personel WHERE adres LIKE '%stanbul'; Bu sorgulama ile adres alannn sonunda stanbul geen kaytlar listelenir. rnek-3) SELECT * FROM personel WHERE adres LIKE 'stanbul%'; Bu sorgulama ile adres alannn banda stanbul geen kaytlar listelenir. rnek-4) SELECT * FROM isci WHERE isciadi LIKE 'mu__%'; i tablosunda ad mu ile balayan kaytlarn listesi. rnek-5) SELECT * FROM isci WHERE isciadi LIKE 'mu___%'; i tablosunda ad mu ile balayan kaytlarn listesi.

ekil 8.1.1.5. Like Operatr ile Tablodaki Bilgilerin Seilerek Listelenmesi 66

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bu rnekte _ alt tire iareti tek bir karaktere ve % iareti birden fazla karaktere karlk gelir. Birinci sorguda iki alt tire iareti kullanldnda 3 adet kayt listelenmi, ikinci sorguda alt tire iareti e karldnda iki kayt listelenmitir. nk ikinci sorguda istenen kaytlarn isciadi alannn uzunluu en az 5 karaktere karlm oluyor. 8.1.2. Order By Bu komut ile belirtilen stuna gre artan veya azalan bir sralama ile sorgulama yaplabilir. Sralama yaplacak olan alan saylardan oluuyorsa rakamsal deerler zerinden artan veya azalan sralama yaplr. Eer alan karakterlerden oluuyorsa sralama A dan Z ye veya Z den A ya gre bir sralama olacaktr. ASC : kullanarak kkten bye doru artan sralama yaplabilir. DESC : kullanarak bykten ke doru azalan sralama yaplabilir. Ancak ASC kullanmak zorunlu deildir. nk default sralama tipi ASC'dir. Ayn anda birka kolon zerinden de sralama yaplabilir. rnek-1) SQL> SELECT * FROM personel ORDER BY sicilno; Tm personel sicil numaras alanna gre kkten bye doru sralanr. rnek-2) SQL> SELECT * FROM personel ORDER BY sicilno ASC; Tm personel sicil numaras alanna gre kkten bye doru sralanr. rnek-3) SQL> SELECT * FROM personel ORDER BY sicilno DESC; Tm personel sicil numaras alanna gre bykten ke doru sralanr. rnek-4) SQL> SELECT * FROM ii WHERE 2 soundex(isciadi)=soundex(ercin);

ekil 8.1.2.1. Soundex Operatr ile Tablodaki Bilgilerin Seilerek Listelenmesi Eer tablodan listelenecek kaydn bir alannn ierii tam olarak bilinmiyorsa ilgili kelimenin yakn telaffuzu yazlarak soundex fonksiyonu ile listeleme yaplabilir. rnek-5) SQL> SELECT sicilno, adi, soyad, adres FROM personel 2 ORDER BY adi, soyadi ASC; Tm personele ait sicilno, ad, soyad ve adres bilgisi ad ve soyad alanna gre; bykten ke doru sralanr. Burada birden fazla alana gre sralama yaplmtr. Birden fazla alana gre sralama yapldnda nce birinci alan zerinde sralama yaplr. Daha sonra belirtilen ikinci alan da birinci alanlar iinde sralanr. 67

VER TABANI YNETM SSTEMLER I

Alako BURMA

Bu rnekte nce isimler sralanm sonra ayn isimli olan personel kendi ierisinde soyadlarna gre sralanmtr. rnein 3 tane Fatma isimli personel vardr. Bunlar alt alta sralanm olup soyadlarna gre de bir alfabetik sralama yaplmtr.

ekil 8.1.2.2. Personel Bilgilerinin Seilerek Listelenmesi-6 Sorgu sadece personelin ad alanna gre yaplm olsayd soyadlar isimlere gre alfabetik srada olmayacaklard. Daha uzun listelerde birden fazla alana gre sralama yapmak listenin kontrol ve kullanl asndan her zaman daha avantajldr. Bu duruma faklte, blmler, snf ve snfta okuyan rencilerin numaralarna gre sralanmas rnei verilebilir. Bir niversitede okuyan 15 bin renci bu kritere gre sralanmadan; dzensiz bir srada liste alnrsa aranlan kiinin nasl bulunacan dnn. 68

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.2.3. Personel Bilgilerinin Seilerek Listelenmesi-7 Sorgu sadece personelin ad alanna gre yaplmtr. Soyadlar isimlere gre alfabetik srada deillerdir. rnein Fatma isimli personel isime gre sralanm ama Fatmalar kendi ierisinde soyadna gre alfabetik sralanmamtr. rnek-6) SQL> SELECT * FROM personel 2 ORDER BY dogumtarihi DESC, adi, soyadi; Bu sorguda da birden fazla alana gre yani 3 alana gre sralama yaplmtr. Birinci alan azalan sralama iken dier iki alan artan sralamadr. Burada personel kaytlar doum tarihine gre bykten ke doru sralanyor. Yani nce en gen eleman'dan balanarak en yal elemana doru bir sralama yaplyor. Doum tarihleri ayn olanlarda ise ad ve soyada gre Adan Zye artan bir sralama yaplmaktadr. Doum tarihi ayn olanlar nce isimlere gre sralanr. Burada ayn isimli olanlar alt alta gelecek ekilde sralanr. Daha sonra da ayn isimliler kendi ierisinde soyadlarna gre sralanrlar. 8.1.3. Distinct SQLde bir tablo iinde baz alanlarda birbirinin ayn olan kaytlar bulunabilir. Ayn satrlarn listeleme esnasnda bir kez yazlmas iin DISTINCT kullanlr. rnek-1) SQL> SELECT DISTINCT soyad FROM personel ; Personel tablosundan soyad'lar tekrarsz olarak listelenecektir. Yani ayn soyada sahip iki kii varsa sadece ilk kii listelenir. Tekrarlar engellenmi olur. rnek-2) SQL> SELECT DISTINCT meslekKodu FROM personel ; Bu sorgu sonucunda Personel tablosunda farkl olan meslek gruplar listelenir. Bu tr durumlarda DISTINCT ok kullanl bir operatrdr.

69

VER TABANI YNETM SSTEMLER I

Alako BURMA

ekil 8.1.3.1. Personel Bilgilerinin DISTINCT ile Seilerek Listelenmesi-1 Burada personel tablosunda olan birim kodlar tekrarsz olarak listelenmitir. Distinct operatr kullanlmasayd; 30 adet personelimiz olduu iin birim kodlar tekrarlanarak ekrana 30 adet birim kodu bilgisi gelirdi.

ekil 8.1.3.2. Personel Bilgilerinin DISTINCT ile Seilerek Listelenmesi-2 Burada da personel tablosunda alan ve meslek kodu 2 olan mesleklerin birimleri tekrarsz olarak listelenmitir. Bu sorgu sonucunda 2 nolu meslekten 3 farkl birimde alan personel olduunu reniyoruz. 401 nolu birimde meslekkodu 2 olarak alan personel bulunmamaktadr. 8.2. UPDATE (Gncelle) Komutu Tablodaki bir kayt veya kaytlar deitirilmek istenirse UPDATE komutu kullanlr. Genel kullanm ekli aadaki gibidir ; UPDATE tablo_ad SET stun_ad_1=deger1, stun_ad_2=deger2,... WHERE kosul; rnek-1) SQL> UPDATE personel 2 SET adres=Mezitli-Mersin WHERE sicilno=849 ; Personel tablosunda sicil numaras 849 olan personelin adresi deitirilmitir.

70

VER TABANI YNETM SSTEMLER I

Alako BURMA

rnek-2) SQL> UPDATE maaslar SET maasay=2 ; Maalar tablosunda btn personelin maa ay 2 olarak deitirilmitir. rnek-3) SQL> UPDATE maaslar SET maas=maas*1.20 ; Maalar tablosunda btn personelin maana %20 zam yaplmtr. rnek-4) SQL> UPDATE maaslar SET maas=maas*1.20 where sicilno=267 ; Maalar tablosunda 267 sicil numaral personelin maana %20 zam yaplmtr. Dier personelin maalarnda bir deiiklik yaplmamtr.

ekil 8.2.1. Update Komutunun Kullanm Ekran Burada nce 267 sicil numaral personele ait 2000 olan maa listelenmi ve update komutu ile kiiye %20 zam yaplmtr. Daha sonra da zam aldktan sonraki maa olan 2400 ekranda listelenmitir. rnek-5) SQL> UPDATE personel SET 2 soyadi=Bakay, birimkodu=101, adres=Mezitli-Mersin 3 WHERE sicilno=849 ; Personel tablosunda sicil numaras 849 olan personelin soyad Bakay, birimKodu 101 ve adresi Mezitli-Mersin olarak deitirilmitir. rnek-6) SQL> UPDATE personel SET soyadi=Bakay; Personel tablosundaki tm personelin soyadn Bakay olarak deitirir. NOT : Eer yukardaki gibi bir SQL sorgu cmlesi yazlp altrlrsa tablodaki btn personelin soyad Bakay olarak deiir. Eer bir yerde yedek bilginiz yoksa bilgilere yeniden ulalmas sz konusu deildir. Bu nedenle UPDATE komutu kullanlrken ok dikkat edilmelidir.

71

VER TABANI YNETM SSTEMLER I

Alako BURMA

8.3. DELETE (Sil) Komutu Tablodaki bir kayt veya kaytlar silinmek istenirse DELETE komutu kullanlr. Genel kullanm ekli aadaki gibidir ; DELETE FROM tablo_ad WHERE kosul; rnek-1) SQL> DELETE FROM personel WHERE sicilno=849 ; Personel tablosunda sicil numaras 849 olan personeli siler.

ekil 8.3.1. Delete Komutunun Kullanm Ekran Burada sicil numaras 849 olan personeli personel tablosundan silinmitir. Daha sonra bu personel listelenmeye alldnda byle bir kayt bulunamadna dair No rows selected bilgisi ekrana gelmitir. rnek-2) SQL> DELETE FROM personel WHERE birimkodu=101 ; Personel tablosunda birimkodu 101 olan personelleri siler. Burada 101 nolu Birimde alan 9 personel olduu iin tablodan 9 adet personelin bilgisi silinecek ve geriye 21 adet personel bilgisi kalacaktr. rnek-3) SQL> DELETE FROM personel WHERE adi IS NULL ; Personel tablosundan ad alan bo olan personeli siler. IS NOT ile istenilen alan bo olan bilgiler silinebilir. IS NOT NULL ise bo olmayan alanlar iin kullanlr. rnek-4) SQL> DELETE FROM personel; Personel tablosundaki tm bilgileri siler. NOT : Eer yukardaki gibi bir SQL sorgu cmlesi yazlp altrlrsa tablodaki btn kaytlar silinir. Eer bir yerde yedek bilginiz yoksa bilgilere yeniden ulalmas sz konusu deildir. Bu nedenle DELETE komutu kullanlrken ok dikkat edilmelidir.

72

You might also like