What we learn to do, we learn by doing
DML / Transact-SQL

DML – Data Manuplation Language
T-SQL olarak k?salt?lan verilerde sorgu i?lemlerini gerçekle?tirebilece?iniz,tüm verilere eri?ebilece?iniz, ekleme, silme, güncelleme ve veriler üzerinde belirli kriterlere uygun yap?da i?lemler yapabilece?iniz bir sorgu dilidir.
SELECT
Tan?m : Bir tabloda bulunan veri alanlar?n?n tamam?n? ya da bir k?sm?n? kullanarak sorgulama i?leminin yap?lmas?n? sa?lar.
Dizilim
SELECT (* | alan_ad?1, …, alan_ad?N)
FROM tablo_ad?;
Örnek
- OGRENCI isimli tabloda bulunan tüm veri alanlar?n? kullanarak sorgulama i?lemini yapmak amac?yla
SELECT * FROM OGRENCI;
- KRES isimli tabloda bulunan AD, SOYAD ve YAS isimli veri alanlar?n? kullanarak sorgulama yapmak amac?yla
SELECT AD, SOYAD, YAS FROM KRES;
WHERE
Tan?m : Bir tablodaki veri alanlar? üzerinde belli bir ko?ula göre dizelgeleme (sorgulama) i?leminin yap?lmas?n? sa?lar.
Dizilim
WHERE ko?ul;
Örnek
- BORDRO tablosundaki KESINTI isimli veri alan?nda 1000 den küçük de?ere sahip olan tüm kay?tlar? elde etmek amac?yla
SELECT * FROM BORDRO WHERE kesinti < 1000;
- CALISANLAR tablosundaki DOGYER isimli veri alan?nda “ERZURUM” dizgisi ile e?le?en kay?tlar? elde etmek amac?yla
SELECT * FROM CALISANLAR WHERE dogyer = “ERZURUM”;
- OGRENCI tablosundaki DOGTAR isimli veri alan?nda “2000-01-01″ de?erine sahip olan tüm kay?tlar? elde etmek amac?yla
SELECT * FROM OGRENCI WHERE dogtar = “2000-01-01″;
- SATIS tablosundaki IHRAC isimli veri alan?nda “.T.” mant?ksal de?erine sahip olan verileri elde etmek amac?yla
SELECT * FROM SATIS WHERE IHRAC;
ya da SELECT * FROM SATIS WHERE IHRAC = .T.;
DISTINCT
Tan?m : Bir tablo üzerinde yap?lan sorgulama i?lemi s?ras?nda, belli bir veri alan?ndaki tekrarl? veri de?erlerinin ortadan kald?r?lmas?n? (tek kayda indirilmesini) sa?lar.
Dizilim
(SELECT) DISTINCT alan_ad?;
Örnek
- CALISANLAR tablosundaki verileri AD, SOYAD ve DOGYER isimli veri alanlar?n? dikkate alarak elde etmek ve bu i?lemi yaparken de DOGYER isimli veri alan?ndaki tekrarl? veri de?erlerini (verileri) ortadan kald?rmak amac?yla
SELECT ad, soyad, DISTINCT dogyer FROM calisanlar;
AVG
Tan?m : Bir tablo içerisinde say?sal de?er içeren bir veri alan?ndaki tüm de?erlerin aritmetiksel ortalamas?n?n elde edilmesini sa?lar.
Dizilim
AVG(alan_ad?)
Örnek
BORDRO tablosundaki KESINTI isimli alanda bulunan tüm verilerin aritmetiksel ortalamas?n?n elde etmek amac?yla
SELECT AVG(KESINTI)
FROM BORDRO
COUNT
Tan?m : Bir tablodaki belli bir veri alan?nda veya tüm tabloda bulunan verilerin toplam say?s?n?n elde edilmesini sa?lar.
Dizilim
COUNT(* | alan_ad?)
Örnek
- GONDERI tablosunda bulunan tüm kay?tlar?n toplam say?s?n? elde etmek amac?yla
SELECT COUNT(*) FROM GONDERI
- BORDRO tablosunda bulunan veriler içerisinde i?e ba?lama tarihi 01/01/2005 olan çal??anlar?n toplam say?s?n? elde etmek amac?yla
SELECT COUNT(*)
FROM BORDRO
WHERE ISBAS = ’01/01/2005′
MAX
Tan?m : Bir tablo içerisindeki belli bir veri alan?nda bulunan say?sal de?erlerin en büyü?ünün elde edilmesini sa?lar.
Dizilim
MAX(alan_ad?)
Örnek
- CALISAN tablosundaki YAS alan?n? dikkate alarak en ya?l? çal??an?n bulunmas?n? sa?lamak amac?yla
SELECT AD, SOYAD, MAX(YAS)
FROM CALISAN
- BORDRO tablosundaki veriler içerisinden 01/01/2005 tarihinde i?e ba?layan çal??anlardan en yüksek primi alanlar? elde etmek amac?yla
SELECT AD, SOYAD, MAX(PRIM)
FROM BORDRO
WHERE ISBAS = ’01/01/2005′
MIN
Tan?m : Bir tablo içerisindeki belli bir veri alan?nda bulunan say?sal de?erlerin en büyü?ünün elde edilmesini sa?lar.
Dizilim
MIN(alan_ad?)
Örnek
- CALISAN tablosundaki YAS alan?n? dikkate alarak en genç çal??an?n bulunmas?n? sa?lamak amac?yla
SELECT AD, SOYAD, MIN(YAS)
FROM CALISAN
- BORDRO tablosundaki veriler içerisinden 01/01/2005 tarihinde i?e ba?layan çal??anlardan en dü?ük primi alanlar? elde etmek amac?yla
SELECT AD, SOYAD, MIN(PRIM)
FROM BORDRO
WHERE ISBAS = ’01/01/2005′
SUM
Tan?m : Bir tablodaki say?sal de?er içeren bir alana ait tüm de?erlerin toplam?n?n al?nmas?n? sa?lamak.
Dizilim
SUM(alan_ad?)
Örnek : BORDRO tablosundaki HEDIYE_PRIMI isimli alanda yer alan tüm de?erlerin toplam?n? elde etmek amac?yla
SELECT SUM(HEDIYE_PRIMI)
FROM BORDRO
BETWEEN
Tan?m : Bir sorgulama i?leminde belli bir veri alan?na ait iki de?erin belirtilmesini sa?lar.
Dizilim
de?er1 BETWEEN de?er2;
Örnek
- KIRTASIYE tablosundaki veriler içerisinden KATKI isimli veri alan?nda 300 ile 660 aras?ndaki de?erlere sahip olanlar? elde etmek amac?yla
SELECT * FROM KIRTASIYE
WHERE KATKI 300 BETWEEN 660;
Bu dizilim ile elde edilen sonuç
SELECT * FROM KIRTASIYE
WHERE KATKI >= 300 AND KATKI <= 660;
LIKE
Tan?m : Bir sorgulama i?leminde ilgili veri alan?nda sorgulanmak istenen de?ere benzer de?erlerin belirtilmesini sa?lar.
Dizilim
LIKE ‘%de?er%’;
LIKE ‘—de?er—’;
Örnek
- OGRENCI tablosundaki ACIKLAMA isimli veri alan?ndaki de?erlerden “ERZURUM” dizgisi ve bu dizgiye benzer de?erlerin elde edilmesini sa?lamak amac?yla
SELECT * FROM OGRENCI WHERE ACIKLAMA LIKE ‘%ERZURUM%’;
- URETIM tablosundaki CIKIS isimli veri alan?ndaki de?erlerden 7 karakter uzunlu?unda olan ve “ER” ile ba?layan de?erlerin elde edilmesini sa?lamak amac?yla
SELECT * FROM URETIM WHERE CIKIS LIKE ‘ER—–’;
IS NULL
Tan?m : Bir tablo içerisinde gerçekle?tirilecek de?i?ik sorgulama, silme ya da de?i?iklik i?lemlerinde, belli bir veri alan?n?n ya da veri alanlar?n?n bo? olma durumunun belirtilmesini sa?lar.
Dizilim
veri_alan? IS NULL;
Örnek
- KAMYON tablosundaki verilerden PLAKA isimli veri alan? bo? olanlar?n silinmesini sa?lamak amac?yla
DELETE FROM KAMYON WHERE plaka IS NULL;
IS NOT NULL
Tan?m : Bir tablo içerisinde gerçekle?tirilecek de?i?ik sorgulama, silme ya da de?i?iklik i?lemlerinde, belli bir veri alan?n?n ya da veri alanlar?n?n bo? olmama durumunun belirtilmesini sa?lar.
Dizilim
veri_alan? IS NOT NULL;
Örnek
- KAMYON tablosundaki verilerden PLAKA isimli veri alan? bo? olmayanlar?n (bir de?ere, yani veriye sahip olanlar?n) silinmesini sa?lamak amac?yla
DELETE FROM KAMYON WHERE plaka IS NOT NULL;
IN
Tan?m : Bir tablodan yap?lan sorgulama i?leminde dikkate al?nmak istenen veri alan?ndaki de?erlerin belli bir küme yard?m?yla belirtilmesini sa?lar.
Dizilim
IN (de?er1, …, de?erN);
Örnek
- CALISANLAR tablosundaki veriler içerisinden DOGYER isimli veri alan?ndaki de?erleri “ARDAHAN”, “KARS” ve “ERZURUM” olanlar? elde etmek amac?yla
SELECT * FROM CALISANLAR
WHERE DOGYER IN (“ARDAHAN”, “KARS”, “ERZURUM”);
Bu dizilim ile elde edilen sonuç
SELECT * FROM CALISANLAR
WHERE DOGYER = “ARDAHAN” OR DOGYER = “KARS”
OR DOGYER = “ERZURUM”;
NOT
Tan?m : Bir tablodan belli bir ko?ula ba?l? olarak yap?lan sorgulama i?leminde ilgili ko?ulun tersi olan ko?ul ile uyu?an durumun dikkate al?nmas?n? sa?lar.Ele al?nan ko?ul “DO?RU” mant?ksal do?ruluk de?erine sahipse “YANLI?” mant?ksal do?ruluk de?eri, “YANLI?” mant?ksal do?ruluk de?erine sahipse “DO?RU” mant?ksal do?ruluk de?eri elde edilir.
Dizilim
NOT ko?ul;
Örnek
- CALISANLAR tablosundaki DOGYER isimli veri alan?ndaki de?erler içerisinden “ERZURUM” dizgisi ile e?le?meyenlerin elde edilmesini sa?lamak amac?yla
SELECT * FROM CALISANLAR WHERE NOT dogyer = “ERZURUM”;
dizilimi kullan?labilir. Bu dizilim ile elde edilen sonuç
SELECT * FROM CALISANLAR WHERE dogyer <> “ERZURUM”;
AND
Tan?m : Bir tablodan yap?lan ve en az iki ko?ula ba?l? olan sorgulama i?leminde, her iki ko?ulun do?ru olmas? halinde i?lem yap?lmas?n? sa?lar.Belirtilen her iki ko?ulun mant?ksal do?ruluk de?eri “DO?RU” ?eklinde ise “DO?RU”, aksi halde “YANLI?” mant?ksal do?ruluk de?eri elde edilir.
Dizilim
ko?ul1 AND ko?ul2;
Örnek
- BORDRO tablosundaki KESINTI isimli veri alan?ndaki de?eri “50″ ve PRIM isimli veri alan?ndaki de?eri 100 den büyük olan kay?tlar? elde etmek amac?yla
SELECT * FROM BORDRO
WHERE KESINTI = 50 AND PRIM > 100;
OR
Tan?m : Bir tablodan en az iki ko?ula ba?l? olarak yap?lan sorgulama i?leminde, ko?ullardan bir tanesinin ya da her ikisinin sa?lanmas? halinde i?lem yap?lmas?n? sa?lar.Üzerinde i?lem yap?lan ko?ulun her ikisinin de “YANLI?” mant?ksal do?ruluk de?erine sahip olmas? halinde “YANLI?”, aksi halde “DO?RU” mant?ksal do?ruluk de?eri elde edilir.
Dizilim
ko?ul1 OR ko?ul2;
Örnek
- OGRENCI tablosundaki SINIF isimli veri alan?nda “I” ya da “II” de?erine sahip olan tüm kay?tlar? elde etmek amac?yla
SELECT * FROM OGRENCI
WHERE SINIF = “I” OR SINIF = “II”
GROUP BY
Tan?m : Bir tablodaki verilerin öbeklenerek sorgulanmas?n? sa?lar.
Dizilim
GROUP BY veri_alan?;
Örnek
- CALISANLAR tablosundaki verileri DOGYER isimli veri alan?ndaki verileri öbekleyerek elde etmek amac?yla
SELECT * FROM CALISANLAR GROUP BY DOGYER;
HAVING
Tan?m : Bir tablodaki belli bir veri alan? dikkate alarak yap?lan öbeklendirilmi? sorgulama i?leminde öbeklenen veriler üzerinde hesaplama i?leminin yap?lmas?n? sa?lar.HAVING deyimi, GROUP BY deyimi ile birlikte kullan?ld???nda anlaml?d?r. Tek ba??na belli bir anlam ifade etmeyece?i için kullan?lmas? söz konusu de?ildir.WHERE deyimi ile olan fark? : WHERE deyimi, bir tablonun tek tek sat?rlar? üzerinde i?lem yap?lmas?n? sa?layan ko?ullar için geçerli iken, HAVING deyimi, yaln?z öbeklenmi? veriler üzerinde i?lem yap?l?rken geçerlidir.HAVING deyimi kullan?ld???nda, ard? s?ra SQL i?levlerinden olan AVG, COUNT, MAX, MIN veya SUM i?levlerinden en az bir tanesi belirtilmelidir.
Dizilim
HAVING ko?ul;
Örnek
- TUKETICI tablosunda yer alan verileri DOGYER isimli veri alan?ndaki de?erleri dikkate alarak öbeklerken ODEME isimli veri alan?ndaki de?erlerin en büyük olan?n?n 50 de?erine e?it olanlar? elde etmek amac?yla
SELECT * FROM TUKETICI
GROUP BY DOGYER
HAVING MAX(ODEME) = 50;
ORDER BY
Tan?m : Bir tablodaki veri alanlar?n?n belli bir veri alan?n?n ya da veri alanlar?n?n dikkate alarak s?ralanmas?n? sa?lar.
Dizilim
ORDER BY alan_ad?1, …, alan_ad?N [ ASC | DESC ];
Örnek
- URUNLER tablosundaki verileri URYER isimli veri alan?n? dikkate alarak artan s?rada s?ralamak amac?yla
SELECT * FROM URUNLER ORDER BY URYER;
ya da
SELECT * FROM URUNLER ORDER BY URYER ASC;
- KRES tablosundaki verileri YAS isimli veri alan?n? dikkate alarak azalan s?rada s?ralamak amac?yla
SELECT * FROM KRES ORDER BY YAS DESC;
- OGRENCI tablosundaki verileri YAS ve KORAN isimli veri alan?n? dikkate alarak artan s?rada s?ralamak amac?yla
SELECT * FROM OGRENCI ORDER BY YAS, KORAN ASC;
ya da
SELECT * FROM OGRENCI ORDER BY YAS, KORAN;
- CALISANLAR tablosundaki verileri PRIM isimli veri alan?n? dikkate alarak artan ve KESINTI isimli veri alan?n? dikkate alarak azalan s?rada s?ralamak amac?yla
SELECT * FROM CALISANLAR ORDER BY PRIM ASC, KESINTI DESC;
ya da
SELECT * FROM CALISANLAR ORDER BY PRIM, KESINTI DESC;
UPDATE
Tan?m : Bir tablodaki ya da bak?? alan?ndaki veri alanlar?na ait de?erlerin belli bir ko?ula ba?l? olarak ya da ba?l? olmadan de?i?tirilmesini sa?lar.
Dizilim
Ko?ulsuz olarak;
UPDATE [ tablo_ad? | bak??_ad? ]
SET alan1=de?er1, …, alanN=de?erN;
Ko?ullu olarak;
UPDATE [ tablo_ad? | bak??_ad? ]
SET alan1=de?er1, …, alanN=de?erN
WHERE ko?ul;
Örnek
- CALISANLAR tablosundaki PRIM isimli veri alan?nda bulunan de?erlere 10 eklemek amac?yla
UPDATE CALISANLAR SET prim = prim + 10;
- MEMURLAR tablosundaki verilerden i?e ba?lama tarihi 01/01/2000 öncesi olanlar?n kesinti oran?n? 20 olarak belirtmek ve bu i?lemi yaparken de BASTAR ve KESINTI isimli veri alanlar?n? kullanmak için
UPDATE MEMURLAR SET KESINTI=20 WHERE BASTAR < ’01/01/2000′;
DELETE FROM
Tan?m : Bir tablodaki ya da bak?? alan?ndaki verilerin tam?n?n ya da bir k?sm?n?n silinmesini sa?lar.
Dizilim
DELETE FROM [ tablo_ad? | bak??_ad? ];
Örnek
- GECICI_CALISANLAR tablosunda yer alan tüm verilerin silinmesini sa?lamak amac?yla
DELETE FROM GECICI_CALISANLAR;
- OGRENCI tablosunda yer alan verilerden ortalamas? 50 den dü?ük olanlar? ORTALAMA isimli veri alan?n? dikkate alarak silmek amac?yla
DELETE FROM OGRENCI WHERE ORTALAMA < 50;
INSERT INTO
Tan?m : Bir tabloya ya da bir bak?? ortam?na (sanal tabloya) yeni bir verinin eklenmesini sa?lar.
Dizilim
INSERT INTO [ tablo_ad? | bak??_ad? ]
(alan1, …, alanN)
VALUES (de?er1, …, de?erN);
Örnek
- AD, SOYAD, DOGYER ve DOGTAR isimli veri alanlar?ndan olu?mu? OGRENCI tablosuna
Haluk, POLAT, Erzurum, 14/08/1971
?eklindeki veri öbe?ini eklemek amac?yla
INSERT INTO OGRENCI(AD, SOYAD, DOGYER, DOGTAR)
VALUES(‘Haluk’, ‘POLAT’, ‘Erzurum’, ’14/08/1971′);
- GELIS, GIDIS, UCRET isimli veri alanlar?ndan olu?mu? OTUBUS bak?? alan?na
Ardahan, ?zmir, 50
?eklindeki veri öbe?ini eklemek amac?yla
INSERT INTO OTUBUS(GELIS, GIDIS, UCRET)
VALUES(‘Ardahan’, ‘?zmir’, 50)
ALT SORGULAR
ANY
Tan?m : Bir sorgulama i?leminde belli bir ko?ula ba?lanan veri alan?n?n ve bu alandaki de?erlerin, kendisi d???ndaki herhangi bir de?er ya da de?erlere göre dikkate al?nmas?n? sa?lar.ALL deyimi ile bütün kay?tlar dikkate al?narak gerçekle?tirilen i?lemin herhangi bir kay?t dikkate al?narak gerçekle?tirilmesini sa?lar.
Dizilim
ko?ul ANY (ko?ul | sorgu);
Örnek
- OGRENCILER tablosundaki verileri sorgularken ORTALAMA isimli veri alan?nda bulunan de?erleri DOGYER isimli veri alan?ndaki “ERZURUM” de?erine sahip olanlar?n herhangi birisinden büyük olanlar? elde etmek amac?yla
SELECT * FROM OGRENCILER
WHERE ORTALAMA > ANY
(SELECT ORTALAMA FROM OGRENCILER
WHERE DOGYER = ‘ERZURUM’);
- SOFORLER tablosundaki verileri sorgularken, KATKI isimli veri alan?ndaki de?eri, KESINTI alan?ndaki de?erlerin 115 say?s?na e?it olanlar?n herhangi birini dikkate alarak elde etmek amac?yla
SELECT * FROM SOFORLER
WHERE KATKI = ANY
(SELECT KATKI FROM SOFORLER
WHERE KESINTI = 115);
ALL
Tan?m : Bir sorgulama i?leminde belli bir ko?ulu sa?layan veri alan?ndaki de?erin, ba?ka bir ko?ulu sa?layan di?er bir veri alan?ndaki de?erlerin tamam?n? dikkate alarak sorgulanmas?n? sa?lar. ANY deyimi ile gerçekle?tirilen i?lemin herhangi bir kay?t yerine bütün kay?tlar dikkate al?narak gerçekle?tirilmesini sa?lar.
Dizilim
(ko?ul) ALL (ko?ul | sorgu);
Örnek
- OGRENCILER tablosundaki verileri sorgularken ORTALAMA isimli veri alan?nda bulunan de?erleri DOGYER isimli veri alan?ndaki “ERZURUM” de?erine sahip olanlar?n tümünden büyük olanlar? elde etmek amac?yla
SELECT * FROM OGRENCILER
WHERE ORTALAMA > ALL
(SELECT ORTALAMA FROM OGRENCILER
WHERE DOGYER = ‘ERZURUM’);
- SOFORLER tablosundaki verileri sorgularken, KATKI isimli veri alan?ndaki de?eri, KESINTI alan?ndaki de?erlerin 115 say?s?na e?it olanlar?n tümünü dikkate alarak elde etmek amac?yla
SELECT * FROM SOFORLER
WHERE KATKI = ALL
(SELECT KATKI FROM SOFORLER
WHERE KESINTI = 115);
UNION
Tan?m : Birden fazla sorgu cümleci?inin birle?tirilmesini sa?lar.
Dizilim
(sorgu1) UNION (sorgu2);
Örnek
- KAMYON tablosundaki veriler üzerinde gerçekle?tirilmesi dü?ünülen iki farkl? sorguyu birle?tirmek amac?yla
(SELECT * FROM KAMYON WHERE UTRH = ’01/01/2005′)
UNION
(SELECT * FROM KAMYON WHERE CTRH = ’01/05/2005);
INTERSECT
Tan?m : Bir tabloya ait sorgulama i?leminde her iki ko?ulu da tam olarak sa?layan verilerin elde edilmesini sa?lar. Yani, her iki sorguya ait ortak elemanlar?n elde edilmesi sa?lan?r.Matematikteki kümeler kavram? dikkate al?nd???nda; A kümesinde ve B kümesinde olan elemanlar?n olu?turdu?u A n B (A kesi?im B) kümesi elde edilmektedir.
Dizilim
(sorgu1) INTERSECT (sorgu2);
Örnek
- CALISANLAR tablosunda yer alan veriler içerisinden do?um yeri hem ARDAHAN hem de ERZURUM olan verileri DOGYER isimli veri alan?n? dikkate alarak elde etmek amac?yla
SELECT * FROM CALISANLAR
(SELECT ad, soyad FROM CALISANLAR WHERE dogyer = ‘ARDAHAN’
INTERSECT
SELECT ad, soyad FROM CALISANLAR WHERE dogyer = ‘ERZURUM’)
EXCEPT
Tan?m : ?ki tablonun sorgulanmas? i?leminde ya da bir tabloda iki farkl? sorgulama i?lemi yap?ld???nda, birinci tabloda (birinci sorgulama sonuçlar?n?n içerisinde) var olan ancak ikinci tabloda (ikinci sorgulama i?leminin sonuçlar? içerisinde) var olmayan verilerin elde edilmesini sa?lar.Matematikteki kümeler kavram? dikkate al?nd???nda; A kümesinde olan ancak B kümesinde olmayan elemanlar?n olu?turdu?u A \ B (A fark B) kümesi elde edilmektedir.
Dizilim
sorgu (sorgu1 EXCEPT sorgu2);
Örnek
- MISAFIRLER tablosundaki verileri sorgularken GELYER isimli veri alan?n? dikkate alarak “ARDAHAN” de?erine sahip olanlar? elde etmek ancak GIDYER isimli veri alan?ndaki de?eri “IZMIR” olmayan verileri elde etmek amac?yla
SELECT * FROM MISAFIRLER
(SELECT * FROM MISAFIRLER GELYER = “ARDAHAN”
EXCEPT
SELECT * FROM MISAFIRLER GIDYER = “IZMIR”)
EXISTS
Tan?m : Kendisinden sonra gelen sorgu cümlesi ile e?le?en en az bir kay?t mevcut ise “DO?RU” mant?ksal do?ruluk de?erinin üretilmesini sa?lar. Kendisiyle birlikte AND, OR ve NOT mant?ksal i?leçleri kullan?labilir.
Dizilim
(WHERE) EXIST (sorgu);
Örnek
- CALISANLAR tablosundaki verilerden SICIL isimli veri alan?ndaki de?eri, ATANANLAR tablosundaki GSICIL isimli veri alan?ndaki de?er ile e?le?enleri ve AYER isimli veri alan?ndaki de?eri “KARS” olan verileri elde etmek amac?yla
SELECT * FROM calisanlar
WHERE EXISTS
(SELECT * FROM atananlar WHERE sicil = gsicil AND ayer = ‘KARS’);
NOT EXISTS
Tan?m : Kendisinden sonra gelen sorgu cümlesi ile e?le?en en az bir kayd?n mevcut olmamas? söz konusu ise “DO?RU” mant?ksal do?ruluk de?erinin üretilmesini sa?lar. Kendisiyle birlikte AND, OR ve NOT mant?ksal i?leçleri kullan?labilir.
Dizilim
(WHERE) NOT EXISTS (sorgu);
Örnek
- CALISANLAR tablosundaki verilerden SICIL isimli veri alan?ndaki de?eri, ATANANLAR tablosundaki GSICIL isimli veri alan?ndaki de?er ile e?le?enlerin d???nda kalanlar? (e?le?meyenleri) ve AYER isimli veri alan?ndaki de?eri “KARS” olmayan verileri elde etmek amac?yla
SELECT * FROM calisanlar
WHERE NOT EXISTS
(SELECT * FROM atananlar WHERE sicil = gsicil AND ayer = ‘KARS’);
Birle?ik Sorgu ??lemleri
Farkl? tablolar? kullanarak sorgulama i?lemini gerçekle?tirme, ayn? tablonun farkl? isimlerini kullanarak sorgulama ve iç içe sorgu cümlelerinin olu?turulmas? mümkündür. ?ç içe sorgu cümlelerinin olu?turulmas? d???nda kalan sorgu i?lemlerinde dikkate al?nan veri alanlar?na ait özniteliklerin benzer olmas? zorunludur.
- CALISANLAR tablosundaki DYER isimli veri alan? ile ATANANLAR tablosundaki AYER isimli veri alan?n? dikkate alarak, her iki veri alan?nda ayn? de?ere sahip olanlar? sorgulamak amac?yla
SELECT * FROM calisanlar, atananlar
WHERE calisanlar.dyer = atananlar.ayer;
diziliminin kullan?lmas? yeterlidir. Burada DYER ve AYER isimli veri alanlar?n?n ayn? özniteli?e sahip oldu?u kabul edilmi?tir.
- ARACLAR tablosunu A1 ve A2 ismiyle kullanarak (ARACLAR tablosuna A1 ve A2 isimli takma adlar vererek), A1 tablosundaki SERINO isimli veri alan? ile A2 tablosundaki PARCANO isimli veri alan?n? kar??la?t?r?p her iki alanda ayn? de?erlere sahip olan verileri sorgulamak amac?yla
SELECT * FROM araclar a1 a2
WHERE a1.serino = a2.parcano;
diziliminin kullan?lmas? yeterlidir.
- CALISANLAR tablosunda yer alan tüm kay?tlar? listelerken SSK_SICIL isimli veri alan?n? dikkate almak ve bu i?lemi yaparken de AYRILANLAR tablosunda AY_TARIH de?eri “04/09/2000″ olan verileri kullanmak için
SELECT * FROM calisanlar WHERE ssk_sicil
IN(SELECT * FROM ayrilanlar WHERE ay_tarih = ’04/09/2000′);
diziliminin uygulanmas? yeterlidir. Bu dizilimden de görülece?i gibi “IN” deyimi farkl? bir ?ekilde kullan?lm??t?r.
DDL
(DATA DEF?N?T?ON LANGUAGE) : VER? TANIMLAMA D?L?.
CREATE TABLE
Tan?m : Üzerinde çal??ma yap?lan veritaban? içerisinde yeni bir tablonun olu?turulmas?n? sa?lar.
Dizilim
CREATE TABLE tablo_ad? (alan_ad?1 alan_tipi1, …, alan_ad?N alan_tipiN);
Örnek
- Üzerinde çal??ma yap?lan veritaban? içerisinde KRES isimli bir tabloyu NUMARA, AD, SOYAD ve YAS isimli veri alanlar? ile olu?turmak amac?yla
CREATE TABLE kres(numara SMALLINT, ad CHAR(10), soyad CHAR(10),
yas SMALLINT);
- Üzerinde çal??ma yap?lan veritaban? içerisinde ZIYARETCI isimli bir tabloyu AD, SOYAD, ELMEK, ACIKLAMA1 ve ACIKLAMA2 isimli veri alanlar? ile olu?turmak amac?yla
CREATE TABLE ziyaretci(ad CHAR(10), soyad CHAR(10), elmek CHAR(30),
aciklama1 VARCHAR(100), aciklama2 VARCHAR(100));
- GONDERILER isimli bir tabloyu GGN, YGN ve ALICI isimli veri alanlar?n? kullanarak olu?turmak ve GGN isimli veri alan?na bo? veri girilmemesini sa?lamak amac?yla
CREATE TABLE gonderiler(GGN INTEGER NOT NULL, YGN SMALLINT,
ALICI CHAR(30));
CREATE INDEX
Tan?m : Bir tablodaki belirli veri alanlar?n? dikkate alarak bir dizin olu?turulmas?n? sa?lar.
Dizilim
CREATE INDEX dizin_ad? ON tablo_ad?(alan_ad?1, …, alan_ad?N);
Örnek
- CALISANLAR tablosundaki AYER isimli veri alan?n? dikkate alarak (AYER isimli veri alan?n? dizin anahtar? olarak kullanarak) GIDENLER isimli bir dizini artan s?rada olu?turmak amac?yla
CREATE INDEX gidenler ON calisanlar (ayer);
Bu dizini azalan s?rada olu?turmak amac?yla da
CREATE INDEX gidenler ON calisanlar (ayer DESC);
- ARACLAR tablosundaki SAD, SSOYAD ve PLAKA alanlar?n? dikkate alarak PLAKALI_ARACLAR isimli bir dizin olu?turmak amac?yla
CREATE INDEX plakali_araclar ON araclar(sad, ssoyad, plaka);
Olu?turulan bu dizindeki tüm veri de?erleri artan s?rada olacakt?r. E?er PLAKA isimli veri alan?ndaki veriler azalan s?rada dizine yerle?tirilmek istenirse
CREATE INDEX plakali_araclar ON araclar(sad, ssoyad, plaka DESC);
UNIQUE
Tan?m : Bir dizin olu?turulurken tekrarl? kay?tlar?n girilmesini engeller.
Dizilim
CREATE UNIQUE INDEX dizin_ad? ON tablo_ad?(alan_ad?1, …, alan_ad?N);
Örnek
- CALISANLAR tablosundaki AYER isimli veri alan?n? kullanarak AYRILANLAR isimli bir dizin olu?tururken terkarl? kay?tlar?n olu?turulmas?n? engellemek amac?yla
CREATE UNIQUE INDEX ayrilanlar ON calisanlar(ayer);
CREATE VIEW
Tan?m : Bir tabloda yer alan verilerin özel bir bak?? ortam?nda (alan?nda) saklanmas?n? sa?lar. Söz konusu veriler, “genel” de?il de “özel” özniteli?ine sahip olmas? istenen verilerdir. Olu?turulan söz konusu bak?? ortam?na “sanal tablo” da denilmektedir.
Dizilim
CREATE VIEW bak??_ad? AS (sorgu);
CREATE VIEW bak??_ad?(alan1, …, alanN) AS (sorgu);
Örnek
- OGRENCI tablosunda yer alan verilere ait AD, SOYAD, DOGTAR isimli veri alanlar?n? kullanarak ilgili verileri TEMEL isimli bir bak?? ortam?na ayn? veri alan? isimleri ile kaydetmek amac?yla
CREATE VIEW TEMEL
AS SELECT AD, SOYAD, DOGTAR FROM OGRENCI;
- CALISANLAR tablosunda yer alan verilere ait SICIL, BOLNO, KATSAY isimli veri alanlar?n? kullanarak ilgili verileri ONEMLI isimli bir bak?? ortam?na SICIL_NO, BOLUM_NO ve KATSAYI isimli veri alanlar? ile kaydetmek amac?yla
CREATE VIEW ONEMLI(SICIL_NO, BOLUM_NO, KATSAYI)
AS SELECT SICIL, BOLNO, KATSAY FROM CALISANLAR;
WITH CHECK OPTION
Tan?m : Bir bak?? ortam?n?n olu?turulmas? i?lemi s?ras?nda kullan?lan bir deyimdir. Olu?turulan bak?? ortam?na sonradan eklenebilmesi olas? tutars?z verilere kar?? ilgili bak?? ortam?n?n veri bütünlü?ünü sa?lar.
Dizilim
(bak??_dizilimi) WITH CHECK OPTION;
Örnek
- ISCILER tablosundaki verileri SICIL, BRUT ve NET isimli veri alanlar?n? dikkate alarak ve de BRUT isimli veri alan?ndaki de?eri 500 den büyük olanlar? seçerek OZEL isimli bir bak?? ortam?na aktarmak ve bu i?lemi yaparken de olu?turulan bak?? ortam?n?n veri bütünlü?ünü sa?lamak amac?yla
CREATE VIEW OZEL
AS SELECT SICIL, BRUT, NET FROM ISCILER WHERE BRUT > 500
WITH CHECK OPTION;
Olu?turulan OZEL isimli bak?? ortam?na BRUT isimli veri alan?ndaki de?eri 500 den küçük olan bir veri eklenmek istendi?inde hata iletisi/iletileri ile kar??la??l?r
ALTER TABLE
Tan?m : Bir tablonun yap?s? üzerinde veri alan? ekleme, veri alan?n?n özelliklerini de?i?tirme, veri alan? silme, tablo ad?n? de?i?tirme ve veri alan? ad?n? de?i?tirme i?leminin yap?lmas?n? sa?lar.
Dizilim
ALTER TABLE tablo_ad? ADD alan_ad?1 alan_tipi1, …, alan_ad?N alan_tipiN;
ALTER TABLE tablo_ad? MODIFY alan_ad?1 alan_tipi1, …, alan_ad?N alan_tipiN;
ALTER TABLE tablo_ad? DROP alan_ad?1, …, alan_ad?N;
ALTER TABLE tablo_ad?
RENAME eski_alan_ad?1 yeni_alan_ad?1, …, eski_alan_ad?N yeni_alan_ad?N;
ALTER TABLE tablo_ad? RENAME TABLE yeni_tablo_ad?;
ADD
Tan?m : Bir tabloya yeni bir veri tipine dayal? yeni bir veri alan?n?n eklenmesini sa?lar. ALTER TABLE deyimi ile birlikte kullan?ld???nda anlaml?d?r.
Dizilim
ALTER TABLE tablo_ad? ADD alan_ad?1 alan_tipi1, …, alan_ad?N alan_tipiN;
Örnek
- CALISANLAR tablosuna 11 karakterden olu?an bir veri alabilecek GEZINGEN isimli bir veri alan? eklemek amac?yla
ALTER TABLE calisanlar ADD gezingen CHAR(11);
diziliminin kullan?lmas? yeterlidir. Eklenen GEZINGEN isimli veri alan?na bo? de?erlerin girilmesi engellenmek isteniyorsa
ALTER TABLE calisanlar ADD gezingen CHAR(11) NOT NULL;
MODIFY
Tan?m : Bir tablodaki veri alanlar?na ait özelliklerin (veri tiplerinin) de?i?tirilmesini sa?lar.
Dizilim
ALTER TABLE tablo_ad? MODIFY alan_ad?1 alan_tipi1, …, alan_ad?N alan_tipiN;
Örnek
- ISCILER tablosundaki AD isimli veri alan?n?n özelli?ini (veri tipini) 15 karakter uzunlu?unda ve KESINTI isimli veri alan?n?n özelli?ini (veri tipini) INTERGER olarak de?i?tirmek amac?yla
ALTER TABLE isciler MODIFY ad CHAR(15), kesinti INTEGER;
DROP
Tan?m : Bir tablodaki veri alanlar?n?n varl?ksal olarak silinmesini sa?lar.
Dizilim
ALTER TABLE tablo_ad? DROP alan_ad?1, …, alan_ad?N;
Örnek
- OTUBUS tablosundaki EVARIS ve YVARIS isimli veri alanlar?n? varl?ksal olarak silmek amac?yla
ALTER TABLE otubus DROP evaris, yvaris;
RENAME
Tan?m : Bir tablodaki veri alanlar?n?n adlar?n?n de?i?tirilmesini sa?lar.
Dizilim
ALTER TABLE tablo_ad?
RENAME eski_alan_ad?1 yeni_alan_ad?1, …, eski_alan_ad?N yeni_alan_ad?N;
Örnek
- KAMYONLAR tablosundaki ARAC_MARKASI isimli veri alan?n?n ad?n? AMARKA ve ARAC_PLAKASI isimli veri alan?n?n ad?n? APLAKA olarak de?i?tirmek amac?yla
ALTER TABLE kamyonlar
RENAME arac_markasi amarka, arac_plakasi aplaka;
RENAME TABLE
Tan?m: Bir tabloya ait ad?n de?i?tirilmesini sa?lar.
Dizilim
ALTER TABLE tablo_ad? RENAME TABLE yeni_tablo_ad?;
Örnek
- AMATORLER tablosunun ad?n? OZENGENLER olarak de?i?tirmek amac?yla
ALTER TABLE amatorler RENAME TABLE ozengenler;
DROP TABLE
Tan?m : Bir tablodaki veri alanlar?n?n varl?ksal olarak silinmesini sa?lar.
Dizilim
ALTER TABLE tablo_ad? DROP alan_ad?1, …, alan_ad?N;
Örnek
- OTUBUS tablosundaki EVARIS ve YVARIS isimli veri alanlar?n? varl?ksal olarak silmek amac?yla
ALTER TABLE otubus DROP evaris, yvaris;
DROP INDEX
Tan?m : Bir dizinin (dizin alan?n?n) varl?ksal olarak silinmesini sa?lar.
Dizilim
DROP INDEX dizin_ad?;
Örnek
- Üzerinde çal??ma yap?lan veri taban?nda bulunan GECICI_ISCILER isimli dizin alan?n? varl?ksal olarak silmek amac?yla
DROP INDEX gecici_isciler;
DROP VIEW
Tan?m : Bir bak?? alan?n?n varl?ksal olarak silinmesini sa?lar.
Dizilim
DROP VIEW bak??_ad?;
Örnek
- Üzerinde çal??ma yap?lan veri taban?nda olu?turulan “YIL2001″ isimli bak?? alan?n? varl?ksal olarak silmek amac?yla
DROP VIEW yil2001;
SAVE TO TEMP
Tan?m : Bir tablo üzerinde gerçekle?tirilen sorgulaman?n ya da sorgulamalar?n sonucunun ayr? bir tablo olarak saklanmas?n? sa?lar.
Dizilim
(sorgu) SAVE TO TEMP tablo_ad?;
Örnek
- OGRENCI tablosunda yer alan verilerden do?um tarihi 01/01/1980 den önce olanlar? DOGTAR isimli veri alan?n? kullanarak KUCUKLER isimli bir tabloya kaydetmek amac?yla
SELECT * FROM OGRENCI
WHERE DOGTAR < “01/01/1980″
SAVE TO TEMP KUCUKLER;
diziliminin kullan?lmas? yeterlidir. Bu dizilimin uygulanmas? sonucu KUCUKLER tablosu geçici olarak saklan?r. Bunu kal?c? yapmak amac?yla “KEEP” anahtar kelimesi kullan?lmal?d?r. Bu durumda, ilgili dizilim
SELECT * FROM OGRENCI
WHERE DOGTAR < “01/01/1980″
SAVE TO TEMP KUCUKLER KEEP;


25/07/2010 - 15:54
Amiable post and this fill someone in on helped me alot in my college assignement. Thanks you seeking your information.
13/11/2010 - 12:22
Great site. A lot of useful information here. I’m sending it to some friends!