DELETE Deyimi DELETE deyimi bir tablodan veri silmek için kullanılır. DELETE tablo_adı [WHERE arama_koşulu] Örneğin DELETE Kişiler WHERE (SIRANO = 1) Kişiler tablosundan SIRANO = 1 olan satırı siler. DELETE Kişiler WHERE (AD = 'yusuf') Kişiler tablosundan AD kolonu yusuf olan tüm satırları siler. DELETE Kişiler Kişiler tablosundan tüm satırları siler. ORDER BY Deyimi ORDER BY deyimi bir tablodan ile seçilen verileri sıralamak için kullanılır. ORDER BY KolonAdı [DESC] [, KolonAdı [DESC] [,.]] Örnekler WHERE SIRANO, AD, SOYAD, DOGUMTAR, DOGUMYER Kişiler (AD = 'yusuf') ORDER BY SOYAD, DOGUMTAR DESC Kişiler tablosundan AD kolonu yusuf olan tüm satırları SOYAD kolonuna göre artan, DOGUMTAR Kolonuna göre azalan sırada listeler.
IN Operatörü IN operatörü bir tablonun kolonlarından birinin bir kümenin elemanı olması istediğinde arama koşulunda. IN (Liste) Örnekler WHERE SIRANO, AD, SOYAD, DOGUMTAR, DOGUMYER Kişiler (AD IN ('yusuf', 'ahmet')) ORDER BY SOYAD, DOGUMTAR DESC Kişiler tablosundan AD kolonu yusuf veya ahmet olan tüm satırları SOYAD kolonuna göre artan, DOGUMTAR kolonuna göre azalan sırada listeler. IN deyimindeki liste bir deyimi kullanılarak elde edilen bir liste de olabilir. WHERE SIRANO, AD, SOYAD, DOGUMTAR, DOGUMYER Kişiler (DOGUMYER IN ( ILAD IL ORDER BY SOYAD, DOGUMTAR DESC WHERE (ILKOD <= 34) AND (ILKOD >= 22))) Kişiler tablosundan DOGUMYER kolonu, IL tablosundan ILAD IL WHERE (ILKOD <= 34) AND (ILKOD >= 22)
SQL deyimi ile çekilen listede olan; bir başka deyişle ILKOD u 22 ile 34 arasında olan illerden biri olan kişilerin listesini SOYAD kolonuna göre artan, DOGUMTAR Kolonuna göre azalan sırada verir. BETWEEN Operatörü BETWEEN... AND operatörü bir kolon için iki değer arasında kalan değerlerin seçilmesini sağlayan arama koşulunda kullanılır. Kolon_Adı BETWEEN Değer1 AND Değer2 Örnekler SIRANO, AD, SOYAD, DOGUMTAR, DOGUMYER Kişiler WHERE (SIRANO BETWEEN 3 AND 15) Kişiler tablosundan SIRANO kolonu 3 ile 15 olan tüm satırları listeler. SQL Geçici isimler (Alias) Bir SQL ifadesinde tabloların veya kolonların isimleri geçici bir isimle adlandırılabilir. Kolon_Adı AS Geçici_kolon_adı Veya Tablo_adı [AS] Geçici_tablo_adı Örnekler SIRANO AS SIRA, AD AS ISIM, SOYAD, DOGUMTAR, DOGUMYER Kişiler WHERE (SIRANO <=2) Deyimi
SIRA ISIM SOYAD DOGUMTAR DOGUMYER 1 Osman Yeşilkuş 21.12.1976 Malatya 2 Esin Eylem Kara 24.06.1976 Adana A.ILCEKOD, A.ILKOD, A.ILCEAD, B.ILAD ILCE A INNER JOIN WHERE (A.ILKOD = 1) IL B ON A.ILKOD = B.ILKOD Bu SQL deyiminde ILCE tablosu geçici olarak A ve IL tablosu geçici olarak B olarak adlandırılmıştır. Bu SQL ifadelerini daha okunaklı yapmak bakımından çok faydalı olabilir. ILCEKOD ILKOD ILCEAD ILAD 100 1 Adana Adana 101 1 Seyhan Adana 102 1 Yüreğir Adana... SQL Join, Yabancı anahtar (FOREIGN KEY), Birincil anahtar (PRIMARY KEY) Bazı durumlarda birden fazla tablodan veri kümesi almak gerekebilir. Birden fazla tablo birleştirilerek tek bir liste halinde sonuç kümesi elde etmeyi gerektiren durumlar olabilir. Bu şeklide tabloları birleştirerek sonuç kümesi elde etmeye yarayan işleme birleştirme veya JOIN işlemi denir. Buna güzel bir örnek IL ve ILCE tablolarının birbiriyle olan ilişkileri göz önüne alınarak verilebilir. IL tablosu ILCE tablosu ILKOD ILAD ILCEKOD ILKOD ILCEAD
Her ilçe bir ile bağlıdır. ILCE tablosunda bunu belirtmek için bir ILKOD kolonu kullanılmıştır. Bu IL tablosunda ILKOD kolonuna ilişkili olan bir kolondur. IL tablosunda ILKOD kolonu IL tablosunun asıl anahtarıdır (PRIMARY KEY). Bu anahtar IL tablosunda her il için bir tanedir. Ve illeri tek türlü belirler. ILCE tablosunun asıl anahtarı ILCEKOD dur. ILCE tablosunda ILKOD kolonu IL tablosunun ayni isimli anahtarı ile ilişkili yabancı anahtardır( FOREIGN KEY). Bu yabancı anahtar sayesinde bir ilçenin hangi ilin ilçesi olduğu anlaşılmaktadır. Örneğin ILCE tablosunda ILCEKOD u 403 olan satırı düşünelim. Bu satırda ILKOD olarak 4 değeri bulunmaktadır. Buradan 403 ILCEKOD lu Eleşkirt ilçesinin ILKOD u 4 olan ile ait olduğu anlaşılmalıdır. ILCEKOD ILKOD ILCEAD 403 4 Eleşkirt Bu tabloları kullanarak 403 ILCEKOD lu ilçeyi il adı ile birlikte görmek istersek JOIN işlemini kullanmak gerekir. Aşağıda bununla ilgili örnekleri vereceğiz. Birkaç değişik JOIN işlemi vardır. INNER JOIN operatörü Tablo_adı1 [Alias1] INNER JOIN Tablo_adı2 [Alias2] ON bağlantı_koşulu A.ILCEKOD, A.ILKOD, A.ILCEAD, B.ILAD ILCE A INNER JOIN IL B ON A.ILKOD = B.ILKOD WHERE (A.ILCEKOD = 403) ILCEKOD ILKOD ILCEAD ILAD
403 4 Eleşkirt Ağrı Bu örnekte ILKOD u 1 olan ilin tüm ilçelerinin listesini görmek istiyoruz. A.ILCEKOD, A.ILKOD, A.ILCEAD, B.ILAD ILCE A INNER JOIN WHERE (B.ILKOD = 1) IL B ON A.ILKOD = B.ILKOD ILCEKOD ILKOD ILCEAD ILAD 100 1 Adana Adana 101 1 Seyhan Adana 102 1 Yüreğir Adana... Kişiler.SIRANO, Kişiler.AD, Kişiler.SOYAD, IL.ILKOD, IL.ILAD Kişiler INNER JOIN IL ON Kişiler.DOGUMYER = IL.ILAD Veya K.SIRANO, K.AD, K.SOYAD, I.ILKOD, I.ILAD Kişiler K INNER JOIN WHERE (K.SIRANO <= 2) IL I ON K.DOGUMYER = I.ILAD
ORDER BY K.SIRANO DESC SIRANO AD SOYAD ILKOD 2 Esin Eylem Kara 1 1 Osman Yeşilkuş 44 LEFT OUTER JOIN operatörü Tablo_adı1 [Alias1] LEFT OUTER JOIN Tablo_adı2 [Alias2] ON bağlantı_koş LEFT INNER JOIN işlemi daha iyi anlayabilmek için IL tablosunda 91 kodlu Yurtdışı iline bağlı bir ilçe olmadığına dikkat edelim. Bu durumda A.ILCEKOD, A.ILKOD, A.ILCEAD, B.ILAD IL B INNER JOIN WHERE (B.ILKOD = 91) ILCE A ON A.ILKOD = B.ILKOD SQL deyimi hiçbir sonuç vermeyecektir. Çünkü ILCE tablosunda ILKOD u 91 olan bir ilçe yoktur. Çoğu kez sonuç kümesinin Yurtdışı ilini içermesi istenen bir birleştirme işlemi yapmak gerekir. Bu durumda LEFT (veya RIGHT) JOIN işlemi kullanılır. Buna örnek verelim. A.ILCEKOD, A.ILCEAD, B.ILKOD, B.ILAD IL B LEFT OUTER JOIN WHERE (B.ILKOD = 91) ILCE A ON A.ILKOD = B.ILKOD
ILCEKOD ILCEAD ILKOD ILAD <NULL> <NULL> 91 Yurtdışı Burada iki tabloyu bağlama işlemi IL <---------------- ILCE IL LEFT OUTER JOIN ILCE Şeklindedir. Bu nedenle ilişkinin sol tarafında bulunan tabloya ait tüm bilgiler geldiği halde diğer tabloya ait 91 yabancı anahtarlı bilgiler olmadığından kolon değerleri NULL olarak sonuçlandırılmıştır. A.ILCEKOD, A.ILCEAD, B.ILKOD, B.ILAD IL B LEFT OUTER JOIN ILCE A ON A.ILKOD = B.ILKOD WHERE (B.ILKOD IN (91, 69)) ILCEKOD ILCEAD ILKOD ILAD 6900 Bayburt 69 Bayburt 6901 Aydıntepe 69 Bayburt 6902 Demirözü 69 Bayburt <NULL> <NULL> 91 Yurtdışı Aşağıdaki örneği dikkatle inceleyelim: B.ILKOD, B.ILAD IL B LEFT OUTER JOIN ILCE A ON A.ILKOD = B.ILKOD WHERE (A.ILKOD IS NULL) Sonuç : ILKOD ILAD
90 K. K. T. C. 91 Yurtdışı Yukarıdaki SQL ifadesi IL tablosunda olup da ILCE tablosunda ILKOD karşılığı olmayan tüm satırları içeren sonuç kümesini verir. Neden? Bu örnek LEFT OUTER JOIN işleminin ne kadar yararlı olabileceğini göstermektedir. RIGHT OUTER JOIN operatörü Tablo_adı1 [Alias1] RIGHT OUTER JOIN Tablo_adı2 [Alias2] ON bağlantı_ko Bu işlem LEFT OUTER JOIN işlemi ile tamamen aynidir. Fakat bu durumda sağda bulunan tabloya ait tüm sonuçlar sonuç kümesine dahil edilir. SQL UNION ve UNION ALL UNION UNION deyimi iki tablodan birbiriyle ilgili is bilgiyi seçmekte kullanılır. Bunun genel yapısı aşağıdaki şekildedir. : SQL İfade 1 UNION [ALL] SQL İfade2 Burada SQL İfade 1ve SQL İfade 2 değişik tablolarda ayni veri tipli kolonları seçen SQL deyimleridir. Not : UNION ile sadece listede geçen farklı değerler kümesini seçer. ILKOD IL
WHERE (ILKOD<=5) UNION ILKOD ILCE WHERE (ILKOD>3 AND ILKOD<7) ILKOD 1 2 3 4 5 6 UNION all UNION deyimi ile aynidir. Fakat bu durumda farklı sonuçlar yerine tüm sonuçlar seçilir. ILKOD IL WHERE (ILKOD<=5) UNION ALL ILKOD ILCE WHERE (ILKOD>3 AND ILKOD<7)