You are on page 1of 85

Bilgiye....

Sadettin POLAT

(SQL) Structured Query Language (Yaplandrlm Sorgu Dili) indekiler

nsz Veri Kullanma Dili Deyimler

Select Deyimi .................................................................... 3 Delete Deyimi .................................................................... 8 Insert Into Deyimi .............................................................. 9 Select...Into Deyimi ............................................................11 Uptade Deyimi.................................................................... 12 Transform Deyimi ............................................................... 14 Execute Deyimi................................................................... 17 TRANSACTION Deyimi.......................................................... 18

Yan Tmceler From Yan Tmcesi ................................................................ 18 Group By Yan Tmcesi........................................................... 22 Having Yan Tmcesi.............................................................. 25 In Yan Tmcesi .................................................................... 26 Order By Yan Tmcesi ........................................................... 28 Where Yan Tmcesi ............................................................... 29 Constraint Yan Tmcesi .......................................................... 32 Procedure Yan Tmcesi ........................................................... 34

lemler Union lemi .......................................................................... 36 INNER JOIN lemi .................................................................. 37 LEFT JOIN, RIGHT JOIN lemleri .............................................. 39

leler Sql Toplam levleri Veri Tanm Dili

Like leci ............................................................................... 41 Between...And leci ................................................................ 43 In leci ................................................................................. 43

Avg levi ......................................................................................... 45 Count levi ...................................................................................... 46 First, Last levi ................................................................................ 47 Min, Max levi ................................................................................. 50 Stdev, StDevP levi .......................................................................... 51 Sum levi ........................................................................................ 52 Var, VarP levi .................................................................................. 53

Sql (Structured Query Language) Saadettin POLAT 1/85

Dier

Create Table Deyimi Create Index Deyimi Create Procedure Deyimi Create User veya Group Deyimi Create View Deyimi Add User Deyimi Drop User veya Group Deyimi Alter Table Deyimi Alter User veya Database Deyimi Drop Deyimi Grant Deyimi Revoke Deyimi


Szlk

ALL, DISTINCT, DISTINCTROW, TOP Dorulamalar ............................ 67 WITH OWNERACCESS OPTION Bildirimi ............................................. 71 SQL levlerinde Alanlar Hesaplama .................................................. 71 PARAMETERS Bildirimi ..................................................................... 72 SQL Alt Sorgular ... ......................................................................... 74 SQL Ayrlm Szckleri .................................................................... 77 SQL Veri Trleri ............................................................................... 80 ODBC Tek Verili levleri ................................................................... 81 Microsoft Jet SQL ve ANSI SQL Karlatrmas ..................................... 82 Microsoft Jet SQL'in Gelimi zellikleri ....... ....................................... 83 Microsoft Jet SQL inde Desteklenmeyen ANSI SQL zellikleri ............... 83 Edeer ANSI SQL Veri Trleri ........................................................... 83 Dize Karlatrmasnda Joker Karakterlerini Kullanma .......................... 84

Balang ......................................................................................... 84 Aralk .............................................................................................. 85 Text Veri tr .................................................................................. 85 Unicode Temsil Biimi ........................................................................ 85 Yordam ........................................................................................... 85 Grnm ......................................................................................... 85

nsz Bu dokman benim gibi sql renmek isteyenler ve sql hakknda Trke kaynak bulamayanlar iin MS Accessin yardm blmnden yararlanarak hazrladm. tiraf etmek gerekirse her ne kadar yazlar hazr alsamda bu yazlar belirli bir dzene sokmak iin ok uratm. Bu dokmanda en ok kullanlan sql komutlarn aklama ve rnekleriyle birlikte bulacaksanz. Yararl olaca inancndaym. Belgede baz eksiklikler olabilir onlarda mazur grn. Son olarakta bu belgeyi baka yerlerde kullanmak isteyen arkadalarmz (yazlar iin deil nk ben yazmadm ) bu belgeyi hazrlamak iin sarf ettiim emei gz nnde bulundurup kaynak belirtirlerse sevinirim. Saadettin POLAT (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

Sql Nedir?

Sql (Structured Query Language) Saadettin POLAT 2/85

likisel veritabanlarn sorgulamak, gncellemek iin kullanlan bir dildir.

Sql Nerelerde Kullanlr? Programclkta (Delphi, VB v.b.), veritaban programlarnda ve veritabanna bal web sayfalarnda (Asp v.b.) kullanlr.

VER KULLANMA DL Deyimler o SELECT Deyimi Veritabanndan bir kayt kmesi eklinde bilgi dndrmek Microsoft Jet veritaban alt yapsna komut verir. Szdizimi SELECT [dorulama] { * | tablo.* | [tablo.]alan1 [AS dierad1] [, [tablo.]alan2 [AS dierad2] [, ...]]} FROM tabloifadesi [, ...] [IN dveritaban] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] [WITH OWNERACCESS OPTION] SELECT deyiminin blmleri unlardr: Blm dorulama Aklama u dorulamalardan biridir: ALL, DISTINCT, DISTINCTROW, or TOP. Dorulamay, dndrlecek kaytlarn saysn snrlandrmak iin kullanrsnz. Bunlarn hibiri belirtilmezse, varsaylan deer ALL'dur. Belirtilen tablodan veya tablolarda tm kaytlarn seileceini belirtir. inden kaytlarn seilecei alanlar ieren tablonun addr. Almak istediiniz verileri ieren alanlarn addr. Birden fazla alan yazarsanz, alanlar listelendikleri srada alnrlar. Tablodaki zgn stun adlar yerine, stun balklar olarak kullanlacak adlardr. Almak istediiniz verileri ieren tablo veya tablolarn addr. Tabloifadesi iindeki tablolardan, geerli veritaban iinde olmayanlar ieren veritabannn addr.

* tablo alan1, alan2 dierad1, dierad2 tabloifadesi dveritaban

Uyarlar Bu ilemi gerekletirmek iin, Microsoft Jet veritaban alt yaps, belirtilen tablo veya tablolar arar, seili stunlar tarar, ltlere uyan satrlar seer ve sonu satrlar belirtilen srada sralar veya gruplandrr. SELECT deyimleri veritabanndaki verileri deitirmezler. SELECT genellikle bir SQL deyiminin ilk szcdr. ou SQL deyimi SELECT veya SELECT...INTO deyimleridir. SELECT deyiminin en ksa szdizimi yledir: SELECT alanlar FROM tablo

Sql (Structured Query Language) Saadettin POLAT 3/85

Tablodaki tm dizinleri semek iin bir yldz (*) simgesi de kullanabilirsiniz. Aadaki rnek, alanlar tablosundaki tm alanlar seer. SELECT * FROM alanlar; FROM yan tmcesinde bir alan ad birden fazla tabloda yer alyorsa, alan adndan nce tablo adn ve ardndan . (nokta) iaretini yazn. Aadaki rnekte, Blm alan hem alanlar hem de Denetiler tablosunda bulunmaktadr. SQL deyimi, alanlar tablosundan blmleri ve Denetiler tablosundan deneti adlarn seer: SELECT alanlar.Blm, Denetiler.DenetiAd FROM alanlar INNER JOIN Denetiler WHERE alanlar.Blm = Denetiler.Blm; Bir RecordSet nesnesi oluturulduunda, Microsoft Jet veritaban alt yaps tablonun alan adn recordset nesnesi iinde Field nesnesi ad olarak kullanr. Farkl bir alan ad isterseniz veya alan oluturmak zere kullanlan ifadede bir ad belirtilmezse, AS sakl szcn kullann. Aadaki rnek, sonu recordset nesnesinde dndrlen field nesnesini adlandrmak iin Doum baln kullanr: SELECT DoumTarihi AS Doum FROM alanlar; Tanmsz veya yinelenen Alan nesne adlar dndren toplam ilevleri veya sorgular kullanrken, Field nesnesi iin farkl bir ad salamak zere AS yan tmcesini kullanmalsnz. Aadaki rnek, sonu RecordSet nesnesinde dndrlen Field nesnesini adlandrmak iin Merkez baln kullanr: SELECT COUNT(alanNo) AS Merkez FROM alanlar; Dndrlecek verileri daha fazla kstlamak veya dzenlemek zere, SELECT deyiminde dier yan tmceleri de kullanabilirsiniz. SELECT Deyimi, FROM Yan Tmcesi rnei Aadaki rneklerden bazlar, alanlar tablosunda Maa alannn bulunduunu varsayar. Bu alan gerekte Nortwind veritabannn alanlar tablosunda bulunmaz. Bu rnek, alanlar tablosundaki tm kaytlarn Ad ve Soyad alanlarn seen bir SQL deyimini temel alan bir Recordset devingen kme tr oluturur. Recordset nesnesinin ieriklerini Hata Ayklama penceresine yazdran EnumFields yordamn arr. Sub SelectX1() Dim dbs As Database, rst As Recordset ' Bu satr, bilgisayarnzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alanlar tablosundaki tm kaytlarn ad ve soyad ' deerlerini seer. Set rst = dbs.OpenRecordset("SELECT Soyad, " _ & "Ad FROM alanlar;") ' Yeni kayt kmesini balatr.

Sql (Structured Query Language) Saadettin POLAT 4/85

rst.MoveLast ' Recordset ieriklerini yazdrmak zere EnumFields ' yordamn arr. EnumFields rst,12 dbs.Close End Sub Bu rnek, Posta Kodu alannda girilmi deeri olan kayt saysn sayar ve geri dndrlen alan Saya olarak adlandrr. Sub SelectX2() Dim dbs As Database, rst As Recordset ' Bu satr, bilgisayarnzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' PostaKodu deeri olan kayt saysn sayar ve ' sonucu Saya alannda verir. Set rst = dbs.OpenRecordset("SELECT Count " _ & "(PostaKodu) AS Saya FROM Mteriler;") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdrmak zere EnumFields ' yordamn arr. Alan geniliini 12 yapar. EnumFields rst, 12 dbs.Close End Sub Bu rnek, alan saysn ve maalarn ortalamas ile en yksek deerini gsterir. Sub SelectX3() Dim dbs As Database, rst As Recordset ' Bu satr, bilgisayarnzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alan saysn sayar, ortalama maa hesaplar ' ve en yksek maa verir. Set rst = dbs.OpenRecordset("SELECT Count (*) " _ & "AS Toplamalan, Avg(Maa) " _

Sql (Structured Query Language) Saadettin POLAT 5/85

& "AS OrtalamaMaa, Max(Maa) " _ & "AS EnYksekMaa FROM alanlar;") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 17 dbs.Close End Sub EnumFields Sub yordam, aran yordamdan bir Recordset nesnesi aktarr. Daha sonra, Recordset alanlarn biimlendirir ve Hata Ayklama penceresine yazdrr. intFldLen deikeni, istenen basl alan geniliidir. Baz alanlar dzgn baslmadan kesilebilir. Sub EnumFields(rst As Recordset, intFldLen As Integer) Dim lngRecords As Long, lngFields As Long Dim lngRecCount As Long, lngFldCount As Long Dim strTitle As String, strTemp As String ' lngRecords deikenini Recordset iindeki ' kayt saysna eitler. lngRecords = rst.RecordCount ' lngFields deikenini Recordset iindeki ' alan saysna eitler. lngFields = rst.Fields.Count

Debug.Print "Kayyt kmesinde " & lngRecords _ & " kayyt " & lngFields _ & " alan var." Debug.Print

' Stun baln yazdrmak zere bir dize oluturur. strTitle = "Kayyt " For lngFldCount = 0 To lngFields - 1 strTitle = strTitle _ & Left(rst.Fields(lngFldCount).Name _

Sql (Structured Query Language) Saadettin POLAT 6/85

& Space(intFldLen), intFldLen) Next lngFldCount

' Stun baln yazdrr. Debug.Print strTitle Debug.Print

' Recordset iinde dnerek kayyt sayysyny ve ' alan deerlerini yazdrr. rst.MoveFirst For lngRecCount = 0 To lngRecords - 1 Debug.Print Right(Space(6) & _ Str(lngRecCount), 6) & " "; For lngFldCount = 0 To lngFields - 1 ' Null deerleri denetler. If IsNull(rst.Fields(lngFldCount)) Then strTemp = "<null>" Else ' strTemp ieriini alan ierii olarak ayarlar. Select Case _ rst.Fields(lngFldCount).Type Case 11 strTemp = "" Case dbText, dbMemo strTemp = _ rst.Fields(lngFldCount) Case Else strTemp = _ str(rst.Fields(lngFldCount)) End Select End If Debug.Print Left(strTemp _ & Space(intFldLen), intFldLen);

Sql (Structured Query Language) Saadettin POLAT 7/85

Next lngFldCount Debug.Print rst.MoveNext Next lngRecCount End Sub

DELETE Deyimi WHERE yan tmcesini salayan FROM yan tmcesinde listelenen tablolardan bir veya daha fazlasndan kayt silen bir silme sorgusu oluturur. Szdizimi DELETE [tablo.*] FROM tablo WHERE lt DELETE deyiminin blmleri unlardr: Blm Tablo Tablo ltler Uyarlar DELETE, zellikle ok sayda kayt silmek istiyorsanz kullanldr. Veritabanndan tablonun tmn silmek iin, Execute yntemini DROP deyimi ile birlikte kullanabilirsiniz. Ancak tabloyu silerseniz, tablonun yaps da kaybolur. Buna karlk DELETE'i kullanrsanz yalnzca veriler silinir, tablo yaps ve alan zellikleri ve dizin gibi tablo zelliklerinin tm bozulmadan kalr. Dier tablolarla bir-ok ilikisi olan tablolardan kayt silmek iin DELETE'i kullanabilirsiniz. Ardarda silme ilemleri, ilikinin "bir" tarafnda olan tabloda bulunan bir kaydn silinmesi halinde, ilikinin "ok" tarafnda olan tablodaki ilgili kaytlarn silinmesine neden olur. rnein, Mteriler ve Sipariler tablolarndaki ilikide, Mteriler tablosu ilikinin "bir" tarafnda ve Sipariler tablosu da "ok" tarafndadr. Ardarda silme seenei belirtilmise, Mteriler tablosunda bir kayt silindiinde ilgili Sipariler tablosu kaytlar da silinecektir. Bir silme sorgusu, yalnzca belirli alanlardaki verileri deil kaytlarn tamamn siler. Yalnzca belirli bir alandaki verileri silmek istiyorsanz, deerleri Null olarak deitiren bir gncelletirme sorgusu oluturun. nemli Aklama inden kaytlarn silinecei tablonun istee bal addr. inden kaytlarn silinecei tablonun addr. Silinecek kaytlar belirleyen bir ifadedir.

Silme sorgusunu kullanarak kayt sildikten sonra, ilemi geri alamazsnz. Hangi kaytlarn silindiini bilmek istiyorsanz, sonular nce ayn lt kullanan bir seme sorgusu ile denetleyin ve sonra silme sorgusunu altrn. Her zaman verilerinizin yedeklerini saklayn. Yanl kaytlar silerseniz, kaytlar yedek kopyalardan alabilirsiniz.

DELETE Deyimi rnei

Sql (Structured Query Language) Saadettin POLAT 8/85

Bu rnek, nvan Eitmen olan tm alanlarn kaytlarn siler. FROM yan tmcesi yalnzca bir tablo ieriyorsa, DELETE deyiminde tablo adn listelemeniz gerekmez. Sub DeleteX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' nvan Eitmen olan alanlarn kaytlarn siler. dbs.Execute "DELETE * FROM " _ & "alanlar WHERE nvan = 'Eitmen';" dbs.Close End Sub

INSERT INTO Deyimi Bir tabloya bir veya daha ok sayda kayt ekler. Buna ekleme sorgusu da denir. Szdizimi ok sayda kayt ekleme sorgusu: INSERT INTO hedef [(alan1[, alan2[, ...]])] [IN dveritaban] SELECT [kaynak.]alan1[, alan2[, ...] FROM tabloifadesi Tek kayt ekleme sorgusu: INSERT INTO hedef [(alan1[, alan2[, ...]])] VALUES (deer1[, deer2[, ...]) INSERT INTO deyiminin blmleri unlardr: Blm Hedef alan1, alan2 Aklama ine kayt eklenecek tablo veya sorgunun addr. Bir hedef deikeninin ardndan geliyorsa iine veri eklenecek alanlarn ad, bir kaynak deikeninin ardndan geliyorsa iinden veri alnacak alanlarn addr. Bir d veritabanna olan yoldur. Yolun aklamas iin IN yan tmcesine bakn. inden kaytlarn kopyalanaca tablo veya sorgunun addr. inden kaytlarn eklendii tablo veya tablolarn addr. Bu deiken; tek bir tablo ad , kaydedilmi bir sorgu ad veya INNER JOIN, LEFT JOIN veya RIGHT JOIN sonucu olan bir birleim olabilir. Yeni kaydn belirli alanlarna eklenecek olan deerlerdir. Her deer, listede deerin konumuna gre ilgili alann iine eklenir: deer1 yeni kaydn alan1 alanna, deer2 yeni kaydn alan2 alanna eklinde eklenir. Deerleri virgl ile ayrmal ve metin alanlarn trnak imleri (' ') iine almalsnz.

dveritaban Kaynak tabloifadesi

deer1, deer2

Uyarlar

Sql (Structured Query Language) Saadettin POLAT 9/85

INSERT INTO deyimini, yukarda gsterildii gibi tek kayt ekleme sorgusu szdizimini kullanarak tabloya tek bir kayt eklemek zere kullanabilirsiniz. Bu durumda kodlarnz, kaydn her alannn adn ve deerini belirtir. zerine bir deerin atanaca kayt alanlarn ve bu alanlarn deerlerini belirtmelisiniz. Her alan tek tek belirtmezseniz, eksik stunlar iin varsaylan deer veya Null deeri eklenir. Kaytlar tablonun sonuna eklenir. Yukarda ok sayda kayt ekleme sorgusu szdiziminde gsterildii gibi, SELECT ... FROM yan tmcesini kullanarak bir kayt kmesini bir baka tablodan veya sorgudan eklemek zere INSERT INTO'yu da kullanabilirsiniz.Bu durumda SELECT yan tmcesi, belirtilen hedef tabloya eklenecek alanlar belirtir. Kaynak veya hedef tablo, bir tablo veya sorguyu belirtebilir. Bir sorgu belirtilirse, Microsoft Jet veritaban alt yaps, sorgu tarafndan belirtilen herhangi bir tabloya ve tm tablolara kayt ekler. INSERT INTO istee baldr ancak belirtilirse, SELECT deyiminden nce gelir. Hedef tablonuzda bir birincil anahtar varsa, birincil anahtar alan veya alanlarna benzersiz, Null olmayan deerler eklediinizden emin olun; aksi takdirde Microsoft Jet veritaban alt yaps kaytlar eklemez. inde OtomatikSay alan olan bir tabloya kayt ekler ve eklenen kaytlarn numaralarn deitirmek isterseniz, sorgunuzda OtomatikSay alann bulundurmayn. OtomatikSay alannn zgn deerlerini korumak istiyorsanz, alan sorgu iinde bulundurun. Kaytlar baka bir veritabanndaki tabloya eklemek iin IN yan tmcesini kullann. Yeni bir tablo oluturmak zere bir tablo oluturma sorgusu hazrlamak yerine SELECT... INTO deyimini kullann. Ekleme sorgusunu altrmadan nce hangi kaytlarn ekleneceini grmek iin, nce, ayn seim ltn kullanan bir seme sorgusu altrn ve sonular grn. Bir ekleme sorgusu, bir veya daha ok tablodaki kaytlar bir bakasna kopyalar. Eklediiniz kaytlar ieren tablolar, ekleme sorgusundan etkilenmezler. Bir baka tablodan var olan kaytlar eklemek yerine, VALUES yan tmcesini kullanarak, tek bir yeni kaydn tm alanlarnn deerlerini belirtebilirsiniz. Alan listesini yazmazsanz VALUES yan tmcesi tablodaki her alann deerini iermelidir; aksi takdirde INSERT ilemi baarsz olur. Oluturmak istediiniz her ek kayt iin, VALUES yan tmcesi ile birlikte ek bir INSERT INTO deyimi kullann. INSERT INTO Deyimi rnei Bu rnek, bulunduu varsaylan Yeni Mteriler tablosundaki tm mterileri seer ve bunlar Mteriler tablosuna ekler. Tek tek stunlar belirtilmezse, SELECT tablosu stun adlar ile, INSERT INTO tablosundaki stun adlar tam olarak elemelidir. Sub InsertIntoX1() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' Yeni Mteriler tablosundaki tm kaytlar seer ' ve bunlar Mteriler tablosuna ekler. dbs.Execute " INSERT INTO Mteriler " _ & "SELECT * " _

Sql (Structured Query Language) Saadettin POLAT 10/85

& "FROM [Yeni Mteriler];" dbs.Close End Sub Bu rnek alanlar tablosunda yeni bir kayt oluturur. Sub InsertIntoX2() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' alanlar tablosunda yeni bir kayt oluturur. Yeni ' kaydyn ady Gamze, soyady Etikan ve ' i nvan Eitmen'dir. dbs.Execute " INSERT INTO alanlar " _ & "(Ady,Soyady, nvan) VALUES " _ & "('Gamze', 'Etikan', 'Eitmen');" dbs.Close End Sub

SELECT...INTO Deyimi Bir tablo oluturma sorgusu oluturur. Szdizimi SELECT alan1[, alan2[, ...]] INTO yenitablo [IN dveritaban] FROM kaynak SELECT...INTO deyiminin blmleri unlardr: Blm alan1, alan2 Yenitablo Aklama Yeni tabloya kopyalanacak alanlarn addr. Oluturulacak tablonun addr. Standart adlandrma kurallarna uymaldr. Yenitablo, var olan bir tablonun ad ile aynysa, alglanabilir bir hata oluur. Bir d veritabanna olan yoldur. Yolun aklamas iin IN yan tmcesine bakn. inden kaytlarn seilecei var olan bir tablonun addr. Bu, tek veya ok tablo veya sorgu olabilir.

dveritaban kaynak

Uyarlar Kaytlarn arivini oluturmak, tablolar yedeklemek veya farkl bir veritabanna vermek zere veya belirli bir zaman aralndaki verileri grntleyen raporlarda temel olarak kullanmak zere tablolarn kopyalarn oluturmak iin tablo oluturma sorgularn kullanabilirsiniz. rnein, ayn

Sql (Structured Query Language) Saadettin POLAT 11/85

tablo oluturma sorgusunu her ay altrarak, Blgelere Gre Aylk Satlar raporunu oluturabilirsiniz. Notlar

Yeni tablo iin bir birincil anahtar tanmlamak isteyebilirsiniz. Tablo oluturduunuzda, yeni tablodaki alanlar, sorgunun temel ald tablolardaki her alann veri trnde ve alan boyutunda olurlar; ancak dier alan ve tablo zellikleri aktarlmaz. Var olan bir tabloya veri eklemek iin, bir ekleme sorgusu oluturmak yerine INSERT INTO deyimini kullann. Tablo oluturma sorgusunu altrmadan nce hangi kaytlarn seileceini grmek iin, nce, ayn seim ltn kullanan bir SELECT deyimi altrn ve sonular grn.

SELECT...INTO Deyimi rnei Bu rnek, alanlar tablosundaki tm kaytlar seer ve bunlar alanlar Yedei adl yeni bir tabloya ekler. Sub SelectIntoX() Dim dbs As Database Dim qdf As QueryDef ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alanlar tablosundaki tm kaytlar seer ' ve bunlar yeni alanlar Yedei tablosuna kopyalar. dbs.Execute "SELECT alanlar.* INTO " _ & "[alanlar Yedei] FROM alanlar;"

' Bu bir rnek olduu iin tabloyu siler. dbs.Execute "DROP TABLE [alanlar Yedei];"

dbs.Close End Sub

UPDATE Deyimi Belirtilen ltleri temel alan belirtilen tablodaki alanlarn deerlerini deitiren bir gncelletirme sorgusu oluturur. Szdizimi

Sql (Structured Query Language) Saadettin POLAT 12/85

UPDATE tablo SET yenideer WHERE lt; UPDATE deyiminin blmleri unlardr: Blm tablo yenideer ltler Aklama Deitirmek istediiniz verileri ieren tablonun addr. Gncelletirilen kaytlardaki belirli bir alana eklenecek deeri belirten bir ifadedir. Hangi kaytlarn gncelletirileceini belirleyen bir ifadedir. Yalnzca ifadeyi salayan kaytlar gncelletirilir.

Uyarlar UPDATE zellikle, ok sayda kayd deitirmek istediinizde veya deitirmek istediiniz kaytlar ok sayda tablo iinde iken kullanldr. Ayn anda ok sayda alan deitirebilirsiniz. Aadaki rnek Sipari Miktar deerlerini yzde 10 arttrr ve Navlun deerlerini ngiltere'deki tamaclar iin yzde 3 arttrr: UPDATE Sipariler SET SipariMiktar = SipariMiktar * 1.1, Navlun = Navlun * 1.03 WHERE lke = 'ngiltere'; nemli

UPDATE, bir sonu kmesi oluturmaz. Ayrca, gncelletirme sorgusunu kullanarak kaytlar gncelletirdikten sonra, ilemi geri alamazsnz. Hangi kaytlarn gncelletirildiini bilmek istiyorsanz, sonular nce ayn lt kullanan bir seme sorgusu ile denetleyin ve sonra gncelletirme sorgusunu altrn. Her zaman verilerinizin yedeklerini saklayn. Yanl kaytlar gncelletirirseniz, kaytlar yedek kopyalardan alabilirsiniz.

UPDATE Deyimi rnei Bu rnek, Raporla alannn deeri 2 olan tm alan kaytlarnn Raporla alann 5 olarak deitirir. Sub UpdateX() Dim dbs As Database Dim qdf As QueryDef ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' Raporla alanndaki deeri 2 olan tm alan ' kaytlarnn Raporla alannn deerini 5 olarak ' deitirir. dbs.Execute "UPDATE alanlar " _

Sql (Structured Query Language) Saadettin POLAT 13/85

& "SET Raporla = 5 " _ & "WHERE Raporla = 2;"

dbs.Close End Sub

TRANSFORM Deyimi Bir apraz sorgu oluturur. Szdizimi TRANSFORM toplamilevi semedeyimi PIVOT zetalan [IN (deer1[, deer2[, ...]])] TRANSFORM deyiminin blmleri unlardr: Blm toplamilevi semedeyimi zetalan deer1, deer2 Uyarlar Bir apraz sorguyu kullanarak verileri zetlerken, belirtilen alanlardaki veya ifadelerdeki deerleri stun balklar olarak seersiniz; bylece verileri, seme sorgusu ile olduundan daha ak bir biimde grntleyebilirsiniz. TRANSFORM istee baldr, ancak seildiinde, bir SQL dizesinin ilk deyimidir. Satr balklar olarak kullanlan alanlar belirten SELECT deyiminden ve satr gruplandrmasn belirten GROUP BY yan tmcesinden nce gelir. sterseniz, ek seim veya sralama ltleri belirten WHERE gibi dier yan tmceleri de bulundurabilirsiniz. Bir apraz sorguda alt sorgular dorulama olarak da kullanabilirsiniz (zellikle WHERE yan tmcesinde bulunanlar). zetalann dndrd deerler, sorgunun sonu kmesinde stun balklar olarak kullanlr. rnein, aylk satlarn sat deerlerini zetlemek, 12 stunu olan bir apraz sorgu oluturur. Balklar, istee bal IN yan tmcesinde listelenen sabit deerlerle (deer1, deer2 ) oluturmak zere zetalann kstlayabilirsiniz. Ek stunlar oluturmak iin, ilgili verileri olmayan sabit deerleri de bulundurabilirsiniz. TRANSFORM Deyimi rnei Bu rnek, 1994 ylnn her aylk dnemi iin alanlarn verdikleri sipari miktarn gsteren bir apraz sorgu oluturmak zere bir SQLTRANSFORM yan tmcesi kullanr. SQLTRANSFORMOutput ilevi, bu yordamn almas iin gereklidir. Sub TransformX1() Dim dbs As Database Dim strSQL As String Dim qdfTRANSFORM As QueryDef strSQL = "PARAMETERS prmYear SHORT; TRANSFORM " _ Aklama Seili veriler zerinde ilem yapan bir SQL toplam ilevidir. Bir SELECT deyimidir. Sorgunun sonu kmesinde stun bal oluturmakta kullanmak istediiniz alan veya ifadedir. Stun balklarn oluturmak zere kullanlan sabit deerlerdir.

Sql (Structured Query Language) Saadettin POLAT 14/85

& "Count(SipariNo) " _ & "SELECT Ady & "" "" & Soyady AS " _ & "TamAd FROM alanlar INNER JOIN Sipariler " _ & "ON alanlar.alanNo = " _ & "Sipariler.alanNo WHERE TarihAral " _ & "(""yyyy"", SipariTarihi) = [prmYear] "

strSQL = strSQL & "GROUP BY Ady & " _ & """ "" & Soyady " _ & "ORDER BY Ady & "" "" & Soyady " _ & "PIVOT TarihAral(""q"", SipariTarihi)"

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") Set qdfTRANSFORM = dbs.CreateQueryDef _ ("", strSQL)

SQLTRANSFORMOutput qdfTRANSFORM, 1994

dbs.Close End Sub Bu rnek, 1994 ylnn her aylk dnemi iin alanlarn verdikleri siparilerin toplam TL miktarn gsteren daha karmak bir apraz sorgu oluturmak zere bir SQLTRANSFORM yan tmcesi kullanr. SQLTRANSFORMOutput ilevi, bu yordamn almas iin gereklidir. Sub TransformX2() Dim dbs As Database Dim strSQL As String Dim qdfTRANSFORM As QueryDef strSQL = "PARAMETERS prmYear SMALLINT; TRANSFORM " _ & "Sum(AltToplam) SELECT Ady & "" """ _ & "& Soyady AS TamAdy " _ & "FROM alanlar INNER JOIN " _ & "(Sipariler INNER JOIN [Sipari Alt Toplamlar] " _

Sql (Structured Query Language) Saadettin POLAT 15/85

& "ON Sipariler.SipariNo = " _ & "[Sipari Alt Toplamlar].SipariNo) " _ & "ON alanlar.alanNo = " _ & "Sipariler.alanNo WHERE TarihAral " _ & "(""yyyy"", SipariTarihi) = [prmYear] "

strSQL = strSQL & "GROUP BY Ady & "" """ _ & "& Soyady " _ & "ORDER BY Ady & "" "" & Soyady " _ & "PIVOT TarihAral(""q"",SipariTarihi)"

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") Set qdfTRANSFORM = dbs.CreateQueryDef _ ("", strSQL)

SQLTRANSFORMOutput qdfTRANSFORM, 1994

dbs.Close End Sub Function SQLTRANSFORMOutput(qdfTemp As QueryDef, _ intYear As Integer)

Dim rstTRANSFORM As Recordset Dim fldLoop As Field Dim booFirst As Boolean qdfTemp.PARAMETERS!prmYear = intYear Set rstTRANSFORM = qdfTemp.OpenRecordset()

Debug.Print qdfTemp.SQL Debug.Print Debug.Print , , " Ay"

Sql (Structured Query Language) Saadettin POLAT 16/85

With rstTRANSFORM booFirst = True For Each fldLoop In .Fields If booFirst = True Then Debug.Print fldLoop.Name Debug.Print , ; booFirst = False Else Debug.Print , fldLoop.Name; End If Next fldLoop Debug.Print

Do While Not .EOF booFirst = True For Each fldLoop In .Fields If booFirst = True Then Debug.Print fldLoop Debug.Print , ; booFirst = False Else Debug.Print , fldLoop; End If Next fldLoop Debug.Print .MoveNext Loop End With

End Function

EXECUTE Deyimi Bir yordamn yrtlmesini balatmak iin kullanlr.

Sql (Structured Query Language) Saadettin POLAT 17/85

Szdizimi EXECUTE yordam [parametre1[, parametre2[, ...]] EXECUTE deyiminin blmleri unlardr: Blm yordam parametre1, parametre2 Aklama Yrtlecek yordamn addr. Yordam tarafndan tanmlanan parametrelerin deerleridir.

TRANSACTION Deyimi Dolaysz hareketleri balatmak ve sonulandrmak iin kullanlr. Szdizimi Yeni bir hareket balatma: BEGIN TRANSACTION Hareket srasnda gerekletirilmi tm ileri kaydederek hareketi sonlandrma: COMMIT [TRANSACTION | WORK] Hareket srasnda gerekletirilmi tm ileri geri alarak hareketi sonlandrma: ROLLBACK [TRANSACTION | WORK] Uyarlar Hareketler otomatik olarak balatlmaz. Bir hareketi balatmak iin, bunu BEGIN TRANSACTION'i kullanarak dolaysz olarak yapmalsnz. Hareketler iie en ok be dzeyde olabilirler. Bir alt dzey hareketini balatmak iin, var olan bir hareketin ierii iinde BEGIN TRANSACTION'i kullann. Hareketler, bal tablolarda desteklenmezler. Yan Tmceler FROM Yan Tmcesi SELECT deyiminde listelenen alanlar ieren tablolar veya sorgular belirtir. Szdizimi SELECT alanlistesi FROM tablodeyimi [IN dveritaban] FROM yan tmcesi ieren bir SELECT deyiminin blmleri unlardr: Blm alanlistesi Aklama Herhangi bir alan dierad, SQL toplam ilevi, dorulamalar (ALL, DISTINCT, DISTINCTROW veya TOP) veya dier SELECT deyimi seenekleri ile alnabilecek alan veya alanlarn ad. inden verilerin alnaca bir veya daha fazla tabloyu belirten bir ifadedir. fade; tek bir tablo ad, kaydedilmi bir sorgu ad veya INNER JOIN, LEFT JOIN veya RIGHT JOIN sonucu olan bir birleim olabilir. Tabloifadesi iindeki tm tablolar ieren d veritabannn tam yolu.

tabloifadesi

dveritaban

Sql (Structured Query Language) Saadettin POLAT 18/85

Uyarlar FROM gereklidir ve her SELECT deyiminin ardndan gelir. Tablodeyimi iindeki tablo adlarnn sras nemli deildir. Daha yksek bir baarm ve daha kolay kullanm salamak iin, d bir veritabanndan veri almak zere IN yan tmcesini kullanmak yerine bal tablo kullanmanz nerilir. Aadaki rnek, alanlar tablosundan nasl veri alabileceinizi gsterir: SELECT Soyad, Ad FROM alanlar; SELECT Deyimi, FROM Yan Tmcesi rnei Aadaki rneklerden bazlar, alanlar tablosunda Maa alannn bulunduunu varsayar. Bu alan gerekte Nortwind veritabannn alanlar tablosunda bulunmaz. Bu rnek, alanlar tablosundaki tm kaytlarn Ad ve Soyad alanlarn seen bir SQL deyimini temel alan bir Recordset devingen kme tr oluturur. Recordset nesnesinin ieriklerini Hata Ayklama penceresine yazdran EnumFields yordamn arr. Sub SelectX1() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alanlar tablosundaki tm kaytlarn ad ve soyad ' deerlerini seer. Set rst = dbs.OpenRecordset("SELECT Soyady, " _ & "Ad FROM alanlar;") ' Yeni kayt kmesini balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. EnumFields rst,12 dbs.Close End Sub Bu rnek, PostaKodu alannda girilmi deeri olan kayt saysn sayar ve geri dndrlen alan Saya olarak adlandrr. Sub SelectX2() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu

Sql (Structured Query Language) Saadettin POLAT 19/85

' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' PostaKodu deeri olan kayt saysn sayar ve ' sonucu Saya alanynda verir. Set rst = dbs.OpenRecordset("SELECT Count " _ & "(PostaKodu) AS Saya FROM Mteriler;") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Alan geniliini 12 yapar. EnumFields rst, 12 dbs.Close End Sub Bu rnek, alan saysn ve maalarn ortalamas ile en yksek deerini gsterir. Sub SelectX3() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alan saysn sayar, ortalama maa hesaplar ' ve en yksek maa verir. Set rst = dbs.OpenRecordset("SELECT Count (*) " _ & "AS Toplamalan, Avg(Maa) " _ & "AS OrtalamaMaa, Max(Maa) " _ & "AS EnYksekMaa FROM alanlar;") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 17 dbs.Close End Sub

Sql (Structured Query Language) Saadettin POLAT 20/85

EnumFields Sub yordam, aran yordamdan bir Recordset nesnesi aktarr. Daha sonra, Recordset alanlarn biimlendirir ve Hata Ayklama penceresine yazdrr. intFldLen deikeni, istenen basl alan geniliidir. Baz alanlar dzgn baslmadan kesilebilir. Sub EnumFields(rst As Recordset, intFldLen As Integer) Dim lngRecords As Long, lngFields As Long Dim lngRecCount As Long, lngFldCount As Long Dim strTitle As String, strTemp As String ' lngRecords deikenini Recordset iindeki ' kayt saysna eitler. lngRecords = rst.RecordCount ' lngFields deikenini Recordset iindeki ' alan saysna eitler. lngFields = rst.Fields.Count

Debug.Print "Kayyt kmesinde " & lngRecords _ & " kayyt " & lngFields _ & " alan var." Debug.Print

' Stun baln yazdrmak zere bir dize oluturur. strTitle = "Kayyt " For lngFldCount = 0 To lngFields - 1 strTitle = strTitle _ & Left(rst.Fields(lngFldCount).Name _ & Space(intFldLen), intFldLen) Next lngFldCount

' Stun baln yazdrr. Debug.Print strTitle Debug.Print

' Recordset iinde dnerek kayyt sayysyny ve ' alan deerlerini yazdrr. rst.MoveFirst

Sql (Structured Query Language) Saadettin POLAT 21/85

For lngRecCount = 0 To lngRecords - 1 Debug.Print Right(Space(6) & _ Str(lngRecCount), 6) & " "; For lngFldCount = 0 To lngFields - 1 ' Null deerleri denetler. If IsNull(rst.Fields(lngFldCount)) Then strTemp = "<null>" Else ' strTemp ieriini alan ierii olarak ayarlar. Select Case _ rst.Fields(lngFldCount).Type Case 11 strTemp = "" Case dbText, dbMemo strTemp = _ rst.Fields(lngFldCount) Case Else strTemp = _ str(rst.Fields(lngFldCount)) End Select End If Debug.Print Left(strTemp _ & Space(intFldLen), intFldLen); Next lngFldCount Debug.Print rst.MoveNext Next lngRecCount End Sub

GROUP BY Yan Tmcesi Belirtilen alan listesindeki benzer deerlere sahip kaytlar tek bir kayt olarak birletirir. SELECT deyiminde Sum veya Count gibi bir SQL toplam ilevi bulundurursanz, her kayt iin bir zet deer oluturulur. Szdizimi

Sql (Structured Query Language) Saadettin POLAT 22/85

SELECT alanlistesi FROM tablo WHERE lt [GROUP BY grupalanlistesi] GROUP BY yan tmcesi ieren bir SELECT deyiminin blmleri unlardr: Blm alanlistesi Aklama Herhangi bir alan dierad, SQL toplam ilevi, dorulamalar (ALL, DISTINCT, DISTINCTROW veya TOP) veya dier SELECT deyimi seenekleri ile alnabilecek alan veya alanlarn ad. inden kaytlarn seilecei tablonun addr. Ayrntl bilgi iin FROM yan tmcesine bakn. Seim lt. Deyim bir WHERE yan tmcesi ieriyorsa, Microsoft Jet veritaban alt yaps, kaytlara WHERE koullarn uyguladktan sonra deerleri gruplandrr. Kaytlar gruplandrmak iin kullanlan en ok 10 alann ad. Grupalanlistesi iindeki alan adlarnn sras, grupta en stten en alta doru gruplandrma dzeylerini belirler.

tablo ltler

grupalanlistesi

Uyarlar GROUP BY istee baldr. SELECT deyiminde SQL toplam ilevi yoksa zet deerler gz ard edilir. GROUP BY alanlarndaki Null deerleri gruplandrlr ve dikkate alnr. Ancak, Null deerleri herhangi bir SQL toplam ilevinde deerlendirilmez. Gruplandrmak istemediiniz satrlar darda tutmak iin WHERE yan tmcesini kullann ve kaytlar gruplandrma ileminden sonra szmek iin HAVING yan tmcesini kullann. GROUP BY alan listesindeki bir alan Not veya OLE Nesnesi verileri iermiyorsa, bu alan, SELECT deyiminde bulundurulmam olsa bile SELECT deyimi en az bir SQL toplam ilevi ieriyorsa, FROM yan tmcesinde listelenen tablolardaki herhangi bir alana bavurabilir. Microsoft Jet veritaban alt yaps Not veya OLE Nesnesi alanlarn gruplandramaz. SELECT alan listesindeki tm alanlar, ya GROUP BY yan tmcesinde ya da bir SQL toplam ilevinin deikeni olarak bulundurulmaldr. GROUP BY Yan Tmcesi rnei Bu rnek, benzersiz i nvanlarnn ve bu nvanlara sahip olan alan saysnn listesini verir. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub GroupByX1() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Her nvan iin, bu nvana sahip alanlar ' sayar. Set rst = dbs.OpenRecordset("SELECT nvan, " _ & "Count([nvan]) AS Saya " _

Sql (Structured Query Language) Saadettin POLAT 23/85

& "FROM alanlar GROUP BY nvan;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 25 dbs.Close End Sub Bu rnek benzersiz her i nvan iin, bu nvana sahip stanbul'daki alan saysn hesaplar. Sub GroupByX2() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' Her nvan iin, bu nvana sahip alanlar ' sayar. Yalnyzca Ystanbul blgesindeki ' alanlar bulundurur. Set rst = dbs.OpenRecordset("SELECT nvan, " _ & "Count(nvan) AS Saya " _ & "FROM alanlar WHERE Blge = 'S' " _ & "GROUP BY nvan;")

' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 25 dbs.Close

Sql (Structured Query Language) Saadettin POLAT 24/85

End Sub

HAVING Yan Tmcesi GROUP BY yan tmcesi olan bir SELECT deyiminde hangi gruplandrlm kaytlarn grntleneceini belirler. GROUP BY kaytlar birletirdikten sonra, HAVING, HAVING yan tmcesinin koullarn salayan ve GROUP BY yan tmcesi ile gruplandrlm kaytlar grntler. Szdizimi SELECT alanlistesi FROM tablo WHERE semelt GROUP BY grupalanlistesi [HAVING gruplt] HAVING yan tmcesi ieren bir SELECT deyiminin blmleri unlardr: Blm alanlistesi Aklama Herhangi bir alan dierad, SQL toplam ilevi, dorulamalar (ALL, DISTINCT, DISTINCTROW veya TOP) veya dier SELECT deyimi seenekleri ile alnabilecek alan veya alanlarn ad. inden kaytlarn seilecei tablonun addr. Ayrntl bilgi iin FROM yan tmcesine bakn. Seim ltdr. Deyim bir WHERE yan tmcesi ieriyorsa, Microsoft Jet veritaban alt yaps, kaytlara WHERE koullarn uyguladktan sonra deerleri gruplandrr. Kaytlar gruplandrmak iin kullanlan en ok 10 alann ad. Grupalanlistesi iindeki alan adlarnn sras, grupta en stten en alta doru gruplandrma dzeylerini belirler. Hangi gruplandrlm kaytlarn grntleneceini belirleyen bir ifadedir.

tablo seimlt

grupalanlistesi

gruplt Uyarlar

HAVING istee baldr. HAVING, WHERE'e benzer ve hangi kaytlarn seileceini belirler. Kaytlar GROUP BY ile gruplandrldktan sonra HAVING de hangi kaytlarn grntleneceini belirtir. SELECT KategoriNo, Sum(StoktakiBirim) FROM rnler GROUP BY KategoriNo HAVING Sum(StoktakiBirim) > 100 And Like "BOS*"; Bir HAVING yan tmcesi, And ve Or gibi mantksal ilelerle birbirine bal en ok 40 ifade ierebilir. HAVING Yan Tmcesi rnei Bu rnek, stanbul blgesindeki birden ok alana atanm i nvanlarn seer. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub HavingX() Dim dbs As Database, rst As Recordset

Sql (Structured Query Language) Saadettin POLAT 25/85

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' stanbul blgesindeki birden ok alana atanm ' i nvanlarn seer. Set rst = dbs.OpenRecordset("SELECT nvan, " _ & "Count(nvan) as Toplam FROM alanlar " _ & "WHERE Blge = 'YS' " _ & "GROUP BY nvan HAVING Count(nvan) > 1;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdrmak zere EnumFields'i arr. EnumFields rst, 25 dbs.Close End Sub

IN Yan Tmcesi Microsoft Jet database alt yapsnn balanabilecei, dBASE veya Paradox veritaban veya bir d Microsoft Jet veritaban gibi herhangi bir d veritabanndaki tablolar belirler. Szdizimi Hedef bir tablo belirlemek iin: [SELECT | INSERT] INTO hedef IN {yol | ["yol" "tr"] | ["" [tr; DATABASE = yol]]} Kaynak bir tablo belirlemek iin: FROM tabloifadesi IN {yol | ["yol" "tr"] | ["" [tr; DATABASE = yol]]} IN yan tmcesi ieren bir SELECT deyiminin blmleri unlardr: Blm Hedef Tabloifadesi Aklama ine verilerin eklenecei d tablonun addr. inden verilerin alnaca tablo veya tablolarn addr. Bu deiken; tek bir tablo ad, kaydedilmi bir sorgu ad veya INNER JOIN, LEFT JOIN veya RIGHT JOIN sonucu olan bir birleim olabilir. Tabloyu ieren dizin veya dosyann tam yoludur. Veritaban bir Microsoft Jet veritaban (rnein, dBASE III, dBASE IV, Paradox 3.x veya Paradox 4.x) deilse, tablo oluturmak iin kullanlan veritaban trnn addr.

Yol Tr

Sql (Structured Query Language) Saadettin POLAT 26/85

Uyarlar IN yan tmcesini bir anda yalnzca tek bir d veritabanna balanmak iin kullanabilirsiniz. Baz durumlarda yol deikeni, veritaban dosyalarn ieren dizini gsterir. rnein dBASE, Microsoft FoxPro veya Paradox veritaban tablolar ile alrken, yol deikeni .dbf veya .db dosyalarn ieren dizini belirtir. Tablonun dosya ad, hedef veya tabloifadesi deikeninden tretilir. Microsoft Jet veritaban dnda bir veritaban belirtmek iin, ada bir noktal virgl (;) ekleyin ve ad tek (' ') veya ift (" ") trnak imi iine aln. rnein 'dBASE IV;' veya "dBASE IV;" olabilir. D veritaban belirlemek iin DATABASE sakl szcn de kullanabilirsiniz. rnein, aadaki satrlar ayn tabloyu belirtir: ... FROM Tablo IN "" [dBASE IV; DATABASE=C:\DBASE\DATA\SALES;]; ... FROM Tablo IN "C:\DBASE\DATA\SALES" "dBASE IV;" Notlar Daha fazla baarm ve daha kolay kullanm salamak iin, IN yerine bal tablo kullann. IN sakl szcn, bir ifade iinde bir karlatrma ileci olarak da kullanabilirsiniz. Ayrntl bilgi iin In ilecine bakn. IN Yan Tmcesi rnei Aadaki tablo, d bir veritabanndan veri almak iin IN yan tmcesini nasl kullanabileceinizi gsterir. Her rnekte, d veritabannda Mteriler tablosunun bulunduunu varsayn. D veritaban Microsoft Jet veritaban SQL deyimi SELECT MteriNo FROM Mteriler IN DierVeritaban.mdb WHERE MteriNo Like "A*"; SELECT MteriNo FROM Mteriler IN "C:\DBASE\VER\SATLAR" "dBASE IV;" WHERE MteriNo Like "A*";

dBASE III veya IV. Bir dBASE III tablosundan veri almak iin, "dBASE IV;" yerine "dBASE III;" yazn. Veritaban szdizimi kullanan dBASE III veya IV.

SELECT MteriNo FROM Mteriler IN "" [dBASE IV; Database=C:\DBASE\VER\SATI;] WHERE MteriNo Like "A*"; Paradox 3.x veya 4.x. SELECT MteriNo Paradox srm 3.x FROM Mteriler tablosundan veri IN "C:\PARADOX\VER\SATLAR" "Paradox 4.x;" almak iin, "Paradox WHERE MteriNo Like "A*"; 4.x;" yerine "Paradox 3.x;" yazn. Veritaban szdizimi SELECT MteriNo kullanan Paradox 3.x FROM Mteriler veya 4.x. IN "" [Paradox 4.x;Database=C:\PARADOX\VER\SATILAR;] WHERE MteriNo Like "A*"; Microsoft Excel alma SELECT MteriNo, irketAd sayfas FROM [Mteriler$] IN "c:\belgeler\xlveri.xls" "EXCEL 5.0;" WHERE MteriNo Like "A*" ORDER BY MteriNo; alma sayfas iinde SELECT MteriNo, irketAd

Sql (Structured Query Language) Saadettin POLAT 27/85

adlandrlm bir aralk FROM MterilerAral IN "c:\belgeler\xlveri.xls" "EXCEL 5.0;" WHERE MteriNo Like "A*" ORDER BY MteriNo;

ORDER BY Yan Tmcesi Sorgunun sonu kaytlarn belirtilen alan veya alanlara gre artan veya azalan srada sralar. Szdizimi SELECT alanlistesi FROM tablo WHERE semelt [ORDER BY alan1 [ASC | DESC ][, alan2 [ASC | DESC ]][, ...]]] ORDER BY yan tmcesi ieren bir SELECT deyiminin blmleri unlardr: Blm alanlistesi Aklama Herhangi bir alan dierad, SQL toplam ilevi, dorulamalar (ALL, DISTINCT, DISTINCTROW veya TOP) veya dier SELECT deyimi seenekleri ile alnabilecek alan veya alanlarn ad. inden kaytlarn seilecei tablonun addr. Ayrntl bilgi iin FROM yan tmcesine bakn. Seim ltdr. Deyim bir WHERE yan tmcesi ieriyorsa, Microsoft Jet veritaban alt yaps, kaytlara WHERE koullarn uyguladktan sonra deerleri gruplandrr. Kaytlar sralamada temel alnacak alanlarn addr.

tablo seimlt

alan1, alan2 Uyarlar

ORDER BY istee baldr. Ancak, kaytlarn sralanm olarak grntlenmesini istiyorsanz ORDER BY' kullanmalsnz. Varsaylan sralama dzeni artan dzendir (A'dan Z'ye, 0'dan 9'a). Aadaki rneklerden her ikisi de, alan adlarn soyadna gre sralar: SELECT Soyady, Ady FROM alanlar ORDER BY Soyady; SELECT Soyady, Ady FROM alanlar ORDER BY Soyady ASC; Azalan srada sralamak iin (Z'den A'ya, 9'dan 0'a), azalan srada sralamak istediiniz her alann sonuna DESC sakl szcn ekleyin. Aadaki rnek maalar seer ve bunlar azalan srada sralar: SELECT Soyad, Maa FROM alanlar ORDER BY Maa DESC, Soyad; ORDER BY yan tmcesinde Not veya OLE Nesnesi verileri ieren bir alan belirtirseniz bir hata oluur. Microsoft Jet veritaban alt yaps bu bu trdeki alanlar gruplandramaz.

Sql (Structured Query Language) Saadettin POLAT 28/85

ORDER BY genellikle bir SQL deyiminin son szcdr. ORDER BY yan tmcesinde ek alanlar da bulundurabilirsiniz. Kaytlar, ORDER BY'dan sonra listelenen ilk alana gre sralanr. Bu alanda ayn deere sahip olan kaytlar, listelenen ikinci alana gre sralanr ve bu bylece devam eder. ORDER BY Yan Tmcesi rnei Aadaki rnekte gsterilen SQL deyimi, soyadlarn azalan srada (Z-A) sralamak iin ORDER BY yan tmcesini kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub OrderByX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alanlar tablosundan ad ve soyad deerlerini ' seer ve bunlary azalan syrada syralar. ' Set rst = dbs.OpenRecordset("SELECT Soyady, " _ & "Ad FROM alanlar " _ & "ORDER BY Soyady DESC;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdrmak zere EnumFields'i arr. EnumFields rst, 12 dbs.Close End Sub

WHERE Yan Tmcesi FROM yan tmcesinde listelenen tablolardaki hangi kaytlarn SELECT, UPDATE veya DELETE deyiminden etkilendiini belirtir. Szdizimi SELECT alanlistesi FROM tabloifadesi WHERE lt WHERE yan tmcesi ieren bir SELECT deyiminin blmleri unlardr:

Sql (Structured Query Language) Saadettin POLAT 29/85

Blm Alanlistesi

Tabloifadesi ltler

Aklama Herhangi bir alan dierad, dorulamalar (ALL, DISTINCT, DISTINCTROW veya TOP) veya dier SELECT deyimi seenekleri ile alnabilecek alan veya alanlarn ad. inden verilerin alnaca tablo veya tablolarn addr. Kaytlarn, sorgu sonular iinde yer alabilmesi iin salamalar gereken bir ifadedir.

Uyarlar Microsoft Jet veritaban alt yaps, WHERE yan tmcesinde listelenen koullara uyan kaytlar seer. Bir WHERE yan tmcesi belirlemezseniz, sorgunuz tablodaki tm satrlar geri dndrr. Sorgunuzda birden fazla tablo belirtir ve WHERE ya da JOIN yan tmcesi bulundurmazsanz, sorgunuz tablolarn bir Kartezyen arpmn oluturur. WHERE istee baldr ancak varsa FROM'un ardndan gelir. rnein, sat blmndeki tm alanlar seebilir (WHERE Blm = 'Sat') veya ya 18 ile 30 arasndaki tm mterileri seebilirsiniz (WHERE Ya Between 18 And 30). ok sayda tabloda SQL birleim ilemini gerekletirmek iin bir JOIN yan tmcesi kullanmazsanz, sonu Recordset nesnesi gncelletirilebilir durumda olmaz. WHERE, HAVING yan tmcesine benzer. WHERE, hangi kaytlarn seileceini belirler. Benzer biimde, kaytlar GROUP BY ile gruplandrldktan sonra HAVING de hangi kaytlarn grntleneceini belirtir. GROUP BY yan tmcesi ile gruplandrmak istemediiniz kaytlar elemek iin WHERE yan tmcesini kullann. SQL deyiminin dndrecei kaytlar belirlemek iin deiik ifadeler kullann. rnein aadaki SQL deyimi, yllk maalar 600 Milyon TL'den yksek olan alanlar seer. SELECT Soyad, Maa FROM alanlar WHERE Maa > 21000; Bir WHERE yan tmcesi, And ve Or gibi mantksal ilelerle birbirine bal en ok 40 ifade ierebilir. Bir boluk veya noktalama iareti ieren bir alan ad girerken, ad keli ayralar ([ ]) iine aln. rnein bir mteri bilgileri tablosu, belirli mteriler hakknda bilgiler ierebilir: SELECT [Mterinin En Sevdii Lokanta] lt deikenini belirttiinizde, tarih rakamlar, Microsoft Jet veritaban alt yapsnn A.B.D. srmn kullanmyor olsanz bile A.B.D. biiminde olmaldr. rnein 10 Mays 1996, ngilizce biiminde 10/5/96 eklinde ve A.B.D. biiminde 5/10/96 olarak yazlr. Tarih rakamlarn, aadaki rnekte grld gibi diyez iareti (#) iine aldnzdan emin olun. Bir ngiltere veritabannda 10 Mays 1996 tarihli kaytlar bulmak iin, aadaki SQL deyimini kullanmalsnz. SELECT * FROM Sipariler WHERE YklemeTarihi = #5/10/96#; Ayrca, Microsoft Windows tarafndan belirlenen uluslararas ayarlar alglayan DateValue ilevini de kullanabilirsiniz. rnein, A.B.D. iin u kodlar kullann: SELECT *

Sql (Structured Query Language) Saadettin POLAT 30/85

FROM Sipariler WHERE YklemeTarihi = TarihDeeri('5/10/96'); Ve ngiltere iin u kodlar kullann: SELECT * FROM Sipariler WHERE YklemeTarihi = TarihDeeri('10/5/96'); Not lt dizesinde bavurulan stun GUID trnde ise, lt ifadesi biraz farkl bir szdizimi kullanr: WHERE YinelemeNo = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}} Gsterildii gibi iie parantezler ve tireler eklediinizden emin olun. WHERE Yan Tmcesi rnei Aadaki rnek, alanlar tablosunda Maa alannn bulunduunu varsayar. Bu alan gerekte Nortwind veritabannn alanlar tablosunda bulunmaz. Bu rnek, soyad Etikan olan kaytlarn Ad ve Soyad bilgilerini seer. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub WhereX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alanlar tablosundan, soyad Etikan olan ' kayytlary seer. Set rst = dbs.OpenRecordset("SELECT Soyady, " _ & "Ad FROM alanlar " _ & "WHERE Soyady = 'Etikan';")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. EnumFields rst, 12 dbs.Close

Sql (Structured Query Language) Saadettin POLAT 31/85

End Sub

CONSTRAINT Yan Tmcesi Bir kstlama bir dizine benzer, ancak bir baka tablo ile iliki kurmak iin de kullanlabilir. CONSTRAINT yan tmcesini ALTER TABLE ve CREATE TABLE deyimlerinde, kstlama oluturmak veya silmek zere kullanabilirsiniz. ki tr CONSTRAINT yan tmcesi vardr: tek bir alanda bir kstlama oluturmak iin bir tane ve birden ok alanda bir kstlama oluturmak iin bir tane. Not Microsoft Jet veritaban alt yaps, Microsoft Jet veritabanlar dnda ALTER TABLE kullanmn veya herhangi bir veri tanm dili (DDL) deyimini desteklemez. Bunun yerine DAO Create yntemlerini kullann. Szdizimi Tek alan kstlamas: CONSTRAINT ad {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES yabanctablo [(yabancalan1, yabancalan2)] [ON UPDATE CASCADE | SET NULL] [ON DELETE CASCADE | SET NULL]} ok alan kstlamas: CONSTRAINT ad {PRIMARY KEY (birincil1[, birincil2 [, ...]]) | UNIQUE (benzersiz1[, benzersiz2 [, ...]]) | NOT NULL (nulldeil1[, nulldeil2 [, ...]]) | FOREIGN KEY [NO INDEX] (bavuru1[, bavuru2 [, ...]]) REFERENCES yabanctablo [(yabancalan1 [, yabancalan2 [, ...]])] [ON UPDATE CASCADE | SET NULL] [ON DELETE CASCADE | SET NULL]} CONSTRAINT yan tmcesinin blmleri unlardr: Blm ad birincil1, birincil2 benzersiz1, benzersiz2 nulldeil1, nulldeil2 bavuru1, bavuru2 yabanctablo yabancalan1, yabancalan2 Aklama Oluturulacak kstlamann ad. Birincil anahtar olarak belirlenecek alan veya alanlarn ad. Benzersiz anahtar olarak belirlenecek alan veya alanlarn ad. Null olmayacak ekilde kstlanan alan veya alanlarn ad. Baka bir tablodaki alanlara bavuran yabanc anahtar alan veya alanlarnn addr. Yabancanahtar tarafndan belirtilen alan veya alanlar ieren yabanc tablonun addr. Bavuru1 ve bavuru2 tarafndan belirtilen yabanctablo iindeki alan veya alanlarn addr. Bavurulan alan yabanctablonun birincil anahtar ise bu yan tmceyi ihmal edebilirsiniz.

Uyarlar Tek alan kstlamas szdizimini, ALTER TABLE veya CREATE TABLE deyiminin alan tanm yan tmcesinde alann veri trnn belirtiminin hemen ardndan kullanabilirsiniz. ok alan kstlamas szdizimini, ALTER TABLE veya CREATE TABLE deyiminde alan tanm yan tmcesinin dnda CONSTRAINT sakl szcn her kullandnzda kullanrsnz.

Sql (Structured Query Language) Saadettin POLAT 32/85

CONSTRAINT yan tmcesini kullanarak, bir alan aadaki kstlama trlerinden biri olarak belirleyebilirsiniz:

UNIQUE sakl szcn, bir alan benzersiz anahtar olarak belirlemek zere kullanabilirsiniz. Bu, tablodaki iki farkl kaydn bu alanda ayn deere sahip olamamas anlamna gelir. Herhangi bir alan veya alan gurubunu, benzersiz olarak kstlayabilirsiniz. ok alanl bir kstlama bir benzersiz anahtar olarak belirlendiyse, dizindeki tm alanlarn birletirilmi deerlerinin benzersiz olmas gerekir; bu alanlardan yalnzca birindeki deer bir veya daha ok kaytta ayn olabilir. PRIMARY KEY sakl szcklerini, bir alan veya bir alan kmesini bir tabloda birincil anahtar olarak belirlemek zere kullanabilirsiniz. Birincil anahtardaki tm deerlerin benzersiz olmas ve Null olmamas gerekir; ayrca, bir tabloda yalnzca bir tek birincil anahtar olabilir.

Not Zaten birincil anahtar olan bir tabloda PRIMARY KEY kstlamas belirlemeyin, aksi takdirde hata oluur.

FOREIGN KEY sakl szcn, bir alan yabanc anahtar olarak belirlemek zere kullanabilirsiniz. Yabanc tablonun birincil anahtar birden fazla alandan oluuyorsa, bavuran tm alanlar, yabanc tablonun adn ve bavuran alanlarn listelendii srada yabanc tablonun bavurulan alanlarn listeleyen ok alanl bir kstlama tanm kullanmalsnz. Bavurulan alan veya alanlar yabanc tablonun birincil anahtar ise, bavurulan alanlar belirtmeniz gerekmez. Veritaban alt yaps varsaym olarak, yabanc tablonun birincil anahtarnn bavurulan alanlar olduunu varsayar. Yabanc anahtar kstlamalar, ilgili bir birincil anahtar deeri deitiinde gerekletirilecek olan belirli eylemleri tanmlar.

CONTRAINT yan tmcesinin tanml olduu tablodaki birincil anahtarda yrtlecek ilgili eylemi temel alan ve yabanc tabloda gerekletirilecek eylemleri belirleyebilirsiniz. rnein, Mteriler tablosunda aadaki tanmn yapldn dnelim: CREATE TABLE Mteriler (MtNo INTEGER PRIMARY KEY, stNo NCHAR VARYING (50)) Sipariler tablosunda da, Mteriler tablosunun birincil anahtarna bavuran yabanc anahtar ilikisinin tanmlandn dnelim: CREATE TABLE Sipariler (SipariNo INTEGER PRIMARY KEY, MtNo INTEGER, SipariNotlar NCHAR VARYING (255), CONSTRAINT YASiparilerMtNo FOREIGN KEY (MtNo) REFERENCES Mteriler ON UPDATE CASCADE ON DELETE CASCADE Yabanc anahtarda hem ON UPDATE CASCADE hem de ON DELETE CASCADE yan tmcesi tanmldr. ON UPDATE CASCADE yan tmcesi, mterinin numaras (MtNo) Mteriler tablosunda gncelletirildiinde bu gncelletirmenin Sipariler tablosunda da yaplmasn salar. lgili mteri numaras deeri ieren her sipari, otomatik olarak yeni deer ile gncelletirilir. ON DELETE CASCADE yan tmcesi, Mteriler tablosunda bir mteri silindiinde Sipariler tablosundaki ayn mteri numaras deerini ieren tm satrlarn silinmesini salar. imdi de, Sipariler tablosunda CASCADE eylemi yerine SET NULL eylemini kullanarak farkl bir tanm yapldn dnelim: CREATE TABLE Sipariler (SipariNo INTEGER PRIMARY KEY, MtNo INTEGER, SipariNotlar NCHAR VARYING (255), CONSTRAINT YASiparilerMtNo FOREIGN KEY (MtNo) REFERENCES Mteriler ON UPDATE SET NULL ON DELETE SET NULL ON UPDATE SET NULL yan tmcesi, mterinin numaras (MtNo) Mteriler tablosunda gncelletirildiinde, Sipariler tablosunda otomatik olarak ilgili yabanc anahtar deerlerinin NULL olarak belirlenmesini salar. Benzer biimde, ON DELETE SET NULL yan

Sql (Structured Query Language) Saadettin POLAT 33/85

tmcesi, mteri Mteriler tablosundan silindiinde, Sipariler tablosunda otomatik olarak tm ilgili yabanc anahtarlarn NULL olarak belirlenmesini salar. Yabanc anahtarlar iin dizinlerin otomatik olarak oluturulmasn engellemek iin, NO INDEX deitiricisi kullanlabilir. Bu yabanc anahtar tanm ekli, ancak sonu dizin deerleri sk sk yinelenecekse kullanlmaldr. Yabanc anahtar dizinindeki deerlerin sk sk yinelendii durumlarda, bir dizin kullanmak, basit biimde bir tablo tarama ilemi yapmaktan daha az verimli olabilir. Tablodan satrlarn silindii ve tabloya satrlarn eklendii bu tr bir dizini tutmak, baarm drr ve herhangi bir yarar salamaz.

PROCEDURE Yan Tmcesi Sorgu iin bir ad ve istee bal parametreler tanmlar. Not PROCEDURE yan tmcesi PROCEDURE deyiminden sonra gelir. PROCEDURE yan tmcesi desteklenir ancak; PROCEDURE deyimi PROCEDURE yan tmcesinin yeteneklerinin bir st kmesini salar ve nerilen szdizimidir. Szdizimi PROCEDURE ad [parametre1 veritr[, parametre2 veritr[, ...]] PROCEDURE yan tmcesinin blmleri unlardr: Blm Ad param1, param2 Aklama Yordamn addr. Standart adlandrma kurallarna uymaldr. Bir veya daha fazla alan ad veya parametredir. rnein: PROCEDURE lkelere_Gre_Satlar [Balang Tarihi] TarihSaat, [Biti Tarihi] TarihSaat; Parametreler hakknda ayrntl bilgi iin parametreler konusuna bakn. Veritr Birincil Microsoft Jet SQL veri trleri veya onlarn eanlamllarndan biridir.

Uyarlar Bir SQL yordam, yordamn adn belirten PROCEDURE yan tmcesinden, istee bal bir parametre tanmlar listesinden ve tek bir SQL deyiminden oluur. rnein, Para_Numarasn_Al yordam, belirtilen para numarasn alan bir sorgu altrabilir. Notlar

Yan tmce birden fazla alan tanm ieriyorsa (yani parametre-veritr iftse), bunlar virgllerle ayrn. PROCEDURE yan tmcesinin ardndan bir SQL deyimi (rnein bir SELECT veya UPDATE statement) gelmelidir.

CREATE PROCEDURE Deyimi, PROCEDURE Yan Tmcesi rnei Bu rnek, sorguyu KategoriListesi olarak adlandrr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub ProcedureX()

Sql (Structured Query Language) Saadettin POLAT 34/85

Dim dbs As Database, rst As Recordset Dim qdf As QueryDef, strSql As String

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

strSql = "PROCEDURE KategoriListesi; " _ & "SELECT DISTINCTROW KategoriAdy, " _ & "KategoriNo FROM Kategoriler " _ & "ORDER BY KategoriAdy;"

' SQL deyimini temel alan bir adlandrlm ' bir QueryDef oluturur. Set qdf = dbs.CreateQueryDef("YeniSorgu", strSql) ' Geici bir anlk grnt trnde Recordset oluturur. Set rst = qdf.OpenRecordset(dbOpenSnapshot) ' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 15

' Bu bir rnek olduu iin QueryDef'i ' siler. dbs.QueryDefs.Delete "YeniSorgu"

dbs.Close End Sub

lemler

Sql (Structured Query Language) Saadettin POLAT 35/85

UNION lemi ki veya daha fazla bamsz sorgu veya tablonun sonularn birletiren bir birleim sorgusu oluturur. Szdizimi [TABLE] sorgu1 UNION [ALL] [TABLE] sorgu2 [UNION [ALL] [TABLE] sorgun [ ... ]] UNION ileminin blmleri unlardr: Blm sorgu1-n Aklama Bir SELECT deyimi, sakl bir sorgunun ad veya TABLE anahtar szcnden sonra gelen sakl bir tablonun addr.

Uyarlar ki veya daha fazla sorgunun, tablonun ve SELECT deyiminin sonularn herhangi bir birleimde tek bir UNION ileminde birletirebilirsiniz. Aadaki rnek, Yeni Hesaplar adl var olan bir tablo ile bir SELECT deyimini birletirir: TABLE [Yeni Hesaplar] UNION ALL SELECT * FROM Mteriler WHERE SipariMiktar >= .1000); Varsaym olarak, UNION ilemini kullandnzda yinelenen kayt dndrlmez; ancak, tm kaytlarn dndrldnden emin olmak iin ALL dorulamasn bulundurabilirsiniz. Bu ayrca, sorguyu daha hzlandrr. UNION ilemindeki tm sorgular ayn sayda alan istemelidir; ancak, alanlarn ayn boyutta veya ayn veri trnde olmas gerekmez. Dieradlar yalnzca ilk SELECT deyiminde kullann; bunlar dier deyimlerde dikkate alnmaz. ORDER BY yan tmcesinde alanlara, ilk SELECT deyiminde adlandrldklar ekilde bavurun. Notlar

Bir GROUP BY veya HAVING yan tmcesini dndrlen verileri gruplandrmak zere her sorgu deikeninde kullanabilirsiniz. ORDER BY yan tmcesini, dndrlen verileri belirli bir srada grntlemek iin son sorgu deikeninin sonunda kullanabilirsiniz.

UNION lemi rnei Bu rnek, Brezilya'daki tm salayclarn ehirlerini ve adlarn alr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub UnionX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

Sql (Structured Query Language) Saadettin POLAT 36/85

' Brezilya'daki tm salayclarn ve mterilerin ' adlarn ve ehirlerini alr. Set rst = dbs.OpenRecordset("SELECT irketAd," _ & " ehir FROM Salayclar" _ & " WHERE lke = 'Brezilya' UNION" _ & " SELECT irketAd, ehir FROM Mteriler" _ & " WHERE lke = 'Brazil';")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 12 dbs.Close End Sub

INNER JOIN lemi Ortak bir alanda eleen deerler olduunda iki tablonun kaytlarn birletirir. Szdizimi FROM tablo1 INNER JOIN tablo2 ON tablo1.alan1 karlatrma tablo2.alan2 INNER JOIN ileminin blmleri unlardr: Blm tablo1, tablo2 alan1, alan2 Aklama inden kaytlarn birletirilecei tablolarn addr. Birletirilen alanlarn addr. Alanlar saysal deilse, ayn veri trnde olmal ve ayn trde veriler iermelidir, ancak alanlarn ayn ada sahip olmalar gerekmez. Herhangi bir karlatrma ilecidir: "=," "<," ">," "<=," ">=," or "<>."

karlatrma Uyarlar

INNER JOIN ilemini herhangi bir FROM yan tmcesinde kullanabilirsiniz. Bu, en sk kullanlan birletirme trdr. birleimler, iki tabloda ortak olan bir alanda eleen deerler olduunda her iki tablonun kaytlarn birletirirler. INNER JOIN'i, Blmler ve alanlar tablolarnda, blmlerdeki tm alanlar semek iin kullanabilirsiniz. Buna karlk, tm blmleri (blme atanm alan olmasa bile) veya tm alanlar (herhangi bir blme atanmam olsa bile) semek iin, bir d birleim oluturmak zere LEFT JOIN veya RIGHT JOIN ilemini kullanabilirsiniz. Not veya OLE Nesnesi verileri ieren alanlar birletirmeyi denerseniz bir hata oluur.

Sql (Structured Query Language) Saadettin POLAT 37/85

Benzer trdeki herhangi iki saysal alan birletirebilirsiniz. rnein, benzer trlerde olduklarnda OtomatikSay ve Uzun alanlarn birletirebilirsiniz. Ancak, Tek ve ift trndeki alanlar birletiremezsiniz. Aadaki rnek, Kategoriler ve rnler tablolarn KategoriNo alanna gre nasl birletirebileceinizi gsterir: SELECT KategoriAdy, rnAdy FROM Kategoriler INNER JOIN rnler ON Kategoriler.KategoriNo = rnler.KategoriNo; nceki rnekte KategoriNo, birletirilen alandr ancak SELECT deyiminde yer almad iin sorgu sonularnda bulunmaz. Birletirilen alan bulundurmak iin, alan adn SELECT deyiminde yazn (rneimizde Kategoriler.KategoriNo). Aadaki szdizimini kullanarak, JOIN deyimi iinde ok sayda ON yan tmcesini de balayabilirsiniz: SELECT alanlar FROM tablo1 INNER JOIN tablo2 ON tablo1.alan1 karlatrma tablo2.alan1 AND ON tablo1.alan2 karlatrma tablo2.alan2) OR ON tablo1.alan3 karlatrma tablo2.alan3)]; Aadaki szdizimini kullanarak iie JOIN deyimleri de oluturabilirsiniz: SELECT alanlar FROM tablo1 INNER JOIN (tablo2 INNER JOIN [( ]tablo3 [INNER JOIN [( ]tablox [INNER JOIN ...)] ON tablo3.alan3 karlatrma tablox.alanx)] ON tablo2.alan2 karlatrma tablo3.alan3) ON tablo1.alan1 karlatrma tablo2.alan2; Bir LEFT JOIN veya bir RIGHT JOIN bir INNER JOIN iinde iie yer alabilir ancak bir INNER JOIN bir LEFT JOIN veya RIGHT JOIN iinde yer alamaz. INNER JOIN lemi rnei Bu rnek iki benzer-birleim oluturur: biri Sipari Ayrntlar ve Sipariler tablolar arasnda, dieri Sipariler ve alanlar tablolar arasnda. Bu, alanlar tablosu sat verilerini iermedii ve Sipari Ayrntlar tablosu da alan verilerini iermedii iin gereklidir. Sorgu, bir alan listesi ve bu alanlarn toplam satlarn verir. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub InnerJoinX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' Sipari Ayrntlar ve Sipariler tablosu arasnda ' bir birleim ve Sipariler ile alanlar tablolar ' arasnda da bir birleim oluturur. alanlarn listesini

Sql (Structured Query Language) Saadettin POLAT 38/85

' ve onlarn toplam sat miktarlarn alr. Set rst = dbs.OpenRecordset("SELECT DISTINCTROW " _ & "Sum(BirimFiyat * Miktar) AS Satlar, " _ & "(Ady & Chr(32) & Soyady) AS Ad " _ & "FROM alanlar INNER JOIN(Sipariler " _ & "INNER JOIN [Sipari Ayrntlar] " _ & "ON [Sipari Ayrntlar].SipariNo = " _ & "Sipariler.SipariNo ) " _ & "ON Sipariler.alanNo = " _ & "alanlar.alanNo " _ & "GROUP BY (Ady & Chr(32) & Soyady);")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 20 dbs.Close End Sub

LEFT JOIN, RIGHT JOIN lemleri Herhangi bir FROM yan tmcesinde kullanldnda kaynak tablo kaytlarn birletirir. Szdizimi FROM tablo1 [ LEFT | RIGHT ] JOIN tablo2 ON tablo1.alan1 karlatrma tablo2.alan2 LEFT JOIN ve RIGHT JOIN ilemlerinin blmleri unlardr: Blm tablo1, tablo2 alan1, alan2 Aklama inden kaytlarn birletirilecei tablolarn addr. Birletirilen alanlarn addr. Alanlar ayn veri trnde olmal ve ayn trde veriler iermelidir, ancak alanlarn ayn ada sahip olmalar gerekmez. Herhangi bir karlatrma ilecidir: "=," "<," ">," "<=," ">=," or "<>."

karlatrma

Uyarlar

Sql (Structured Query Language) Saadettin POLAT 39/85

Bir sol d birleim oluturmak iin LEFT JOIN ilemini kullann. Sol d birleimler, ikinci tablonun (sadaki) kaytlarnda eleen deer olmasa bile, iki tablodan ilkinin (soldaki) tm kaytlarn ierir. Bir sa d birleim oluturmak iin RIGHT JOIN ilemini kullann. Sa d birleimler, ilk tablonun (soldaki) kaytlarnda eleen deer olmasa bile, iki tablodan ikincisinin (sadaki) tm kaytlarn ierir. rnein, Blmler (sol) ve alanlar (sa) tablolar ile, blme atanm alan olmasa bile tm blmleri semek iin LEFT JOIN ilemini kullanabilirsiniz. Herhangi bir blme atanmam olanlar da dahil, tm alanlar semek iin RIGHT JOIN'i kullanmalsnz. Aadaki rnek, Kategoriler ve rnler tablolarn KategoriNo alanna gre nasl birletirebileceinizi gsterir. Sorgu, rn iermeyenler de dahil olmak zere tm kategorilerin bir listesini oluturur: SELECT KategoriAdy, rnAdy FROM Kategoriler LEFT JOIN rnler ON Kategoriler.KategoriNo = rnler.KategoriNo; Bu rnekte KategoriNo, birletirilen alandr ancak SELECT deyiminde yer almad iin sorgu sonularnda bulunmaz. Birletirilen alan bulundurmak iin, alan adn SELECT deyiminde yazn (rneimizde Kategoriler.KategoriAd). Notlar Yalnzca verileri birletirilmi alanlardaki verilerle ayn olan kaytlar bulunduran bir sorgu oluturmak iin, bir INNER JOIN ilemi kullann.

Bir LEFT JOIN veya bir RIGHT JOIN bir INNER JOIN iinde iie yer alabilir ancak bir INNER JOIN bir LEFT JOIN veya RIGHT JOIN iinde yer alamaz. Birleimlerin dier birleimlerin iine nasl konulabilecei konusunda, INNER JOIN konusundaki iie yerletirme tartmasna bakn. ok sayda ON yan tmcesini balayabilirsiniz. Bunun nasl yapld konusunda, INNER JOIN konusundaki yan tmce balama tartmasna bakn.

Not veya OLE Nesnesi verileri ieren alanlar birletirmeyi denerseniz bir hata oluur. LEFT JOIN, RIGHT JOIN lemleri rnei Bu rnek, alanlar tablosunda Blm Ad ve Blm No alanlarnn bulunduunu varsayar. Bu alanlar gerekte Nortwind veritabannn alanlar tablosunda bulunmaz. Bu rnek, iinde alan bulunmayanlar dahil tm blmleri seer. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub LeftRightJoinX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' alan bulunmayanlar dahil tm blmleri

Sql (Structured Query Language) Saadettin POLAT 40/85

' seer. Set rst = dbs.OpenRecordset _ ("SELECT [Blm Ady], " _ & "Ady & Chr(32) & Soyady AS Ad " _ & "FROM Blmler LEFT JOIN alanlar " _ & "ON Blmler.[Blm No] = " _ & "alanlar.[Blm No] " _ & "ORDER BY [Blm Ady];")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 20 dbs.Close End Sub leler Like leci Bir dize ifadesi ile bir SQL ifadesindeki bir rnek ile karlatrr. Szdizimi ifade Like rnek Like ilecinin blmleri unlardr: Blm ifade rnek Uyarlar Like ilecini, belirlediiniz rnek ile eleen alan deerlerini bulmak iin kullanabilirsiniz. rnek iin, kesin bir deer belirtebilir (rnein, Like gamze) veya bir deer araln bulmak iin joker karakterlerini kullanabilirsiniz (rnein, Like Ga*). Bir ifadede Like ilecini, bir alan deerini bir dize ifadesi ile karlatrmak iin kullanabilirsiniz. rnein bir SQL sorgusunda Like C* yazarsanz, sorgu, C harfi ile balayan tm alan deerlerini verir. Bir parametre sorgusunda, kullancya aranacak rnei sorabilirsiniz. Aadaki rnek, P harfi ile balayan ve A ile F arasnda bir harf ile devam eden ve toplam hane olan verileri verir: Aklama WHERE yan tmcesinde kullanlan SQL ifadesidir. fadenin karlatrlaca dize veya karakter metinleridir.

Sql (Structured Query Language) Saadettin POLAT 41/85

Like P[A-F]### Aadaki tablo, ifadeleri farkl rneklerle snamak iin Like ilecini nasl kullanacanz gsterir. Eleme tr rnek ok sayda karakter a*a *ab* zel karakter a[*]a ok sayda karakter ab* Tek karakter a?a Tek hane a#a Karakter aral [a-z] Aralk d [!a-z] Hane deil [!0-9] Birleik a[!b-m]# Like leci rnei Bu rnek, adlar A ile D harfleri arasndaki harflerle balayan alanlarn listesini verir. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub LikeX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Adlar A ile D arasndaki harflerle balayan ' alanlarn listesini verir. Set rst = dbs.OpenRecordset("SELECT Soyady," _ & "Ad FROM alanlar" _ & " WHERE Soyady Like '[A-D]*';") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 15 Eleme (True verir) aa, aBa, aBBBa abc, AABB, Xab a*a abcdefg, abc aaa, a3a, aBa a0a, a1a, a2a f, p, j 9, &, % A, a, &, ~ An9, az0, a99 Eleme yok (False verir) aBC aZb, bac aaa cab, aab aBBBa aaa, a10a 2, & b, a 0, 1, 9 abc, aj0

dbs.Close End Sub Between...And leci

Sql (Structured Query Language) Saadettin POLAT 42/85

Bir ifadenin deerinin, belirtilen deer aral iinde olup olmadn belirler. Bu ileci SQL deyimleri iinde kullanabilirsiniz. Szdizimi ifade [Not] Between deer1 And deer2 Between...And ilecinin blmleri unlardr: Blm ifade deer1, deer2 Uyarlar fadenin deeri deer1 ile deer2 arasnda ise (bu deerler dahil), Between...And ileci True deerini aksi takdirde False deerini verir. Kart koulu deerlendirmek (ifadenin, deer1 ve deer2 ile tanmlanan araln dnda kalmas durumu) iin Not mantksal ilecini bulundurabilirsiniz. Bir alann deerinin, belirtilen saysal aralk iinde olup olmadn belirlemek iin Between...And ilecini kullanabilirsiniz. Aadaki rnek, bir sipariin belirli bir posta kodu aralndaki adrese gnderilip gnderilmediini belirler. Posta kodu 98101 ve 98199 arasnda ise, IIf ilevi "Yerel" deerini verir. Aksi takdirde, "Yerel Deil" deerini verir. SELECT IIf(PostaKodu Between 98101 And 98199, Yerel, Yerel Deil) FROM Yayyncylar fade, deer1 veya deer2 Null ise Between...And, Null deerini verir. * gibi joker karakterleri bir dz metin olarak alglandklarndan, bunlar Between...And ileci ile kullanamazsnz. rnein 980 ile 989 rakamlar ile balayan posta kodlarn bulmak iin 980* ve 989* yazamazsnz. Bunun yerine, bu ilemi yapmak iin iki seeneiniz vardr. Sorguya, metin alannn en soldaki karakterini alan bir ifade ekler ve Between...And ilecini bu karakterlerde kullanrsnz. Ya da, en yksek ve en dk deerleri ek karakterler ile belirtirsiniz; bu durumda 98000 ile 98999 veya uzun posta kodlar kullanlyorsa 98000 ile 98999 - 9999 aras. (Dk deerlerde 0000 yazmamalsnz; aksi takdirde, baz posta kodlarnda uzun posta kodu varsa dierlerinde ise yoksa 98000 braklr.) Aklama Deerlendirmek istediiniz verileri ieren alan belirten ifadedir. fadeyi karlatrmak istediiniz deerlerdir.

In leci Bir ifadenin deerinin, belirtilen listedeki deerlerden herhangi birine eit olup olmadn belirler. Szdizimi ifade [Not] In(deer1, deer2, . . .) Uyarlar In ilecinin blmleri unlardr: Blm fade deer1, deer2 Aklama Deerlendirmek istediiniz verileri ieren alan belirten ifadedir. fadeyi karlatrmak istediiniz deer veya deer listesidir.

fade deer listesinde bulunursa, In ileci True deerini aksi takdirde False yanl deerini dndrr. Kart koulu deerlendirmek (ifadenin, deer listesi iinde bulunmamas durumu) iin Not mantksal ilecini bulundurabilirsiniz.

Sql (Structured Query Language) Saadettin POLAT 43/85

rnein, belirtilen blgeler topluluuna hangi siparilerin gnderilmi olduunu belirlemek iin In ilecini kullanabilirsiniz: SELECT * FROM Sipariler WHERE TeslimBlgesi In (Avon,Glos,Som) In leci rnei Aadaki rnek, stanbul ve Ankara'ya teslim edilen tm siparileri ve bunlarn teslim tarihlerini ieren bir sorgu oluturmak iin, Northwind veritabanndaki Sipariler tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub InX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Sipariler tablosundan, TeslimYeri stanbul ' veya Ankara olan kayytlary seer. Set rst = dbs.OpenRecordset("SELECT " _ & "MteriNo, TeslimTarihi FROM Sipariler " _ & "WHERE TeslimYeri In " _ & "('Istanbul','Ankara');")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. EnumFields rst, 12 dbs.Close End Sub SQL TOPLAM LEVLER SQL toplam ilevlerini kullanarak, deer kmelerinde eitli istatistikler belirleyebilirsiniz. Bu ilevleri bir sorguda ve toplam ifadelerini bir QueryDef nesnesinin SQL zelliinde veya bir SQL sorgusunu temel alan bir Recordset nesnesi olutururken kullanabilirsiniz. Avg levi

Sql (Structured Query Language) Saadettin POLAT 44/85

Sorguda belirtilen alanda bulunan deer kmesinin aritmetik ortalamasn hesaplar. Szdizimi Avg(ifade) fade yertutucusu, ortalamasn almak istediiniz saysal verileri ieren alan belirten bir dizi ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Uyarlar Avg ile hesaplanan ortalama, aritmetik bir ortalamadr (deerlerin toplamnn deer saysna blmdr). Avg'yi rnein, ortalama navlun maliyetlerini hesaplamak iin kullanabilirsiniz. Avg ilevi hesaplamada herhangi bir Null alan iermez. Avg ilevini bir sorgu ifadesinde ve bir QueryDef nesnesinin SQL zelliinde veya bir SQL sorgusunu temel alan bir Recordset nesnesi olutururken kullanabilirsiniz. Avg levi rnei Bu rnek, navlun bedeki 100 milyonun zerindeki siparilerin ortalama navlun bedellerini hesaplamak iin Sipariler tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub AvgX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Navlun bedeli 100 milyonun zerindeki siparilerin ' ortalama navlun bedellerini hesaplar. Set rst = dbs.OpenRecordset("SELECT Avg(Navlun)" _ & " AS [Ortalama Navlun]" _ & " FROM Sipariler WHERE Navlun > 100;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 25 dbs.Close

Sql (Structured Query Language) Saadettin POLAT 45/85

End Sub Count levi Sorgunun dndrd kayt saysn hesaplar. Szdizimi Count(ifade) fade yertutucusu, saymak istediiniz saysal verileri ieren alan belirten bir dizi ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler, tablo alannn adn veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Metin dahil, herhangi bir trdeki verileri sayabilirsiniz. Uyarlar Temel alnan sorgudaki kayt saysn saymak iin Count'u kullanabilirsiniz. rnein belirli bir lkeye yaplm olan siparilerin saysn saymak iin Count'u kullanabilirsiniz. Her ne kadar ifade de alan zerinde hesap yapabilirse de, Count, basit biimde kayt saysn hesaplar. Kaytlarda hangi deerlerin sakland ile ilgilenmez. fade yldz eklinde (*) bir joker karakteri deilse, Count ilevi Null deerine sahip olan kaytlar saymaz. unless . Bir yldz kullanrsanz, Count, Null alanlar ieren kaytlar da dahil olmak zere toplam kayt saysn hesaplar. Count(*), Count([Stun Ad]) ilevinden belirgin biimde daha hzldr. Yldz karakterini trnak imleri (' ') iine almayn. Aadaki rnek, Sipariler tablosundaki kayt saysn hesaplar. SELECT Count(*) AS ToplamSipariler FROM Sipariler; fade ok sayda alan belirtiyorsa, Count ilevi yalnzca, alan deerlerinden en az biri Null olmayan kaytlar sayar. Belirtilen alanlarn tm Null ise, kayt saylmaz. Alan adlarn & simgesi ile ayrn. Aadaki rnek, sayma ilemini, SevkTarihi veya Navlun deerlerinin Null olmamas durumu ile nasl snrlandrdnz gsterir: SELECT Count('SevkTarihi & Navlun') AS [Not Null] FROM Sipariler; Count'u sorgu ifadesinde kullanabilirsiniz. Bu ifadeyi ayrca, bir QueryDef nesnesinin SQL zelliinde veya bir SQL sorgusunu temel alan bir Recordset nesnesi olutururken kullanabilirsiniz. Count levi rnei Bu rnek, ngiltere'ye teslim edilen sipari saysn hesaplamak iin Sipariler tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub CountX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

Sql (Structured Query Language) Saadettin POLAT 46/85

' ngiltere'ye yaplm teslimlerin saysn ' hesaplar. Set rst = dbs.OpenRecordset("SELECT" _ & " Count (Teslimlkesi)" _ & " AS [ngiltere Siparileri] FROM Sipariler" _ & " WHERE Teslimlkesi = 'Yngiltere';")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 25 dbs.Close End Sub First, Last levleri Sorgunun dndrd sonu kmesindeki ilk veya son kaydn alan deerini dndrr. Szdizimi First(ifade) Last(ifade) fade yertutucusu, kullanmak istediiniz saysal verileri ieren alan belirten bir dize ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Uyarlar First ve Last ilevleri, DAO Recordset nesnesinin MoveFirst ve MoveLast yntemlerine benzer. Basit biimde, sorgunun dndrd sonu kmesindeki ilk veya son kaydn alan deerini dndrr. Kaytlar genellikle belirli bir srada dndrlmediklerinden (sorgu iinde ORDER BY yan tmcesi yoksa), bu ilevlerin dndrd kaytlar dzensizdir. First, Last levleri rnei Bu rnek, alanlar tablosundaki ilk ve son kaytlarn Soyad alanlarnn deerlerini vermek zere alanlar tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub FirstLastX1() Dim dbs As Database, rst As Recordset

Sql (Structured Query Language) Saadettin POLAT 47/85

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' Tablonun ilk ve son kayytlarynyn Soyady ' alannn deerini verir. Set rst = dbs.OpenRecordset("SELECT " _ & "First(Soyady) as Ylk, " _ & "Last(Soyad) as Son FROM alanlar;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 12 dbs.Close End Sub Bir sonraki rnek, alanlarn ilk ve son doum tarihlerini bulmak zere basit bir ekilde Min ve Max ilevlerini kullanmak ile, First ve Last ilevlerini kullanmay karlatrr. Sub FirstLastX2() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' alanlarn ilk ve son doum tarihlerini ' bulur. Set rst = dbs.OpenRecordset("SELECT " _ & "First(DoumTarihi) as lkDT, " _ & "Last(DoumTarihi) as SonDT FROM alanlar;")

' Recordset'i balatr.

Sql (Structured Query Language) Saadettin POLAT 48/85

rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 12

Debug.Print ' alanlarn ilk ve son doum tarihlerini ' bulur. Set rst = dbs.OpenRecordset("SELECT " _ & "Min(DoumTarihi) as EnKkDT," _ & "Max(DoumTarihi) as EnBykDT FROM alanlar;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 12 dbs.Close End Sub Min, Max levleri Sorguda belirtilen alanda bulunan deer kmelerinin en byk veya en kk deerlerini hesaplar. Szdizimi Min(ifade) Max(ifade) fade yertutucusu, kullanmak istediiniz verileri ieren alan belirten bir dize ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Uyarlar Min ve Max', belirtilen toplam veya gruplandrmay temel alan alandaki en kk veya en byk deerleri belirlemek iin kullanabilirsiniz. rnein, bu ilevleri, en az ve az ok navlun bedellerini bulmak iin kullanabilirsiniz. Herhangi bir toplam ilevi belirtilmezse, tablonun tamam kullanlr.

Sql (Structured Query Language) Saadettin POLAT 49/85

Min ve Max ilevlerini bir sorgu ifadesinde ve bir QueryDef nesnesinin SQL zelliinde veya bir SQL sorgusunu temel alan bir Recordset nesnesi olutururken kullanabilirsiniz. Min, Max levleri rnei Bu rnek, ngiltere'ye teslim edilen siparilerin en az ve en ok navlun bedellerini vermek iin Sipariler tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub MinMaxX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' ngiltere'ye teslim edilmi olan siparilerin en az ' ve en ok navlun bedelini verir. Set rst = dbs.OpenRecordset("SELECT " _ & "Min(Navlun) AS [En Az Navlun], " _ & "Max(Navlun)AS [En ok Navlun] " _ & "FROM Sipariler WHERE Teslimlkesi = 'ngiltere';" ' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 12 dbs.Close End Sub StDev, StDevP levleri Sorgunun belirtilen bir alannda bulunan deerler kmesi olarak temsil edilen bir grubun veya grup rneinin yaklak standart sapmasn verir. Szdizimi StDev(ifade) StDevP(ifade) fade yertutucusu, kullanmak istediiniz saysal verileri ieren alan belirten bir dize ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler,

Sql (Structured Query Language) Saadettin POLAT 50/85

tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Uyarlar StDevP ilevi bir grubu deerlendirir ve StDev ilevi bir grup rneini deerlendirir. Temel alnan sorgu ikiden az kayt ieriyorsa (veya StDevP ilevi iin kayt iermiyorsa), bu ilevler bir Null deeri dndrrler (bu da, standart sapmann hesaplanamayacan belirtir). StDev ve StDevP ilevlerini bir sorgu ifadesinde kullanabilirsiniz. Bu ifadeyi ayrca, bir QueryDef nesnesinin SQL zelliinde veya bir SQL sorgusunu temel alan bir Recordset nesnesi olutururken kullanabilirsiniz. StDev, StDevP levleri rnei Bu rnek, ngiltere'ye teslim edilen siparilerin navlun bedellerinin standart sapman tahmin etmek iin Sipariler tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub StDevX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' ngiltere'ye teslim edilmi olan siparilerin navlun ' bedellerinin standart sapmasyny hesaplar. Set rst = dbs.OpenRecordset("SELECT " _ & "StDev(Navlun) " _ & "AS [Navlun Dev] FROM Sipariler " _ & "WHERE Teslimlkesi = 'Yngiltere';") ' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 15

Debug.Print

Set rst = dbs.OpenRecordset("SELECT " _ & "StDevP(Navlun) " _

Sql (Structured Query Language) Saadettin POLAT 51/85

& "AS [Navlun DevP] FROM Sipariler " _ & "WHERE Teslimlkesi = 'Yngiltere';") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 15 dbs.Close End Sub Sum levi Sorguda belirtilen alanda bulunan deer kmesinin toplamn hesaplar. Szdizimi Sum(ifade) fade yertutucusu, eklemek istediiniz saysal verileri ieren alan belirten bir dize ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Uyarlar Sum ilevi, bir alandaki deerleri toplar. rnein, Sum ilevini, navlun bedellerinin toplamn bulmak iin kullanabilirsiniz. Sum ilevi, Null alanlarn ieren kaytlar yoksayar. Aadaki rnek, rnlerin BirimFiyat ve Miktar bilgilerinin toplamn nasl toplayabileceinizi gsterir: SELECT Sum(BirimFiyaty * Miktar) AS [Toplam Gelir] FROM [Sipari Ayrntlar]; Sum ilevini bir sorgu ifadesinde kullanabilirsiniz. Bu ifadeyi ayrca, bir QueryDef nesnesinin SQL zelliinde veya bir SQL sorgusunu temel alan bir Recordset nesnesi olutururken kullanabilirsiniz. Sum levi rnei Bu rnek, ngiltere'ye teslim edilen siparilerin toplam sat miktarn hesaplamak iin Sipariler tablosunu kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub SumX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin.

Sql (Structured Query Language) Saadettin POLAT 52/85

Set dbs = OpenDatabase("Northwind.mdb") ' ngiltere'ye teslim edilmi siparilerin toplam ' sat miktarn hesaplar. Set rst = dbs.OpenRecordset("SELECT" _ & " Sum(BirimFiyaty*Miktar)" _ & " AS [Toplam ngiltere Satlar] FROM Sipariler" _ & " INNER JOIN [Sipari Ayrntlar] ON" _ & " Sipariler.SipariNo = [Sipari Ayrntlar].SipariNo" _ & " WHERE (Teslimlkesi = 'Yngiltere');") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 15

dbs.Close End Sub Var, VarP levleri Sorgunun belirtilen bir alannda bulunan deerler kmesi olarak temsil edilen bir grubun veya grup rneinin yaklak varyansn verir. Szdizimi Var(ifade) VarP(ifade) fade yertutucusu, kullanmak istediiniz saysal verileri ieren alan belirten bir dize ifadesini veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder. fade iindeki ileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Uyarlar VarP ilevi bir grubu deerlendirir ve Var ilevi bir grup rneini deerlendirir. Temel alnan sorgu ikiden az kayt ieriyorsa, Var ve VarP ilevleri standart sapmann hesaplanamayacan belirten bir Null deeri dndrrler. Var ve VarP ilevlerini bir sorgu ifadesinde veya bir SQL deyiminde kullanabilirsiniz. Var, VarP levleri Bu rnek, ngiltere'ye teslim edilen siparilerin navlun bedellerinin varyansn tahmin etmek iin Sipariler tablosunu kullanr.

Sql (Structured Query Language) Saadettin POLAT 53/85

Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub VarX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' ngiltere'ye teslim edilmi olan siparilerin navlun ' bedellerinin varyansyny hesaplar. Set rst = dbs.OpenRecordset("SELECT " _ & "Var(Navlun) " _ & "AS [Yngiltere Navlun Var] " _ & "FROM Sipariler WHERE Teslimlkesi = 'ngiltere';") ' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 20

Debug.Print

Set rst = dbs.OpenRecordset("SELECT " _ & "VarP(Navlun) " _ & "AS [Yngiltere Navlun VarP] " _ & "FROM Sipariler WHERE Teslimlkesi = 'ngiltere';") ' Recordset'i balatr. rst.MoveLast ' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 20 dbs.Close

Sql (Structured Query Language) Saadettin POLAT 54/85

End Sub VER TANIMI DL CREATE TABLE Deyimi Yeni bir tablo oluturur. Not Microsoft Jet veritaban alt yaps, Microsoft Jet veritabanlar dnda CREATE TABLE kullanmn veya herhangi bir DDL deyimini desteklemez. Bunun yerine DAO Create yntemlerini kullann. Szdizimi CREATE [TEMPORARY] TABLE tablo (alan1 tr [(boyut)] [NOT NULL] [WITH COMPRESSION | WITH COMP] [dizin1] [, alan2 tr [(boyut)] [NOT NULL] [dizin2] [, ...]] [, CONSTRAINT okalanldizin [, ...]]) CREATE TABLE deyiminin blmleri unlardr: Blm tablo alan1, alan2 tr boyut dizin1, dizin2 Aklama Oluturulacak tablonun ad. Yeni tabloda oluturulacak alan veya alanlarn ad. En az bir alan oluturmalsnz. Yeni tablodaki alann veri trdr. Karakter olarak alan boyutu (yalnzca Metin ve kili alanlarnda). Tek alanl dizini tanmlayan bir CONSTRAINT yan tmcesidir. Bu dizini oluturma konusunda ayrntl bilgi iin CONSTRAINT Yan Tmcesi konusuna bakn. ok alanl dizini tanmlayan bir CONSTRAINT yan tmcesidir. Bu dizini oluturma konusunda ayrntl bilgi iin CONSTRAINT Yan Tmcesi konusuna bakn.

okalanldizin

Uyarlar Yeni bir tablo ile alanlarn ve alan kstlamalarn tanmlamak iin CREATE TABLE deyimini kullann. Bir alan iin NOT NULL zelliini belirlerseniz, bu alanda geerli veriler bulundurmak zere yeni kaytlar gerekir. Bir CONSTRAINT yan tmcesi, bir alana deiik kstlamalar koyar ve birincil anahtar oluturmak zere kullanlabilir. CREATE INDEX deyimini, var olan tablolarda birincil anahtar veya ek dizinler oluturmak zere kullanabilirsiniz. Tek bir alanda veya CONSTRAINT adl tek veya ok alana uygulanm adlandrlm bir CONSTRAINT yan tmcesinde NOT NULL kullanamazsnz. Bununla beraber, NOT NULL kstlamasn yalnzca bir kez bir alana uygulayabilirsiniz. Bu kstlamay birden ok kere uygulamay denerseniz, alma an hatas alrsnz. Oluturulan TEMPORARY bir tablo, ancak iinde oluturulduu oturumda grnr durumda kalr. Oturum sonlandrldnda tablo da otomatik olarak silinir. Geici tablolara, birden ok kullanc eriebilir. WITH COMPRESSION zellii, yalnzca CHARACTER ve MEMO (TEXT olarak da bilinir) veri trleri ve onlarn eanlamllar ile kullanlabilir. Unicode karakter sunu biimindeki deiiklikten dolay, CHARACTER stunlar iin WITH COMPRESSION zellii eklenmitir. Her bir Unicode karakter iki bayt gerektirir. Daha ok karakter verilerine sahip var olan Microsoft Jet veritabanlarnda, veritaban Microsoft Jet version 4.0 biimine dntrldnde veritaban dosyasnn boyutu yaklak olarak iki katna kacaktr. Ancak, Tek Baytlk Karakter Kmeleri (SBCS) olarak bilinen ou karakter kmesinin Unicode

Sql (Structured Query Language) Saadettin POLAT 55/85

sunumu kolaylkla tek bayta sktrlabilir. Bu zellikte bir CHARACTER stunu tanmlarsanz, veriler saklanrken otomatik olarak sktrlacak ve stundan alnrken de otomatik olarak geniletileceklerdir. Verileri sktrlm biimde saklamak iin MEMO stunlar da tanmlanabilir. Ancak, bir snrlama vardr. Yalnzca, sktrldnda 4096 bayt ya da daha az yer tutan MEMO stunlar sktrlr. Dier tm MEMO stunlar, sktrlmam olarak kalr. Bylece, belirli bir tabloda belirli bir MEMO stunu iin, verilerin bir ksm sktrlm dierleri sktrlmam olabilir. CREATE TABLE Deyimi, CONSRAINT Yan Tmcesi rnei Bu rnek, iki metin alan olan BuTablo adl yeni bir tablo oluturur. Sub CreateTableX1() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' ki metin alan olan bir tablo oluturur. dbs.Execute "CREATE TABLE BuTablo " _ & "(Ady CHAR, Soyady CHAR);" dbs.Close End Sub Bu rnek, iki metin alan bir Tarih/Saat alan ve bu alandan oluan benzersiz bir dizini olan Tablom adl yeni bir tablo oluturur. Sub CreateTableX2() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alan ve bu alandan oluan benzersiz ' bir dizini olan bir tablo oluturur. dbs.Execute "CREATE TABLE Tablom " _ & "(Ady CHAR, Soyady CHAR, " _ & "DoumTarihi DATETIME, " _ & "CONSTRAINT TablomKysytlamasy UNIQUE " _ & "(Ad, Soyad, DoumTarihi));" dbs.Close End Sub Bu rnek, iki metin alan ve bir tamsay alan olan yeni bir tablo oluturur. SSN alan birincil anahtardr.

Sql (Structured Query Language) Saadettin POLAT 56/85

Sub CreateTableX3() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alany ve bir birincil anahtary olan bir tablo ' oluturur. dbs.Execute "CREATE TABLE YeniTablo " _ & "(Ady CHAR, Soyady CHAR, " _ & "SSN INTEGER CONSTRAINT AlanymKysytlamasy " _ & "PRIMARY KEY);" dbs.Close End Sub CREATE INDEX Deyimi Var olan bir tabloda yeni bir dizin oluturur. Not Microsoft Jet veritabanlar dnda, Microsoft Jet veritaban alt yaps CREATE INDEX (ODBC bal tabloda geici dizin oluturma dnda) deyiminin veya dier veri tanm dili (DDL) deyimlerinin kullanmn desteklemez. Bunun yerine DAO Create yntemlerini kullann. Ayrntl bilgi iin Uyarlar blmne bakn. Szdizimi CREATE [ UNIQUE ] INDEX dizin ON tablo (alan [ASC|DESC][, alan [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }] CREATE INDEX deyiminin blmleri unlardr: Blm dizin tablo alan Aklama Oluturulacak dizinin ad. Dizini ierecek var olan tablonun ad. Dizilecek alan veya alanlarn ad. Tek alanl dizinin oluturulmas iin, tablo adnn ardndan ayralar iinde alan adn listeleyin. ok alanl dizin oluturmak iin, dizin iinde bulundurulacak her alann adn listeleyin. Azalan dizinler oluturmak iin DESC sakl szcn kullann, aksi takdirde dizinlerin artan biimde olduu varsaylr.

Uyarlar Farkl kaytlarn dizili alan veya alanlarnda deerlerin yinelenmesini engellemek iin, UNIQUE sakl szcn kullann. sterseniz kullanabileceiniz WITH yan tmcesi ile, veri dorulama kurallarn verebilirsiniz. unlar yapabilirsiniz:

DISALLOW NULL seeneini kullanarak yeni kaytlarn dizili alan veya alanlarnda Null girileri engelleyebilirsiniz.

Sql (Structured Query Language) Saadettin POLAT 57/85

IGNORE NULL seeneini kullanarak, Null deerler ieren dizili alan veya alanlar olan kaytlarn dizin iinde yer almasn nleyebilirsiniz. PRIMARY sakl szcn kullanarak, dizili alan veya alanlar birincil anahtar olarak belirleyebilirsiniz. Bu, anahtarn benzersiz olmasn salar bylece UNIQUE sakl szcn eklemeyebilirsiniz.

Microsoft SQL Server gibi bir ODBC veri kayna iinde bulunan ve bir dizini olmayan bal tabloda geici dizin oluturmak iin CREATE INDEX'i kullanabilirsiniz. Geici dizin oluturmak iin, uzaktaki sunucuda yetki veya eriim izninizin olmas gerekmez; uzaktaki veritaban geici dizinden etkilenmez ve bu durumdan haberdar olmaz. Hem bal hem de yerel tablolarda ayn szdizimini kullanabilirsiniz. Genellikle salt okunur olacak bir tabloda geici dizin oluturmak zellikle kullanl olabilir. Bir tabloya tek veya ok alanl dizin eklemek iin ALTER TABLE deyimini de kullanabilirsiniz; ya da ALTER TABLE veya CREATE INDEX ile oluturulmu bir dizini kaldrmak iin ALTER TABLE deyimini veya DROP deyimini kullanabilirsiniz. Not Zaten birincil anahtar olan bir tabloda yeni bir dizin oluturmak iin PRIMARY sakl szcn kullanmayn, aksi takdirde hata oluur. CREATE PROCEDURE Deyimi Sakl bir yordam oluturur. Not Microsoft Jet veritaban alt yaps, Microsoft Jet veritabanlar dnda CREATE PROCEDURE kullanmn veya herhangi bir DDL deyimini desteklemez. Szdizimi CREATE PROCEDURE yordam [param1 veritr[, param2 veritr[, ...]] AS sqlstatement CREATE PROCEDURE deyiminin blmleri unlardr: Blm yordam param1, param2 Aklama Yordamn ad. Standart adlandrma kurallarna uymaldr. 1 ile 255 arasnda alan ad veya parametredir. rnein: CREATE PROCEDURE lkelere_Gre_Satlar [Balang Tarihi] DateTime, [Biti Tarihi] DateTime; Parametreler hakknda ayrntl bilgi iin PARAMETERS konusuna bakn. veritr sqldeyimi Birincil Microsoft Jet SQL veri trleri veya onlarn eanlamllarndan biridir. SELECT, UPDATE, DELETE, INSERT, CREATE TABLE, DROP TABLE vs. gibi bir SQL deyimidir.

Uyarlar Bir SQL yordam, yordamn adn belirten PROCEDURE yan tmcesinden, istee bal bir parametre tanmlar listesinden ve tek bir SQL deyiminden oluur. Bir yordam ad, var olan bir tablonun ad ile ayn olamaz. CREATE PROCEDURE Deyimi, PROCEDURE Yan Tmcesi rnei Bu rnek, sorguyu KategoriListesi olarak adlandrr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub ProcedureX()

Sql (Structured Query Language) Saadettin POLAT 58/85

Dim dbs As Database, rst As Recordset Dim qdf As QueryDef, strSql As String

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

strSql = "PROCEDURE KategoriListesi; " _ & "SELECT DISTINCTROW KategoriAdy, " _ & "KategoriNo FROM Kategoriler " _ & "ORDER BY KategoriAdy;"

' SQL deyimini temel alan bir adlandrlm ' bir QueryDef oluturur. Set qdf = dbs.CreateQueryDef("YeniSorgu", strSql) ' Geici bir anlk grnt trnde Recordset oluturur. Set rst = qdf.OpenRecordset(dbOpenSnapshot) ' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 15

' Bu bir rnek olduu iin QueryDef'i ' siler. dbs.QueryDefs.Delete "YeniSorgu"

dbs.Close End Sub CREATE USER veya GROUP Deyimi Bir veya daha ok kullanc veya grup oluturur.

Sql (Structured Query Language) Saadettin POLAT 59/85

Szdizimi Kullanc oluturma: CREATE USER kullanc parola kimlikno [, kullanc parola kimlikno, ] Grup oluturma: CREATE GROUP grup kimlikno[, grup kimlikno, ] CREATE USER veya GROUP deyimlerinin blmleri unlardr: Blm kullanc grup parola kimlikno Uyarlar Kullanc ve grup adlar ayn olamaz. Oluturulacak her bir kullanc veya grup iin bir parola gereklidir. CREATE VIEW Deyimi Yeni bir grnm oluturur. Not Microsoft Jet veritaban alt yaps, Microsoft Jet veritabanlar dnda CREATE VIEW kullanmn veya herhangi bir DDL deyimini desteklemez. Szdizimi CREATE VIEW grnm [(alan1[, alan2[, ...]])] AS semedeyimi CREATE VIEW deyiminin blmleri unlardr: Blm grnm alan1, alan2 semedeyimi Aklama Oluturulacak grnmn ad. Semedeyimi iinde belirtilen ilgili alanlar iin alan veya alanlarn ad. Bir SQL SELECT deyimidir. Ayrntl bilgi iin SELECT deyimi konusuna bakn. Aklama alma grubu bilgileri dosyasna eklenecek kullanc addr. alma grubu bilgileri dosyasna eklenecek grup addr. Belirtilen kullanc ad ile ilikilendirilmi paroladr. Kiinin kimlik numarasdr.

Uyarlar Grnm tanmlayan SELECT deyimi, bir SELECT INTO deyimi olamaz. Grnm tanmlayan SELECT deyimi herhangi bir parametre ieremez. Bir grnm ad, var olan bir tablonun ad ile ayn olamaz. SELECT deyimi ile tanmlanan sorgu gncelletirilebilir ise, grnm de gncelletirilebilir. Aksi takdirde grnm salt okunurdur. SELECT deyimi ile tanmlanan sorgudaki herhangi iki alan ayn ada sahipse, grnm tanm, sorgudaki alanlarn benzersiz adlarn belirten bir alan listesi iermelidir. ADD USER Deyimi

Sql (Structured Query Language) Saadettin POLAT 60/85

Varolan bir gruba bir veya daha ok kullanc ekler. Szdizimi ADD USER kullanc[, kullanc, ] TO grup ADD USER deyiminin blmleri unlardr: Blm kullanc grup Uyarlar Kullanc bir gruba eklendiinde, kullanc bu gruba verilmi olan tm izinlere sahip olur. DROP USER veya GROUP Deyimi Varolan bir veya daha ok kullancy veya grubu siler veya varolan bir gruptan varolan bir veya daha ok kullancy kaldrr. Szdizimi Bir veya daha ok kullancy siler veya bir gruptan bir veya daha ok kullancy kaldrr. DROP USER kullanc[, kullanc, ] [FROM grup] Bir veya daha ok grubu silme: DROP GROUP grup[, grup, ] DROP USER veya GROUP deyimlerinin blmleri unlardr: Blm kullanc grup Uyarlar FROM anahtar szc DROP USER deyiminde kullanlrsa, deyimde listelenen her kullanc FROM anahtar szcnden sonra belirtilen gruptan kaldrlacaktr. Ancak kullanclarn kendiler silinmez. DROP GROUP deyimi belirtilen gruplar siler. Grubun yesi olan kullanclar bundan etkilenmezler, ancak artk silinen gruplarn yesi deillerdir. ALTER TABLE Deyimi CREATE TABLE deyimi ile oluturulan tablonun tasarmn deitirir. Not Microsoft Jet veritaban tasarm, Microsoft Jet veritabanlar dnda ALTER TABLE kullanmn veya herhangi bir veri tanm dili (DDL) deyimini desteklemez. Bunun yerine DAO Create yntemlerini kullann. Szdizimi ALTER TABLE tablo {ADD {COLUMN alan tr[(boyut)] [NOT NULL] dizin] | ALTER COLUMN alan tr[(boyut)] | CONSTRAINT okalanldizin} | DROP {COLUMN alan I CONSTRAINT dizinad} } [CONSTRAINT Aklama alma grubu bilgileri dosyasndan kaldrlacak kullanc addr. alma grubu bilgileri dosyasndan kaldrlacak grup addr. Aklama alma grubu bilgileri dosyasna eklenecek kullanc addr. alma grubudadefWorkgroupbilgileri dosyasna eklenecek grup addr.

Sql (Structured Query Language) Saadettin POLAT 61/85

ALTER TABLE deyiminin blmleri unlardr: Blm tablo alan tr boyut dizin okalanldizin dizinad Uyarlar ALTER TABLE deyimini kullanarak var olan bir tabloyu farkl yollarla deitirebilirsiniz. unlar yapabilirsiniz: Aklama Deitirilecek tablonun ad. Tabloya eklenecek veya tablodan silinecek alann ad. Ya da, tabloda deitirilecek alann ad. Alann veri tr. Karakter olarak alan boyutu (yalnzca Metin ve kili alanlarnda). Alann dizini. Bu dizini oluturma konusunda ayrntl bilgi iin CONSTRAINT Yan Tmcesi konusuna bakn. Tabloya eklenecek ok alanl dizinin tanm. Bu dizini oluturma konusunda ayrntl bilgi iin CONSTRAINT Yan Tmcesi konusuna bakn. Kaldrlacak ok alanl dizinin ad.

Tabloya yeni bir alan eklemek iin ADD COLUMN' kullanabilirsiniz. Alan adn, veri trn ve istee bal olarak boyutu (Metin ve kili alanlar iin) belirtirsiniz. rnein, aadaki deyim alan tablosuna Notlar adl 25 karakterlik bir Metin alan ekler. ALTER TABLE alan ADD COLUMN Notlar TEXT(25) Bu alana bir dizin de tanmlayabilirsiniz. Tek alanl dizinler konusunda ayrntl bilgi iin CONSTRAINT Yan Tmcesi konusuna bakn. Bir alan iin NOT NULL zelliini belirlerseniz, bu alanda geerli veriler bulundurmak zere yeni kaytlar gerekir.

Var olan bir alann veri trn deitirmek iin ALTER COLUMN' kullanabilirsiniz. Alan adn, yeni veri trn ve istee bal olarak Metin ve kili alan boyutunu belirtirsiniz. rnein aadaki deyim, alan tablosundaki zgn olarak Tamsay eklinde tanml PostaKodu alannn veri trn 10 karakterlik Metin alan olarak deitirir: ALTER TABLE alan ALTER COLUMN PostaKodu TEXT(25)

ok alanl dizin eklemek iin ADD CONSTRAINT'i kullanabilirsiniz. ok alanl dizinler konusunda ayrntl bilgi iin CONSTRAINT Yan Tmcesi konusuna bakn. Alan silmek iin DROP COLUMN' kullanabilirsiniz. Yalnzca alann adn belirtirsiniz. ok alanl dizini silmek iin DROP CONSTRAINT'i kullanabilirsiniz. CONSTRAINT sakl szcnn ardndan yalnzca dizin adn belirtirsiniz.

Notlar

Bir anda birden ok alan veya dizin ekleyemez veya silemezsiniz. Bir tabloya tek veya ok alanl dizin eklemek iin CREATE INDEX deyimini kullanabilirsiniz; ya da ALTER TABLE veya CREATE INDEX ile oluturulmu bir dizini silmek iin DROP deyimini kullanabilirsiniz. Tek bir alanda veya CONSTRAINT adl tek veya ok alana uygulanm adlandrlm bir CONSTRAINT yan tmcesinde NOT NULL kullanamazsnz. Bununla beraber, NOT NULL kstlamasn yalnzca bir kez bir alana uygulayabilirsiniz. Bu kstlamay birden ok kere uygulamay denerseniz, alma an hatas alrsnz.

Sql (Structured Query Language) Saadettin POLAT 62/85

ALTER TABLE Deyimi rnei Bu rnek, alanlar tablosuna Money veri trnde bir Maa alan ekler. Sub AlterTableX1() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Maa alann alanlar tablosuna ekler ve ' alanyn veri trn Money yapar. dbs.Execute "ALTER TABLE alanlar " _ & "ADD COLUMN Maa MONEY;" dbs.Close End Sub Bu rnek, Maa alannn veri trn Money yerine Char olarak deitirir. Sub AlterTableX2() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Maa alann alanlar tablosuna ekler ve ' alanyn veri trn Money yapar. dbs.Execute "ALTER TABLE alanlar " _ & "ALTER COLUMN Maa CHAR(20);" dbs.Close End Sub Bu rnek Maa alann alanlar tablosundan kaldrr. Sub AlterTableX3() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Maa alann alanlar tablosundan siler. dbs.Execute "ALTER TABLE alanlar " _

Sql (Structured Query Language) Saadettin POLAT 63/85

& "DROP COLUMN Maa;" dbs.Close End Sub Bu rnek Sipariler tablosuna bir yabanc anahtar ekler. Yabanc anahtar alanNo alann temel alr ve alanlar tablosundaki alanNo alanna bavurur. Bu rnekte, REFERENCES yan tmcesinde alanlar tablosundan sonra alanNo alann listelemeniz gerekmez nk alanNo, alanlar tablosunun birincil anahtardr. Sub AlterTableX4() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Sipariler tablosuna bir yabanc anahtar ekler. dbs.Execute "ALTER TABLE Sipariler " _ & "ADD CONSTRAINT Siparilerlikisi " _ & "FOREIGN KEY (alanNo) " _ & "REFERENCES alanlar (alanNo);" dbs.Close End Sub Bu rnek Sipariler tablosundan yabanc anahtar kaldrr. Sub AlterTableX5() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' Siparilerlikisi yabanc anahtarn Sipariler ' tablosundan kaldyryr. dbs.Execute "ALTER TABLE Sipariler " _ & "DROP CONSTRAINT Siparilerlikisi " _ dbs.Close End Sub ALTER USER veya DATABASE Deyimi Varolan bir kullancnn veya bir veritabannn parolasn deitirir. Szdizimi

Sql (Structured Query Language) Saadettin POLAT 64/85

ALTER DATABASE PASSWORD yeniparola eskiparola ALTER USER kullanc PASSWORD yeniparola eskiparola ALTER USER veya DATABASE deyimlerinin blmleri unlardr: Blm kullanc yeniparola eskiparola DROP Deyimi Varolan bir tabloyu, yordam veya grnm veritabanndan siler; ya da var olan bir dizini tablodan siler. Not Microsoft Jet veritaban alt yaps, Microsoft Jet veritabanlar dnda DROP kullanmn veya herhangi bir DDL deyimini desteklemez. Bunun yerine DAO Delete yntemlerini kullann. Szdizimi DROP {TABLE tablo | INDEX dizin ON tablo | PROCEDURE yordam | VIEW grnm} DROP deyiminin blmleri unlardr: Blm tablo yordam grnm dizin Uyarlar Tabloyu silmeden veya dizinini kaldrmadan nce tabloyu kapatmalsnz. Tablodan bir dizin silmek iin ALTER TABLE de kullanlabilir. Tablo oluturmak iin CREATE TABLE ve dizin oluturmak iin CREATE INDEX or ALTER TABLE komutlarn kullanabilirsiniz. Bir tabloyu deitirmek iin ALTER TABLE'i kullann. DROP Deyimi rnei Aadaki rnek, Northwind veritabanndaki alanlar tablosunda YeniDizin dizininin bulunduunu varsayar. Bu rnek, Dizinim dizinini alanlar tablosundan siler. Sub DropX1() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' YeniDizin dizinini alanlar tablosundan siler. dbs.Execute "DROP INDEX YeniDizin ON alanlar;" Aklama Silinecek tablonun ad veya iinden dizinin silinecei tablonun ad. Silinecek yordamn ad. Silinecek grnmn ad. Tablodan silinecek dizinin ad. Aklama alma grubu bilgileri dosyasna eklenecek kullanc addr. Belirtilen kullanc veya veritaban ad ile ilikilendirilmi yeni paroladr. Belirtilen kullanc veya grup ad ile ilikilendirilmi varolan paroladr.

Sql (Structured Query Language) Saadettin POLAT 65/85

dbs.Close End Sub Bu rnek, alanlar tablosunu veritabanndan siler. Sub DropX2() Dim dbs As Database ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb") ' alanlar tablosunu siler. dbs.Execute "DROP TABLE alanlar;" dbs.Close End Sub GRANT Deyimi Belitilen ayrcalklar varolan bir kullancya veya gruba verir. Szdizimi GRANT {ayrcalk[, ayrcalk, ]} ON {TABLE tablo | OBJECT nesne| CONTAINER konteyner } TO {yetkisahibiad[, yetkisahibiad, ]} GRANT deyiminin blmleri unlardr: Blm ayrcalk Aklama Verilecek olan ayrcalk veya ayrcalklardr. Ayrcalklar aadaki anahtar szckler kullanlarak belirtilir: SELECT, DELETE, INSERT, UPDATE, DROP, SELECTSECURITY, UPDATESECURITY, DBPASSWORD, UPDATEIDENTITY, CREATE, SELECTSCHEMA, SCHEMA ve UPDATEOWNER. tablo nesne konteyner yetkisahibiad Geerli bir tablo ad. Bu tablo olmayan bir nesneyi ierebilir. Sakl bir sorgu (grnm veya yordam) bir rnek olabilir. Geerli bir konteynerin addr. Kullanc veya grup addr.

DER
REVOKE Deyimi Belitilen ayrcalklar varolan bir kullancdan veya gruptan geri alr. Szdizimi

Sql (Structured Query Language) Saadettin POLAT 66/85

REVOKE {ayrcalk[, ayrcalk, ]} ON {TABLE tablo | OBJECT nesne| CONTAINER konteyner } FROM {yetkisahibiad[, yetkisahibiad, ]} REVOKE deyiminin blmleri unlardr: Blm ayrcalk Aklama Geri alnacak olan ayrcalk veya ayrcalklardr. Ayrcalklar aadaki anahtar szckler kullanlarak belirtilir: SELECT, DELETE, INSERT, UPDATE, DROP, SELECTSECURITY, UPDATESECURITY, DBPASSWORD, UPDATEIDENTITY, CREATE, SELECTSCHEMA, SCHEMA ve UPDATEOWNER. tablo nesne konteyner yetkisahibiad Geerli bir tablo ad. Bu tablo olmayan bir nesneyi ierebilir. Sakl bir sorgu (grnm veya yordam) bir rnek olabilir. Geerli bir konteynerin addr. Kullanc veya grup addr.

ALL, DISTINCT, DISTINCTROW, TOP Dorulamalar SQL sorgular ile seilen kaytlar belirler. Szdizimi SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM tablo Bu dorulamalar ieren bir SELECT deyiminin blmleri unlardr: Blm ALL Aklama Bu dorulamalardan herhangi birini bulundurmazsanz varsaylan deerdir. Microsoft Jet veritaban alt yaps, SQL deyimindeki koullara uyan tm kaytlar seer. Aadadaki iki rnek edeerdir ve alanlar tablosundaki tm kaytlar dndrrler. SELECT ALL * FROM alanlar ORDER BY alanNo; SELECT * FROM alanlar ORDER BY alanNo; DISTINCT Seili alanlardan yinelenen verileri ieren kaytlar gzard eder. Sorgu sonularnda yer alabilmesi iin, SELECT deyiminde listelenen her alann deeri benzersiz olmaldr. rnein, alanlar tablosundaki ok sayda alan ayn soyadna sahip olabilir. ki kayt Soyad alannda Etikan adn ieriyorsa, aadaki SQL deyimi Etikan adn ieren yalnzca bir tek kayt dndrr. SELECT DISTINCT Soyad FROM alanlar; DISTINCT'i yazmazsanz, bu sorgu her iki Etikan kaydn da dndrr. SELECT yan tmcesi birden fazla alan ieriyorsa, belirli bir kaydn

Sql (Structured Query Language) Saadettin POLAT 67/85

sonular iinde bulunmas iin, alanlardaki deerlerin birleimi benzersiz olmaldr. DISTINCT'i kullanan bir sorgunun kts gncelletirilebilir deildir ve dier kullanclarn sonradan yaptklar deiiklikleri yanstmaz. DISTINCTROW Alanlarn deil, kaydn tamam yineleniyorsa verileri gzard eder. rnein, Mteriler ve Sipariler tablolarn MteriNo alanyla birletiren bir sorgu oluturabilirsiniz. Mteriler tablosunda yinelenen MteriNo alan yoktur, ancak her mterinin ok sayda siparii olduundan Sipariler tablosunda yinelenen MteriNo alan vardr. Aadaki SQL deyimi, en az bir siparii olan irketlerin listesini bu sipariler hakknda herhangi bir ayrnt vermeden oluturmak zere DISTINCTROW'u nasl kullanacanz gsterir. SELECT DISTINCTROW irketAd FROM Mteriler INNER JOIN Sipariler ON Mteriler.MteriNo = Sipariler.MteriNo ORDER BY irketAd; DISTINCTROW'u yazmazsanz bu sorgu, birden fazla siparii olan her irket iin ok sayda satr oluturur. Sorguda kullanlan tablolarn tm alanlarn deil yalnzca baz alanlarn setiinizde DISTINCTROW'un bir etkisi olur. Sorgunuz yalnzca tek bir tablo ieriyorsa ya da tm tablolardaki alanlar alyorsanz DISTINCTROW yok saylr. TOP n [PERCENT] ORDER BY yan tmcesi ile belirtilen araln stne veya altna den belirli sayda kayd dndrr. 1994 ylnn en baarl 25 rencisinin adlarn almak istediinizi varsayalm: SELECT TOP 25 Ad, Soyad FROM renciler WHERE MezuniyetYl = 1994 ORDER BY MezuniyetDerecesi DESC; ORDER BY yan tmcesini bulundurmazsanz, sorgu, WHERE yan tmcesini salayan renciler tablosunun rasgele 25 kaydn dndrr. TOP seimi, eit deerler arasnda seim yapmaz. nceki rnekte 25. ve 26. renci ayn mezuniyet derecesine sahipse, sorgu 26 kayt geri dndrr. ORDER BY yan tmcesi ile belirtilen araln stne veya altna den kaytlarn belirli bir yzdesini dndrmek iin, PERCENT sakl szcn de kullanabilirsiniz. 25 rencisi yerine, snfn en dk yzde 10'unun adlarn almak istediinizi varsayalm: SELECT TOP 10 PERCENT Ad, Soyad FROM renciler WHERE MezuniyetYl = 1994 ORDER BY MezuniyetDerecesi ASC; ASC dorulamas, alttaki deerlerin dndrleceini belirtir. TOP'u salayan deer, iaretsiz bir Tamsay olmaldr. TOP, sorgunun gncelletirilebilir olup olmamasn etkilemez. tablo inden kaytlarn seilecei tablonun addr.

Sql (Structured Query Language) Saadettin POLAT 68/85

ALL DISTINCT, DISTINCTROW, TOP Dorulamalar rnei Bu rnek, Mteriler ve Sipariler tablolarn MteriNo alanyla birletiren bir sorgu oluturur. Mteriler tablosunda yinelenen MteriNo alan yoktur, ancak her mterinin ok sayda siparii olduundan Sipariler tablosunda yinelenen MteriNo alan vardr. DISTINCTROW kullanlarak, en az bir siparii olan irketlerin listesi, bu siparilerin ayrntlar verilmeden oluturulur. Sub AllDistinctX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' Mteriler ve Sipariler tablolar MteriNo ' alan ile birletirilir. En az bir siparii olan ' irketler seilir. Set rst = dbs.OpenRecordset("SELECT DISTINCTROW " _ & "irketAd FROM Mteriler " _ & "INNER JOIN Sipariler " _ & "ON Mteriler.MteriNo = " _ & "Sipariler.MteriNo " _ & "ORDER BY irketAd;")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 25 dbs.Close End Sub

WITH OWNERACCESS OPTION Bildirimi

Sql (Structured Query Language) Saadettin POLAT 69/85

Gvenli alma grubu eklindeki ok kullancl bir ortamda bu bildirimi bir sorgu ile birlikte, sorguyu altran kullancya sorgunun sahibi ile ayn izinleri vermek iin kullann. Szdizimi sqldeyimi WITH OWNERACCESS OPTION Uyarlar WITH OWNERACCESS OPTION bildirimi istee baldr. Aadaki rnek, sorgu sahibinin maa bilgilerini grntleme iznine sahip olmas halinde, kullancnn bu bilgileri grmesini (kullancnn Bordro tablosunu grntleme izni olmasa bile) salar: SELECT Soyady, Ad, Maa FROM alanlar ORDER BY Soyady WITH OWNERACCESS OPTION; Kullancya normalde tablo oluturma veya tabloya ekleme yapma izni verilmemise, kullancnn tablo oluturma veya ekleme sorgusu altrmasn salamak iin WITH OWNERACCESS OPTION' kullanabilirsiniz. alma grubu gvenlik ayarlarna ve kullancnn izinlerine uymak istiyorsanz, WITH OWNERACCESS OPTION bildirimini kullanmayn. Bu seenek, bu veritaban ile ilikilendirilmi System.mdw dosyasna eriiminiz olmasn gerektirir. Bu, ancak ok kullancl ve gvenli uygulamalarda kullanldr.

SQL levlerinde Alanlar Hesaplama Bir alandaki deerler zerinde bir hesaplama yapmak iin, bir SQL toplam ilevinde dize ifadesi deikenini kullanabilirsiniz. rnein, bir alan deerini bir sabitle arparak bir yzdeyi (sat vergisi veya ek vergi gibi) hesaplayabilirsiniz. Aadaki tablo, Northwind.mdb veritabanndaki Sipariler ve Sipari Ayrntlar tablolarnn alanlarnda yaplan hesaplama rnekleri sunar. Hesaplama Alana bir say ekler Alandan bir say kartr Alan bir say ile arpar Alan bir sayya bler Bir alan dieri ile toplar Bir alan dierinden karr rnek Navlun + 5 Navlun - 5 BirimFiyat * 2 Navlun / 2 StoktakiBirim + SiparitekiBirim SipariDzeyi - StoktakiBirim

Aadaki rnek, Northwind.mdb veritabanndaki tm siparilerin ortalama indirim miktarn hesaplar. Her sipariin indirim miktarn hesaplamak iin BirimFiyat ile ndirim alanlarndaki deerleri arpar ve sonra ortalamay hesaplar. Bu ifadeyi bir Visual Basic kodunda SQL deyimi olarak kullanabilirsiniz: SELECT Avg(BirimFiyat * ndirim) AS [Ortalama ndirim] FROM [Sipari Ayrntlar];

Sql (Structured Query Language) Saadettin POLAT 70/85

PARAMETERS Bildirimi Parametre sorgusundaki her parametre iin ad veya veri trn bildirir. Szdizimi PARAMETERS ad veritr [, ad veritr [, ...]] PARAMETERS bildiriminin blmleri unlardr: Blm ad Aklama Parametrenin addr. Parameter nesnesinin Name zelliine atanmtr ve bu parametreyi Parameters derlemesinde belirlemek iin kullanlr. Ad, uygulamanz sorguyu altrrken bir iletiim kutusunda grntlenen bir dize olarak kullanlabilir. Boluk veya noktalama iareti ieren metinleri belirtmek iin keli ayralar([ ]) kullann. rnein [Dk fiyat] ve [Rapora hangi ay ile balansn?] geerli ad deikenleridir. Birincil Microsoft Jet SQL veri trleri veya onlarn eanlamllarndan biridir.

veritr Uyarlar

Dzenli olarak altrdnz sorgularda, bir parametre sorgusu oluturmak zere PARAMETERS bildirimini kullanabilirsiniz. Bir parametre sorgusu, sorgu ltn deitirme ilemini otomatik hale getirmenizde yardmc olabilir. Bir parametre sorgusu kullanlrsa, sorgu her altnda kodlarn parametreleri soracaktr. PARAMETERS bildirimi istee baldr ancak belirtilirse, SELECT dahil tm deyimlerden nce gelir. Bildirimde birden fazla parametre varsa, bunlar birbirlerinden virgller ile ayrn. Aadaki rnek iki parametre ierir: PARAMETERS [Dk fiyat] ParaBirimi, [Balang tarihi] TarihSaat; WHERE veya HAVING yan tmcesinde ad deikenini kullanabilirsiniz ancak veritr deikenini kullanamazsnz. Aadaki rnek, iki parametrenin girilmesini ister ve sonra lt Sipariler tablosuna uygular: PARAMETERS [Dk fiyat] ParaBirimi, [Balang tarihi] TarihSaat; SELECT SipariNo, SipariMiktar FROM Sipariler WHERE SipariMiktar > [Dk fiyat] AND SipariTarihi >= [Balang tarihi]; PARAMETERS Bildirimi rnei Bu rnek, kullancnn i nvann salamasn ister ve bu i nvann sorguda lt olarak kullanr. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub ParametersX() Dim dbs As Database, qdf As QueryDef Dim rst As Recordset Dim strSql As String, strParm As String Dim strMessage As String

Sql (Structured Query Language) Saadettin POLAT 71/85

Dim intCommand As Integer

' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("NorthWind.mdb")

' Parameters yan tmcesini tanymlar. strParm = "PARAMETERS [alan nvan] CHAR; " ' Parameters yan tmcesini ieren bir SQL ' deyimi tanymlar. strSql = strParm & "SELECT Soyady, Ady, " _ & "alanNo " _ & "FROM alanlar " _ & "WHERE nvan =[alan nvan];"

' SQL deyimini temel alan bir QueryDef nesnesi ' oluturur. Set qdf = dbs.CreateQueryDef _ ("alanlar Bul", strSql)

Do While True strMessage = "alanlar e Gre Bul " _ & "nvan:" & Chr(13) _ & " nvann Sein:" & Chr(13) _ &" &" &" 1 - Sat Mdr" & Chr(13) _ 2 - Sat Temsilcisi" & Chr(13) _ 3 - Satlar Koordinatr"

intCommand = Val(InputBox(strMessage))

Select Case intCommand Case 1 qdf("alan nvan") = _

Sql (Structured Query Language) Saadettin POLAT 72/85

"Sat Mdr" Case 2 qdf("alan nvan") = _ "Sat Temsilcisi" Case 3 qdf("alan nvan") = _ " Satlar Koordinatr" Case Else Exit Do End Select

' Geici bir anlk grnt trnde Recordset oluturur. Set rst = qdf.OpenRecordset(dbOpenSnapshot) ' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields ' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 12 Loop

' Bu bir rnek olduu iin QueryDef'i ' siler. dbs.QueryDefs.Delete "alanlar Bul"

dbs.Close End Sub SQL Alt Sorgular Bir alt sorgu, SELECT, SELECT...INTO, INSERT...INTO, DELETE veya UPDATE deyimi iinde veya bir baka alt sorgu iinde yer alan bir SELECT deyimidir. Szdizimi Alt sorgu oluturmak iin tr szdizimi kullanabilirsiniz:

Sql (Structured Query Language) Saadettin POLAT 73/85

karlatrma [ANY | ALL | SOME] (sqldeyimi) ifade [NOT] IN (sqldeyimi) [NOT] EXISTS (sqldeyimi) Bir alt sorgunun blmleri unlardr: Blm karlatrma ifade sqldeyimi Aklama fadeyi alt sorgunun sonular ile karlatran bir ifade ve bir karlatrma ilecidir. Alt sorgu sonu kmesini arayan ifadedir. Herhangi bir SELECT deyimi ile ayn biimde olan ve ayn kurallara sahip bir SELECT deyimidir. Ayralar iine alnmaldr.

Uyarlar SELECT deyiminin alan listesinde veya WHERE ile HAVING yan tmcesinde yazlacak bir ifade yerine, bir alt sorgu kullanabilirsiniz. Bir alt sorguda, WHERE veya HAVING yan tmcesi ifadelerinde deerlendirmek zere bir veya daha fazla deer kmesini salamak iin SELECT deyimi kullanrsnz. Eanlaml olan ANY veya SOME dorulamalarn, alt sorguda alnan kaytlarla yaplan karlatrmalar salayan kaytlar ana sorguda almak iin kullann. Aadaki rnek, birim fiyat, yzde 25 veya daha fazla indirimle satlm rnlerin birim fiyatndan daha byk olan tm rnleri verir. SELECT * FROM rnler WHERE BirimFiyaty > ANY (SELECT BirimFiyat FROM SipariAyrntlar WHERE Yndirim >= .25); ALL dorulamasn, yalnzca alt sorguda alnan tm kaytlarla yaplan karlatrmalar salayan kaytlar ana sorguda almak iin kullann. nceki rnekte ANY yerine ALL yazlrsa, sorgu sonucunda birim fiyat, yzde 25 veya daha fazla indirimle satlm tm rnlerin birim fiyatndan daha yksek olan kaytlar alnr. Bu daha kstlaycdr. IN dorulamasn, yalnzca, alt sorgudaki baz kaytlarn deerine eit olan kaytlar ana sorguda almak iin kullann. Aadaki rnek, yzde 25 veya daha fazla indirimi olan tm rnleri verir: SELECT * FROM rnler WHERE rnNo IN (SELECT rnNo FROM SipariAyrntlar WHERE Yndirim >= .25); Buna karlk NOT IN deyimini, yalnzca, alt sorgudaki kaytlarn deerine eit olmayan kaytlar ana sorguda almak iin kullann. EXISTS dorulamasn, (istee bal NOT sakl szc olmadan) doru/yanl karlatrmalarnda alt sorgunun herhangi bir kayt geri dndrp drdrmediini belirlemek iin kullann. Ayrca, alt sorgunun dndaki FROM yan tmcesinde listelenen tablolara bavurmak iin, alt sorguda tablo dier adlarn da kullanabilirsiniz. Aadaki rnek, maalar, ayn i nvanna sahip olan tm alanlarn maa ortalamasna eit veya ondan daha yksek olan alanlarn adlarn verir. alanlar tablosuna "T1" dierad verilmitir: SELECT Soyady,

Sql (Structured Query Language) Saadettin POLAT 74/85

Ad, nvan, Maa FROM alanlar AS T1 WHERE Maa >= (SELECT Avg(Maa) FROM alanlar WHERE T1.nvan = alanlar.nvan) Order by nvan; nceki rnekte, AS sakl szc istee baldr. Baz alt sorgularn apraz sorgular iinde (zellikle WHERE yan tmcesindeki dorulamalar olarak) kullanlmasna izin verilir. apraz sorgularda alt sorgularn kt olarak (SELECT listesindeki gibi) kullanlmasna izin verilmez. SQL Alt Sorgular rnei Bu rnek, 1995'in ikinci aylk dneminde sipari vermi olan her mterinin mteri ve ilgili kii adn listeler. Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr. Sub SubQueryX() Dim dbs As Database, rst As Recordset ' Bu satyry, bilgisayarynyzdaki Northwind yolunu ' bulundurmak zere deitirin. Set dbs = OpenDatabase("Northwind.mdb")

' 1995'in ikinci aylk dneminde sipari vermi ' olan her mterinin mteri ve ilgili kii ' adyny listeler. Set rst = dbs.OpenRecordset("SELECT KiiAd," _ & " irketAd, Kiinvan, Telefon" _ & " FROM Mteriler" _ & " WHERE MteriNo" _ & " IN (SELECT MteriNo FROM Sipariler" _ & " WHERE SipariTarihi Between #04/1/95#" _ & " And #07/1/95#);")

' Recordset'i balatr. rst.MoveLast

' Recordset ieriklerini yazdyrmak zere EnumFields

Sql (Structured Query Language) Saadettin POLAT 75/85

' yordamn arr. Recordset nesnesini ve ' istenen alan geniliini aktarr. EnumFields rst, 25 dbs.Close End Sub SQL Ayrlm Szckleri Aadaki liste, SQL deyimlerinde kullanlan Microsoft Jet veritaban alt yaps tarafndan kendine saklanm tm szckleri ierir. Listedeki szcklerden tamam byk harfli olmayanlar dier uygulamalar iin de sakl szck olanlardr. Bu nedenle, bu szcklerin Yardm konular genel aklamalar ierir ve SQL kullanm zerine odaklanmazlar. Not Ardndan yldz iareti (*) gelen szckler sakl szcklerdir ancak bir Microsoft Jet SQL deyiminin (rnein, Level ve TableID) ieriinde herhangi bir anlam tamazlar. Alt izili olmayan szcklerin kendilerine bal aklamalar yoktur. A ABSOLUTE ADD 8ADMINDB ALL Alphanumeric See TEXT ALTER ALTER TABLE And AS B-C BEGIN Between BINARY BIT BIT_LENGTH BOOLEAN Bkz. BIT BOTH BY BYTE CASCADE CATALOG CHAR, CHARACTER Bkz. TEXT CHAR_LENGTH CHARACTER_LENGTH CHECK CLOSE CLUSTERED COALESCE COLLATE D COLLATION COLUMN COMMIT COMP, COMPRESSION CONNECT CONNECTION CONSTRAINT, CONSTRAINTS CONTAINER CONTAINS CONVERT Count COUNTER CREATE CURRENCY CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR ANY ARE AS ASC ASSERTION AUTHORIZATION AUTOINCREMENT See COUNTER Avg

Sql (Structured Query Language) Saadettin POLAT 76/85

DATABASE DATE Bkz. DATETIME DATETIME DAY DEC, DECIMAL DECLARE DELETE DESC E-H Eqv EXCLUSIVECONNECT EXEC, EXECUTE EXISTS EXTRACT FALSE FETCH FIRST FLOAT, FLOAT8 Bkz. DOUBLE FLOAT4 Bkz. SINGLE I IDENTITY IEEEDOUBLE Bkz. DOUBLE IEEESINGLE Bkz. SINGLE IGNORE IMAGE Imp In IN INDEX INDEXCREATEDB INNER J-M JOIN KEY LANGUAGE LAST LEFT Level* Like LOGICAL, LOGICAL1 Bkz. BIT LONG LONGBINARY LONGCHAR N-P NATIONAL NCHAR NONCLUSTERED Not

DISALLOW DISCONNECT DISTINCT DISTINCTROW DOMAIN DOUBLE DROP

FOREIGN FROM FROM Clause GENERAL Bkz. LONGBINARY GRANT GROUP GUID HAVING HOUR

INPUT INSENSITIVE INSERT INSERT INTO INT, INTEGER, INTEGER4 Bkz. LONG INTEGER1 Bkz. BYTE INTEGER2 Bkz. SHORT INTERVAL INTO Is ISOLATION

LONGTEXT LOWER MATCH Max MEMO Bkz. LONGTEXT Min MINUTE Mod MONEY Bkz. CURRENCY MONTH

Outer* OUTPUT OWNERACCESS PAD

Sql (Structured Query Language) Saadettin POLAT 77/85

NTEXT NULL NUMBER Bkz. DOUBLE NUMERIC Bkz. DECIMAL NVARCHAR OCTET_LENGTH OLEOBJECT Bkz. LONGBINARY ON OPEN OPTION Or ORDER Q-S REAL Bkz. SINGLE REFERENCES RESTRICT REVOKE RIGHT ROLLBACK SCHEMA SECOND SELECT SELECTSCHEMA SELECTSECURITY SET SHORT SINGLE SIZE T-Z TABLE TableID* TEMPORARY TEXT TIME Bkz. DATETIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TINYINT TO TOP TRAILING TRANSACTION TRANSFORM TRANSLATE TRANSLATION TRIM TRUE UNION UNIQUE UNIQUEIDENTIFIER UNKNOWN

PARAMETERS PARTIAL PASSWORD PERCENT PIVOT POSITION PRECISION PREPARE PRIMARY PRIVILEGES PROC, PROCEDURE PUBLIC

SMALLDATETIME SMALLINT Bkz. SHORT SMALLMONEY SOME SPACE SQL SQLCODE, SQLERROR, SQLSTATE StDev StDevP STRING Bkz. TEXT SUBSTRING Sum SYSNAME SYSTEM_USER

UPDATEOWNER UPDATESECURITY UPPER USAGE USER USING VALUE VALUES Var VARBINARY Bkz. BINARY VARCHAR Bkz. TEXT VarP VARYING VIEW WHEN WHENEVER WHERE WITH WORK Xor YEAR YESNO Bkz. BIT

Sql (Structured Query Language) Saadettin POLAT 78/85

UPDATE UPDATEIDENTITY

ZONE

SQL Veri Trleri Microsoft Jet veritaban alt yaps SQL veri trleri, Microsoft Jet veritaban alt yaps ile tanmlanan 13 birincil veri trnden ve bu veri trlerinin tand eitli geerli e anlamllardan oluur. Aadaki tablo birincil veri trlerini listeler. E anlamllar, Microsoft Jet Veritaban Alt Yaps SQL Sakl Szckleri iinde belirlenmitir. Veri tr BINARY Depolama boyutu 1 bayt / karakter Aklama Herhangi bir trdeki veri, bu tr alanda saklanabilir. Veri zerinde eviri yaplmaz (rnein metin ekline). Verilerin ikili alana nasl girildii, kt olarak nasl grneceini belirler. Yalnzca Evet ve Hayr deerlerinden birini ieren Evet ve Hayr deerleri ve alanlar 0 ile 255 arasnda bir tamsay. 922,337,203,685,477.5808 ve 922,337,203,685,477.5807 arasnda leklenmi bir tamsay. 100 ve 9999 yllar arasnda bir tarih veya saat deeri. Uzak yordam arlarnda kullanlan benzersiz bir kimlik numaras. Negatif deerler iin 3.402823E38 ile 1.401298E-45 arasnda ve pozitif saylar ile 0 iin 1.401298E-45 ile 3.402823E38 arasnda tek duyarlkl kayan noktal deerdir. Negatif deerler iin 1.79769313486232E308 ile 4.94065645841247E-324 arasnda ve pozitif saylar ile 0 iin 4.94065645841247E-324 ile 1.79769313486232E308 arasnda ift duyarlkl kayan noktal deerdir. 32,768 ile 32,767 arasnda ksa tamsaydr. (Bkz. Notlar) 2,147,483,648 ile 2,147,483,647 arasnda uzun tamsaydr. (Bkz. Notlar) 1028 - 1 ile - 1028 - 1 arasnda deerleri tutan kesin bir saysal veri tr. Hem duyarll (1 - 28) hem de lei (0 tanml duyarlk) tanmlayabilirsiniz. Varsaylan duyarlk ve lek srasyla 18 ile 0'dr. Sfr ile en ok 2.14 gigabayt arasdr. Sfr ile en ok 2.14 gigabayt arasdr. OLE nesneleri iin kullanlr. Sfr ile 255 karakter arasdr.

BIT

1 bayt

TINYINT MONEY

1 bayt 8 bayt

DATETIME (See DOUBLE) UNIQUEIDENTIFIER REAL

8 bayt 128 bit 4 bayt

FLOAT

8 bayt

SMALLINT INTEGER DECIMAL

2 bayt 4 bayt 17 bayt

TEXT IMAGE CHARACTER

2 bayt / karakter (Bkz. Notlar) Gerektii kadar 2 bayt / karakter (Bkz. Notlar)

Sql (Structured Query Language) Saadettin POLAT 79/85

Notlar

Hem balang hem de art, ALTER TABLE deyimini kullanarak deitirilebilir. Stun iin otomatik olarak oluturulan ve tabloya eklenen yeni satrlar, yeni balang ve art deerlerini temel alan deerlere sahip olacaklardr. Yeni balang ve art deerleri, nceki balangc ve art temel alarak oluturulmu deerlerle eleen deerler oluturursa, yinelemeler szkonusu olacaktr. Stun bir birincil anahtar ise, yinelenen deerler ieren yeni satrlar eklemek hatalara neden olabilir. Otomatik artl bir stun iin son kullanlan deeri bulmak iin u deyimi kullanabilirsiniz: SELECT @@IDENTITY. Bir tablo ad belirtemezsiniz. Dndrlen deer, otomatik art stunu ieren ve gncelletirilmi olan son tablodandr. TEXT (MEMO olarak da bilinir) veya CHAR (belirli bir uzunlukta TEXT(n) olarak da bilinir) olarak tanmlanm alanlardaki karakterler, Unicode sunu biiminde saklanrlar. Unicode karakterleri her karakteri saklamak iin ayn ekilde iki bayt gerektirirler. Bu nedenle, daha ok karakter verilerine sahip var olan Microsoft Jet veritabanlarnda, veritaban Microsoft Jet version 4.0 biimine dntrldnde veritaban dosyasnn boyutu yaklak olarak iki katna kacaktr. Ancak, Tek Baytlk Karakter Kmeleri (SBCS) olarak bilinen ou karakter kmesinin Unicode sunumu kolaylkla tek bayta sktrlabilir. Ayrntlar iin CREATE TABLE konusuna bakn. COMPRESSION zelliinde bir CHAR stunu tanmlarsanz, veriler saklanrken otomatik olarak sktrlacak ve stundan alnrken de otomatik olarak geniletileceklerdir.

ODBC Tek Verili levleri Microsoft Jet SQL, tek verili ilevlerde ODBC tanml szdizimini kullanm destekler. rnein, aadaki sorgu: SELECT DAILYCLOSE, DAILYCHANGE FROM DAILYQUOTE WHERE {fn ABS(DAILYCHANGE)} > 5 stok fiyatndaki deiimin mutlak deeri beten byk olan tm satrlar verecektir. ODBC tanml tek verili ilevlerinin alt kmesi desteklnemektedir. Aadaki tablo desteklenen ilevleri listelemektedir. Bamsz deikenlerin tanm iin ve SQL deyimindeki ilevlerin szdizimlerinin tam bir aklamas iin ODBC kitaplarna bakn. Dize levleri ASCII CHAR CONCAT LCASE LEFT Saysal levler ABS ATAN CEILING COS EXP FLOOR LOG POWER RAND SIGN SIN SQRT TAN MOD LENGTH LOCATE LTRIM RIGHT RTRIM SPACE SUBSTRING UCASE

Saat ve Tarih levleri CURDATE CURTIME NOW DAYOFMONTH DAYOFYEAR YEAR HOUR MINUTE MONTH WEEK QUARTER MONTHNAME

Sql (Structured Query Language) Saadettin POLAT 80/85

DAYOFWEEK Veri Tr Dnm CONVERT

SECOND

DAYNAME

Dize metinleri aadaki veri trlerine dntrlebilir: SQL_FLOAT, SQL_DOUBLE, SQL_NUMERIC, SQL_INTEGER, SQL_REAL, SQL_SMALLINT, SQL_VARCHAR and SQL_DATETIME.

Microsoft Jet SQL ve ANSI SQL Karlatrmas Microsoft Jet veritaban alt yaps SQL genellikle ANSI-89 Dzey 1 uyumludur. Ancak baz ANSI SQL zellikleri Microsoft Jet SQL iinde uygulanmamtr. Microsoft Jet srm 4.X'in kmas ile, Jet iin Microsoft OLE DB Salaycs, daha fazla ANSI-92 SQL szdizimini salamtr. Buna karlk da, Microsoft Jet SQL, ANSI SQL iinde desteklenmeyen sakl szckler ve zellikler bulundurur. Ana Farkllklar

Microsoft Jet SQL ve ANSI SQL'in her birinin farkl sakl szckleri ve veri trleri vardr. Ayrntl bilgi iin, Microsoft Jet Veritaban Alt Yaps SQL Sakl Szckleri ve Edeer ANSI SQL Veri Tleri konularna bakn. Jet iin Microsoft OLE DB Salaycs'n Jet 4.X ile kullanrsanz, ek sakl szckler de olur. Between...And yapsnda, aadaki szdizimi ile farkl kurallar uygulanr: ifade1 [NOT] Between deer1 And deer2 Microsoft Jet SQL'de, deer1 deer2'den byk olabilir; ANSI SQL'de deer1 deer2'ye eit veya ondan kk olmaldr.

Microsoft Jet SQL, Like ileci ile kullanmak zere hem ANSI SQL joker karakterlerini hem de Microsoft Jet'e zel joker karakterlerini destekler.. ANSI ve Microsoft Jet joker karakterlerinin kullanm karlkl zeldir. Bunlardan birini ya da dierini kullanmal ancak ikisini kartrmamalsnz. ANSI SQL joker karakterleri ancak Jet 4.X ve Jet iin Microsoft OLE DB Salaycs kullanlrken geerlidir. ANSI SQL joker karakterlerini Microsoft Access veya DAO ile kullanmay denerseniz, bu karakterler dz metin karakterleri olarak kabul edileceklerdir. Jet 4.X ve Jet iin Microsoft OLE DB Salaycs'n kullanrken bunun tersi geerlidir.

Eleme karakteri Herhangi tek bir karakter Sfr veya daha fazla sayda karakter

Microsoft Jet SQL ? *

ANSI SQL _ (alt izgi) %

Microsoft Jet SQL genellikle daha az snrlaycdr. rnein, ifadelerde gruplandrmaya ve sralamaya izin verir. Microsoft Jet SQL, daha gl ifadeleri destekler.

Microsoft Jet SQL'in Gelimi zellikleri Microsoft Jet SQL, aadaki gelimi zellikleri salar: apraz sorgu destei salayan TRANSFORM deyimi

StDev ve VarP gibi ek toplam ilevleri.

Sql (Structured Query Language) Saadettin POLAT 81/85

Parametre sorgular tanmlamak iin PARAMETERS bildirimi

Microsoft Jet SQL inde Desteklenmeyen ANSI SQL zellikleri Microsoft Jet SQL u ANSI SQL zelliklerini desteklemez:

DISTINCT toplam ilevi bavurular. rnein, Microsoft Jet SQL SUM(DISTINCT stunad) szdizimine izin vermez. LIMIT TO nn ROWS yan tmcesi, sorgunun dndrecei satr saysn snrlandrmak iin kullanlr. Sorgu kapsamn snrlandrmak iin yalnzca WHERE yan tmcesini kullanabilirsiniz.

Edeer ANSI SQL Veri Trleri Aadaki tablo ANSI SQL veri tlerini, onlara edeer Microsoft Jet veritaban alt yaps SQL veri trlerini ve geerli e anlamllarn listeler. Ayrca, edeer Microsoft SQL Server veri trleri de listelenir. ANSI SQL veri tr BIT, BIT VARYING Desteklenmez Desteklenmez Desteklenmez Desteklenmez DATE, TIME, TIMESTAMP Desteklenmez DECIMAL REAL DOUBLE PRECISION, FLOAT SMALLINT INTEGER INTERVAL Desteklenmez Microsoft Jet SQL veri tr BINARY (Bkz. Notlar) E anlamls VARBINARY, BINARY VARYING BIT VARYING BIT (Bkz. Notlar) BOOLEAN, LOGICAL, LOGICAL1, YESNO TINYINT INTEGER1, BYTE COUNTER (Bkz. Notlar) AUTOINCREMENT MONEY CURRENCY DATETIME DATE, TIME (Bkz. Notlar) UNIQUEIDENTIFIER GUID DECIMAL NUMERIC, DEC REAL SINGLE, FLOAT4, IEEESINGLE FLOAT DOUBLE, FLOAT8, IEEEDOUBLE, NUMBER (Bkz Notlar) SMALLINT SHORT, INTEGER2 INTEGER LONG, INT, INTEGER4 Desteklenmez IMAGE LONGBINARY, GENERAL, OLEOBJECT TEXT (Bkz. Notlar) LONGTEXT, LONGCHAR, MEMO, NOTE, NTEXT (Bkz. Notlar) CHAR (Bkz. Notlar) TEXT(n), ALPHANUMERIC, CHARACTER, STRING, VARCHAR, CHARACTER VARYING, NCHAR, NATIONAL CHARACTER, NATIONAL CHAR, NATIONAL Microsoft SQL Server veri tr BINARY, VARBINARY

BIT TINYINT (Bkz. Notlar) MONEY DATETIME UNIQUEIDENTIFIER DECIMAL REAL FLOAT

SMALLINT INTEGER Desteklenmez IMAGE

Desteklenmez

TEXT

CHARACTER, CHARACTER VARYING, NATIONAL CHARACTER, NATIONAL CHARACTER VARYING

CHAR, VARCHAR, NCHAR, NVARCHAR

Sql (Structured Query Language) Saadettin POLAT 82/85

CHARACTER VARYING, NATIONAL CHAR VARYING (Bkz. Notlar)

Notlar

ANSI SQL BIT veri tr, Microsoft Jet SQL BIT veri trne karlk gelmez. Bunun yerine, BINARY veri trne karlk gelir. Microsoft Jet SQL BIT veri trnn ANSI SQL edeeri yoktur. TIMESTAMP artk DATETIME e anlamls olarak desteklenmez. NUMERIC artk FLOAT veya DOUBLE e anlamls olarak desteklenmez. NUMERIC artk DECIMAL e anlamls olarak kullanlr. Bir LONGTEXT alan her zaman Unicode sunu biiminde saklanr. TEXT veri tr ad, TEXT(25) gibi herhangi bir uzunluk belirtilmeden kullanlrsa, bir LONGTEXT alan oluturulur. Bu, veri trlerinin Microsoft SQL Server ile uyumlu olmasn salayacak CREATE TABLE deyimlerinin yazlmasn salar. Bir CHAR alan her zaman, ANSI SQL NATIONAL CHAR veri trnn edeeri olan Unicode sunu biiminde saklanr. TEXT veri tr ad kullanlr ve TEXT(25) gibi istee bal bir uzunluk belirtilirse, alann veri tr, CHAR veri trne edeerdir. Bu, TEXT veri trnn bir uzunluk belirtilmeden Microsoft SQL Server ile kullanlmasna izin verirken, ou Microsoft Jet uygulamasnda geriye doru uyumluluu salar.

Dize Karlatrmasnda Joker Karakterlerini Kullanma Yerleik rnek eleme, dize karlatrmalar yapmak iin ok ynl bir ara salar. Aadaki tablo, Like ileci ile kullanabileceiniz joker karakterlerini ve bunlarn dikkate aldklar hane veya dize saysn gsterir. rnek iindeki karakter says ? veya _ (alt izgi) * veya % # [karakterlistesi] [!karakterlistesi] fade iindeki eleme Herhangi tek bir karakter Sfr veya daha fazla sayda karakter Herhangi tek bir hane (0 9) Karakterlistesi iindeki herhangi tek bir karakter Karakterlistesi iinde bulunmayan herhangi tek bir karakter

fade iindeki herhangi tek bir karakterle elemek zere keli ayralar ([ ]) iinde yer alan bir veya daha fazla karakteri (karakterlistesi) kullanabilirsiniz; karakterlistesi, rakamlar dahil ANSI karakter kmesinde bulunan neredeyse tm karakterleri ierebilir. Keli ayralar iinde yer alyorsa, ama ayrac ([ ), soru iareti (?), rakam iareti (#) ve yldz (*) karakteri gibi zel karakterleri, kendilerini elemek zere kullanabilirsiniz. Bir grup iinde kapatma ayracn ( ]) kendini elemek zere kullanamazsnz, ancak grubun dnda bamsz bir karakter olarak kullanabilirsiniz. Karakterlistesi, keli ayralar iinde bulunan basit karakter listelerine ek olarak, araln alt ve st snrlarn ayrmak zere bir tire iareti (-) kullanarak bir karakter aral da belirtebilir. rnein rnek olarak [A-Z] yazarsanz, ifade iindeki ilgili karakterin konumu A ile Z arasnda herhangi bir byk harf ieriyorsa eleme gerekleir. Keli ayralar iinde, aralklar birbirinden ayrmadan ok sayda aralk bulundurabilirsiniz. rnein [a-zA-Z0-9] yazarsanz herhangi alfasaysal bir karakter elenir.

Sql (Structured Query Language) Saadettin POLAT 83/85

(%) ve (_) ANSI SQL joker karakterlerinin yalnzca Microsoft Jet srm 4.X ve Microsoft OLE DB Provider for Jet iin geerli olduunu unutmamak gerekir. Bunlar, Microsoft Access veya DAO ile kullanlrlarsa, dz metin olarak kabul edileceklerdir. rnek elemenin dier nemli kurallar unlardr:

Karakterlistesi bana konan bir nlem iareti (!), elemenin ancak, karakterlistesi iindekiler hari herhangi bir karakterin ifade iinde bulunmas halinde olacan belirtir. Keli ayralar dnda kullanldnda nlem iareti kendisini belirtir. Tire iaretini (-), kendisini belirtmek zere karakterlistesinin banda (varsa nlem iaretinden sonra) veya sonunda kullanabilirsiniz. Baka herhangi bir konumda yer alan tire iareti, ANSI karakterleri araln belirtir. Bir karakter aral belirtilirken, karakterler artan sralama dzeninde olmaldr (A-Z veya 0100). [A-Z] geerli bir rnektir ancak [Z-A] deildir. [ ] Karakter sras gzard edilir ve sfr uzunlukta dize () olarak deerlendirilir.

SZLK
Balang Counter ya da Identity veri trleriyle kullanlan seime bal parametredir. SQL DDL'in, yalnzca Microsoft OLE DB Provider for Jet iinden kullanlmas durumunda geerlidir. Balang deeri de denir. Balang, Counter ya da Identity veri trlerine ilikin seime bal iki parametreden ilkidir. Aada, parametreli SQL deyimlerine bir rnek verilmitir: CREATE TABLE Mteriler (CustId IDENTITY (100, 10) CONSTRAINT pkCustomers PRIMARY KEY, CFrstNm VARCHAR(10), CLstNm VARCHAR(15)); lk satrdaki CustId alannn deeri 100, ikinci satrn deeri 110 olacaktr. Seime bal parametreler kullanlrken (1,1) deeri ierilmezse, Jet balang deerini, tablodaki en st deere getirmeyecektir. Bu davran, Jet'in nceki srmlerindekinden farkldr. Veritaban dzenlenirken, seime bal parametreler aktarlmazsa ya da (1,1) deerinden baka bir deer kullanlrsa, balang deeri, tablodaki Counter ya da Identity stunlarnn en yksek deerine getirilir. Aralk Counter ya da Identity veri trleriyle kullanlan seime bal parametredir. SQL DDL'in, yalnzca Microsoft OLE DB Provider for Jet iinden kullanlmas durumunda geerlidir. Bu deer, bir tablodaki Counter ya da Identity veri trn ieren yeni bir satra, sradaki deerin atanmasnda kullanlan deerdir. Aralk, Counter ya da Identity veri trlerine ilikin seime bal iki parametreden ikincisidir. Text Veri Tr (Uzunluk Belirtimi Olmakszn) Bir alan veri trdr. Belirli bir uzunluk bildirmeksizin tanmlanm olan metin alanlar Memo alanyla zdetir ve 2,14 GB'a kadar karakter verileri ierebilirler. Unicode Temsil Biimi Unicode Kongresi'nce oluturulan ve dnyadaki tm diller iin gerekli olan tm karakterleri ieren 16 bitlik bir karakter kmesidir. Yazlmlarn ok dilde iletimini kolaylatrmak zere Unicode kullanm giderek yaygnlamaktadr.

Sql (Structured Query Language) Saadettin POLAT 84/85

Yordam SQL szdiziminin, parametrelerin aktarlmasnda SELECT deyimlerine (satr veren sorgular), ayrca, DML (satr vermeyen sorgular) UPDATE, INSERT, DELETE ve SELECT INTO deyimlerine izin vermesi dnda aynen bir grnme benzer. DAO nesne modeli kullanlmakszn SQL szdiziminden oluturulabilmesi dnda, querydef ile ayndr. Grnm Grnm, sanal tablonun ANSI'deki tanmlamasdr. Bir grnm, Access'teki parametresiz kullanlan bir SELECT deyiminden oluan sakl bir sorguyla eanlamldr. Grnm, uygulamann altrlmas srasnda ortaya kan sakl bir tanmdr. Fiziksel anlamda herhangi bir veri iermemesiyle bir tablodan ayrlr. Yalnzca, baka bir kaynaktan ald verileri iletir. Microsoft OLE DB Provider for Jet yardmyla kullanlan yeni ANSI SQL CREATE VIEW szdizimi araclyla bir grnm oluturulabilir. Ya da bunun yerine, SQL DML deyimlerine ve parametreli SELECT deyimlerine izin vermek amacyla bir yordam oluturulabilir. Microsoft OLE DB Provider for Jet yardmyla kullanlan yeni CREATE PROCEDURE szdizimiyle bunu yapabilirsiniz.

- Dosya Sonu -

Sql (Structured Query Language) Saadettin POLAT 85/85

You might also like