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;