(sql) structured query language (yapılandırılmış sorgu dili)

Upload: sueleyman-sanli

Post on 05-Apr-2018

252 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    1/116

    (SQL) Structured Query Language (Yaplandrlm SorguDili)

    Structured Query Language (SQL) klavuzu. Database engine'ler iin, oracle, mysql, sql server2000 vb. uyumlu SQL komutlar.

    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

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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    2/116

    Sql Toplam levleri

    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

    Veri Tanm Dili

    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

    Dier

    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

    Szlk

    Balang ......................................................................................... 84

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    3/116

    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 bulamayanlariin MS Access'in yardm blmnden yararlanarak hazrladm. tiraf etmek gerekirse her nekadar yazlar hazr alsamda bu yazlar belirli bir dzene sokmak iin ok uratm. Budokmanda en ok kullanlan sql komutlarn aklama ve rnekleriyle birlikte bulacaksanz.Yararl olaca inancndaym. Belgede birtakm eksiklikler olabilir onlarda mazur grn. Sonolarakta bu belgeyi baka yerlerde kullanmak isteyen arkadalarmz (yazlar iin deil nk

    ben yazmadm ) bu belgeyi hazrlamak iin sarf ettiim emei gz nnde bulundurup kaynakbelirtirlerse sevinirim.

    Saadettin POLAT

    (SQL)

    Structured Query Language (Yaplandrlm Sorgu Dili)

    Sql Nedir?

    likisel veritabanlarn sorgulamak, gncellemek iin kullanlan bir dildir.

    Sql Nerelerde Kullanlr?

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    4/116

    Programclkta (Delphi, VB v.b.), veritaban programlarnda ve veritabanna bal websayfalarnda (Asp v.b.) kullanlr.

    VER KULLANMA DL

    Deyimler

    SELECT Deyimi

    Veritabanndan bir kayt kmesi eklinde bilgi dndrmek Microsoft Jet veritaban alt yapsnakomut 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 Aklama

    dorulama u dorulamalardan biridir: ALL, DISTINCT, DISTINCTROW, orTOP. Dorulamay, dndrlecek kaytlarn saysn snrlandrmak

    iin kullanrsnz. Bunlarn hibiri belirtilmezse, varsaylan deerALL'dur.

    * Belirtilen tablodan veya tablolarda tm kaytlarn seileceinibelirtir.

    tablo inden kaytlarn seilecei alanlar ieren tablonun addr.

    alan1, alan2 Almak istediiniz verileri ieren alanlarn addr. Birden fazla alanyazarsanz, alanlar listelendikleri srada alnrlar.

    dierad1, dierad2 Tablodaki zgn stun adlar yerine, stun balklar olarakkullanlacak adlardr.

    tabloifadesi Almak istediiniz verileri ieren tablo veya tablolarn addr.

    dveritaban Tabloifadesi iindeki tablolardan, geerli veritaban iinde

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    5/116

    olmayanlar ieren veritabannn addr.

    Uyarlar

    Bu ilemi gerekletirmek iin, Microsoft Jet veritaban alt yaps, belirtilen tablo veyatablolar arar, seili stunlar tarar, ltlere uyan satrlar seer ve sonu satrlar belirtilensrada sralar veya gruplandrr.

    SELECT deyimleri veritabanndaki verileri deitirmezler.

    SELECT genellikle bir SQL deyiminin ilk szcdr. ou SQL deyimi SELECT veyaSELECT...INTO deyimleridir.

    SELECT deyiminin en ksa szdizimi yledir:SELECT alanlarFROM tablo

    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 tabloadn ve ardndan . (nokta) iaretini yazn. Aadaki rnekte, Blm alan hem alanlar hem

    de Denetiler tablosunda bulunmaktadr. SQL deyimi, alanlar tablosundan blmleri veDenetiler tablosundan deneti adlarn seer:

    SELECT alanlar.Blm, Denetiler.DenetiAd

    FROM alanlar INNER JOIN Denetiler

    WHERE alanlar.Blm = Denetiler.Blm;

    BirRecordSet nesnesi oluturulduunda, Microsoft Jet veritaban alt yaps tablonun alan adnrecordset 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 iinDoum baln kullanr:

    SELECT DoumTarihi

    AS Doum FROM alanlar;

    Tanmsz veya yinelenen Alan nesne adlar dndren toplam ilevleri veya sorgularkullanrken, Field nesnesi iin farkl bir ad salamak zere AS yan tmcesini kullanmalsnz.Aadaki rnek, sonu RecordSet nesnesinde dndrlen Field nesnesini adlandrmak iinMerkez baln kullanr:

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    6/116

    SELECT COUNT(alanNo)

    AS Merkez FROM alanlar;

    Dndrlecek verileri daha fazla kstlamak veya dzenlemek zere, SELECT deyiminde baka

    yan tmceleri de kullanabilirsiniz.

    SELECT Deyimi, FROM Yan Tmcesi rnei

    Aadaki rneklerden bazlar, alanlar tablosunda Maa alannn bulunduunu varsayar. Bualan gerekte Nortwind veritabannn alanlar tablosunda bulunmaz.

    Bu rnek, alanlar tablosundaki tm kaytlarn Ad ve Soyad alanlarn seen bir SQLdeyimini temel alan birRecordset devingen kme tr oluturur. Recordset nesnesininieriklerini 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.

    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 alanSaya olarak adlandrr.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    7/116

    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, 12dbs.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 (*) " _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    8/116

    & "AS Toplamalan, Avg(Maa) " _

    & "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 birRecordset nesnesi aktarr. Daha sonra,Recordset alanlarn biimlendirir ve Hata Ayklama penceresine yazdrr.intFldLendeikeni, istenen basl alan geniliidir. Birtakm alanlar dzgn baslmadankesilebilir.

    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 _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    9/116

    & " 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 strTitleDebug.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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    10/116

    strTemp = ""

    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 SelectEnd If

    Debug.Print Left(strTemp _

    & Space(intFldLen), intFldLen);

    Next lngFldCount

    Debug.Print

    rst.MoveNext

    Next lngRecCount

    End Sub

    DELETE Deyimi

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    11/116

    WHERE yan tmcesini salayan FROM yan tmcesinde listelenen tablolardan bir veya dahafazlasndan kayt silen bir silme sorgusu oluturur.

    Szdizimi

    DELETE [tablo.*]FROM tabloWHERE lt

    DELETE deyiminin blmleri unlardr:

    Blm Aklama

    Tablo inden kaytlarn silinecei tablonun istee bal addr.

    Tablo inden kaytlarn silinecei tablonun addr.

    ltler Silinecek kaytlar belirleyen bir ifade dir.

    Uyarlar

    DELETE, zellikle ok sayda kayt silmek istiyorsanz kullanldr.

    Veritabanndan tablonun tmn silmek iin, Execute yntemini DROP deyimi ile birliktekullanabilirsiniz. Ancak tabloyu silerseniz, tablonun yaps da kaybolur. Buna karlkDELETE'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 silinmesihalinde, ilikinin "ok" tarafnda olan tablodaki ilgili kaytlarn silinmesine neden olur. rnein,Mteriler ve Sipariler tablolarndaki ilikide, Mteriler tablosu ilikinin "bir" tarafnda veSipariler tablosu da "ok" tarafndadr. Ardarda silme seenei belirtilmise, Mterilertablosunda bir kayt silindiinde ilgili Sipariler tablosu kaytlar da silinecektir.

    Bir silme sorgusu, yalnzca belirli alanlardaki verileri deil kaytlarn tamamn siler. Yalnzcabelirli bir alandaki verileri silmek istiyorsanz, deerleri Null olarak deitiren bir

    gncelletirme sorgusu oluturun.

    nemli

    Silme sorgusunu kullanarak kayt sildikten sonra, ilemi geri alamazsnz. Hangikaytlarn silindiini bilmek istiyorsanz, sonular nce ayn lt kullanan bir semesorgusu ile denetleyin ve sonra silme sorgusunu altrn.

    Her zaman verilerinizin yedeklerini saklayn. Yanl kaytlar silerseniz, kaytlar yedekkopyalardan alabilirsiniz.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    12/116

    DELETE Deyimi rnei

    Bu rnek, nvan Eitmen olan tm alanlarn kaytlarn siler. FROM yan tmcesi yalnzcabir 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 Aklama

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    13/116

    Hedef ine kayt eklenecek tablo veya sorgunun addr.

    alan1, alan2 Birhedefdeikeninin ardndan geliyorsa iine veri eklenecekalanlarn ad, birkaynakdeikeninin ardndan geliyorsa iindenveri alnacak alanlarn addr.

    dveritaban Bir d veritaban na olan yoldur. Yolun aklamas iin IN yantmcesine bakn.

    Kaynak inden kaytlarn kopyalanaca tablo veya sorgunun addr.

    tabloifadesi inden kaytlarn eklendii tablo veya tablolarn addr. Budeiken; tek bir tablo ad , kaydedilmi bir sorgu ad veya INNERJOIN , LEFT JOIN veya RIGHT JOIN sonucu olan bir birleimolabilir.

    deer1, deer2 Yeni kaydn belirli alanlarna eklenecek olan deerlerdir. Her deer,listede deerin konumuna gre ilgili alann iine eklenir: deer1yeni kaydn alan1 alanna, deer2 yeni kaydn alan2 alanna

    eklinde eklenir. Deerleri virgl ile ayrmal ve metin alanlarntrnak imleri (' ') iine almalsnz.

    Uyarlar

    INSERT INTO deyimini, yukarda gsterildii gibi tek kayt ekleme sorgusu szdiziminikullanarak tabloya tek bir kayt eklemek zere kullanabilirsiniz. Bu durumda kodlarnz, kaydnher alannn adn ve deerini belirtir. zerine bir deerin atanaca kayt alanlarn ve bualanlarn 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 ... FROMyan tmcesini kullanarak bir kayt kmesini bir baka tablodan veya sorgudan eklemek zereINSERT INTO'yu da kullanabilirsiniz.Bu durumda SELECT yan tmcesi, belirtilen hedeftabloya eklenecek alanlar belirtir.

    Kaynakveya hedeftablo, bir tablo veya sorguyu belirtebilir. Bir sorgu belirtilirse, Microsoft Jetveritaban alt yaps , sorgu tarafndan belirtilen herhangi bir tabloya ve tm tablolara kaytekler.

    INSERT INTO istee baldr ancak belirtilirse, SELECT deyiminden nce gelir.

    Hedef tablonuzda bir birincil anahtar varsa, birincil anahtar alan veya alanlarna benzersiz, Nullolmayan deerler eklediinizden emin olun; aksi takdirde Microsoft Jet veritaban alt yapskaytlar eklemez.

    inde OtomatikSay alan olan bir tabloya kayt ekler ve eklenen kaytlarn numaralarndeitirmek isterseniz, sorgunuzda OtomatikSay alann bulundurmayn. OtomatikSayalannn zgn deerlerini korumak istiyorsanz, alan sorgu iinde bulundurun.

    Kaytlar baka bir veritabanndaki tabloya eklemek iin IN yan tmcesini kullann.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    14/116

    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, aynseim ltn kullanan bir seme sorgusu altrn ve sonular grn.

    Bir ekleme sorgusu, bir veya daha ok tablodaki kaytlar bir bakasna kopyalar. Eklediinizkaytlar ieren tablolar, ekleme sorgusundan etkilenmezler.

    Bir baka tablodan var olan kaytlar eklemek yerine, VALUES yan tmcesini kullanarak, tekbir yeni kaydn tm alanlarnn deerlerini belirtebilirsiniz. Alan listesini yazmazsanzVALUES 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 birINSERT INTO deyimi kullann.

    INSERT INTO Deyimi rnei

    Bu rnek, bulunduu varsaylan Yeni Mteriler tablosundaki tm mterileri seer ve bunlarMteriler 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 * " _

    & "FROM [Yeni Mteriler];"

    dbs.Close

    End Sub

    Bu rnek alanlar tablosunda yeni bir kayt oluturur.

    Sub InsertIntoX2()

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    15/116

    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[, ...]] INTOyenitablo [IN dveritaban]

    FROM kaynak

    SELECT...INTO deyiminin blmleri unlardr:

    Blm Aklama

    alan1, alan2 Yeni tabloya kopyalanacak alanlarn addr.

    Yenitablo Oluturulacak tablonun addr. Standart adlandrma kurallar nauymaldr. Yenitablo, var olan bir tablonun ad ile aynysa,alglanabilir bir hata oluur.

    dveritaban Bir d veritaban na olan yoldur. Yolun aklamas iin IN yan

    tmcesine bakn.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    16/116

    kaynak inden kaytlarn seilecei var olan bir tablonun addr. Bu, tekveya ok tablo veya sorgu olabilir.

    Uyarlar

    Kaytlarn arivini oluturmak, tablolar yedeklemek veya farkl bir veritabanna vermek zereveya belirli bir zaman aralndaki verileri grntleyen raporlarda temel olarak kullanmakzere tablolarn kopyalarn oluturmak iin tablo oluturma sorgularn kullanabilirsiniz.rnein, ayn tablo oluturma sorgusunu her ay altrarak, Blgelere Gre Aylk Satlarraporunu oluturabilirsiniz.

    Notlar

    Yeni tablo iin bir birincil anahtar tanmlamak isteyebilirsiniz. Tablo oluturduunuzda,yeni tablodaki alanlar, sorgunun temel ald tablolardaki her alann veri tr nde vealan boyutunda olurlar; ancak baka alan ve tablo zellikleri aktarlmaz.

    Var olan bir tabloya veri eklemek iin, bir ekleme sorgusu oluturmak yerine INSERTINTO deyimini kullann.

    Tablo oluturma sorgusunu altrmadan nce hangi kaytlarn seileceini grmekiin, nce, ayn seim ltn kullanan bir SELECT deyimi altrn ve sonulargrn.

    SELECT...INTO Deyimi rnei

    Bu rnek, alanlar tablosundaki tm kaytlar seer ve bunlar alanlar Yedei adl yeni birtabloya 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 " _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    17/116

    & "[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 birgncelletirme sorgusu oluturur.

    Szdizimi

    UPDATE tabloSETyenideerWHERE lt;

    UPDATE deyiminin blmleri unlardr:

    Blm Aklama

    tablo Deitirmek istediiniz verileri ieren tablonun addr.

    yenideer Gncelletirilen kaytlardaki belirli bir alana eklenecek deeribelirten bir ifade dir.

    ltler Hangi kaytlarn gncelletirileceini belirleyen bir ifadedir.

    Yalnzca ifadeyi salayan kaytlar gncelletirilir.

    Uyarlar

    UPDATE zellikle, ok sayda kayd deitirmek istediinizde veya deitirmek istediinizkaytlar ok sayda tablo iinde iken kullanldr.

    Ayn anda ok sayda alan deitirebilirsiniz. Aadaki rnek Sipari Miktar deerleriniyzde 10 arttrr ve Navlun deerlerini ngiltere'deki tamaclar iin yzde 3 arttrr:

    UPDATE Sipariler

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    18/116

    SET SipariMiktar = SipariMiktar * 1.1,

    Navlun = Navlun * 1.03

    WHERE lke = 'ngiltere';

    nemli

    UPDATE, bir sonu kmesi oluturmaz. Ayrca, gncelletirme sorgusunu kullanarakkaytlar gncelletirdikten sonra, ilemi geri alamazsnz. Hangi kaytlarngncelletirildiini bilmek istiyorsanz, sonular nce ayn lt kullanan bir semesorgusu 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 olarakdeitirir.

    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 " _

    & "SET Raporla = 5 " _

    & "WHERE Raporla = 2;"

    dbs.Close

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    19/116

    End Sub

    TRANSFORM Deyimi

    Bir apraz sorgu oluturur.

    Szdizimi

    TRANSFORM toplamilevi semedeyimi

    PIVOT zetalan [IN (deer1[, deer2[, ...]])]

    TRANSFORM deyiminin blmleri unlardr:

    Blm Aklama

    toplamilevi Seili veriler zerinde ilem yapan bir SQL toplam ilevi dir.

    semedeyimi Bir SELECT deyimidir.

    zetalan Sorgunun sonu kmesinde stun bal oluturmakta kullanmakistediiniz alan veya ifade dir.

    deer1, deer2 Stun balklarn oluturmak zere kullanlan sabit deerlerdir.

    Uyarlar

    Bir apraz sorguyu kullanarak verileri zetlerken, belirtilen alanlardaki veya ifadelerdekideerleri stun balklar olarak seersiniz; bylece verileri, seme sorgusu ile olduundan dahaak bir biimde grntleyebilirsiniz.

    TRANSFORM istee baldr, ancak seildiinde, bir SQL dizesi nin ilk deyimidir. Satrbalklar olarak kullanlan alanlar belirten SELECT deyiminden ve satr gruplandrmasnbelirten GROUP BY yan tmcesinden nce gelir. sterseniz, ek seim veya sralama ltleri

    belirten WHERE gibi baka yan tmceleri de bulundurabilirsiniz. Bir apraz sorguda altsorgular 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 verileriolmayan sabit deerleri de bulundurabilirsiniz.

    TRANSFORM Deyimi rnei

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    20/116

    Bu rnek, 1994 ylnn her aylk dnemi iin alanlarn verdikleri sipari miktarn gsterenbir 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 " _

    & "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)

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    21/116

    SQLTRANSFORMOutput qdfTRANSFORM, 1994

    dbs.Close

    End Sub

    Bu rnek, 1994 ylnn her aylk dnemi iin alanlarn verdikleri siparilerin toplam TLmiktarn gsteren daha karmak bir apraz sorgu oluturmak zere bir SQLTRANSFORM yantmcesi 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] " _

    & "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)"

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    22/116

    ' 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"

    With rstTRANSFORM

    booFirst = True

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    23/116

    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 .FieldsIf booFirst = True Then

    Debug.Print fldLoop

    Debug.Print , ;

    booFirst = False

    Else

    Debug.Print , fldLoop;

    End If

    Next fldLoop

    Debug.Print

    .MoveNext

    Loop

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    24/116

    End With

    End Function

    EXECUTE Deyimi

    Bir yordam n yrtlmesini balatmak iin kullanlr.

    Szdizimi

    EXECUTEyordam [parametre1[,parametre2[, ...]]

    EXECUTE deyiminin blmleri unlardr:

    Blm Aklama

    yordam Yrtlecek yordam n addr.

    parametre1,parametre2

    Yordam tarafndan tanmlanan parametre lerin deerleridir.

    TRANSACTION Deyimi

    Dolaysz hareketler i 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 BEGINTRANSACTION'i kullanarak dolaysz olarak yapmalsnz.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    25/116

    Hareketler iie en ok be dzeyde olabilirler. Bir alt dzey hareketini balatmak iin, var olanbir hareketin ierii iinde BEGIN TRANSACTION'i kullann.

    Hareketler, bal tablolarda desteklenmezler.

    Yan Tmcelero FROM Yan Tmcesi

    SELECT deyiminde listelenen alanlar ieren tablolar veya sorgular belirtir.

    Szdizimi

    SELECT alanlistesiFROM tablodeyimi [IN dveritaban]

    FROM yan tmcesi ieren bir SELECT deyiminin blmleri unlardr:

    Blm Aklama

    alanlistesi Herhangi bir alan dierad , SQL toplam ilevi , dorulamalar(ALL, DISTINCT, DISTINCTROW veya TOP ) veya bakaSELECT deyimi seenekleri ile alnabilecek alan veya alanlarnad.

    tabloifadesi inden verilerin alnaca bir veya daha fazla tabloyu belirten birifadedir. fade; tek bir tablo ad, kaydedilmi bir sorgu ad veyaINNER JOIN , LEFT JOIN veya RIGHT JOIN sonucu olan bir

    birleim olabilir.

    dveritaban Tabloifadesi iindeki tm tablolar ieren d veritabannn tamyolu.

    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 verialmak 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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    26/116

    Aadaki rneklerden bazlar, alanlar tablosunda Maa alannn bulunduunu varsayar. Bualan gerekte Nortwind veritabannn alanlar tablosunda bulunmaz.

    Bu rnek, alanlar tablosundaki tm kaytlarn Ad ve Soyad alanlarn seen bir SQL deyimini temel alan birRecordset 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 alanSaya olarak adlandrr.

    Sub SelectX2()

    Dim dbs As Database, rst As Recordset

    ' Bu satyry, bilgisayarynyzdaki Northwind yolunu

    ' bulundurmak zere deitirin.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    27/116

    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.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    28/116

    rst.MoveLast

    ' Recordset ieriklerini yazdyrmak zere EnumFields

    ' yordamn arr. Recordset nesnesini ve

    ' istenen alan geniliini aktarr.

    EnumFields rst, 17

    dbs.Close

    End Sub

    EnumFields Sub yordam, aran yordamdan birRecordset nesnesi aktarr. Daha sonra,Recordset alanlarn biimlendirir ve Hata Ayklama penceresine yazdrr.

    intFldLendeikeni, istenen basl alan geniliidir. Birtakm alanlar dzgn baslmadankesilebilir.

    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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    29/116

    ' 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

    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 = ""

    Else

    ' strTemp ieriini alan ierii olarak ayarlar.

    Select Case _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    30/116

    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 lngFldCountDebug.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 kaytiin bir zet deer oluturulur.

    Szdizimi

    SELECT alanlistesiFROM tablo

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    31/116

    WHERE lt[GROUP BYgrupalanlistesi]

    GROUP BY yan tmcesi ieren bir SELECT deyiminin blmleri unlardr:

    Blm Aklamaalanlistesi Herhangi bir alan dierad , SQL toplam ilevi, dorulamalar (ALL,

    DISTINCT, DISTINCTROW veya TOP ) veya baka SELECT deyimiseenekleri ile alnabilecek alan veya alanlarn ad.

    tablo inden kaytlarn seilecei tablonun addr. Ayrntl bilgi iin FROMyan tmcesine bakn.

    ltler Seim lt. Deyim bir WHERE yan tmcesi ieriyorsa, Microsoft Jetveritaban alt yaps , kaytlara WHERE koullarn uyguladktan sonradeerleri gruplandrr.

    grupalanlistesi Kaytlar gruplandrmak iin kullanlan en ok 10 alann ad.Grupalanlistesi iindeki alan adlarnn sras, grupta en stten en altadoru gruplandrma dzeylerini belirler.

    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 deerleriherhangi bir SQL toplam ilevinde deerlendirilmez.

    Gruplandrmak istemediiniz satrlar darda tutmak iin WHERE yan tmcesini kullann vekaytlar 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 ileviieriyorsa, 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 toplamilevinin 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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    32/116

    ' 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 " _

    & "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")

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    33/116

    ' 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, 25dbs.Close

    End Sub

    HAVING Yan Tmcesi

    GROUP BY yan tmcesi olan bir SELECT deyiminde hangi gruplandrlm kaytlarngrntleneceini belirler. GROUP BY kaytlar birletirdikten sonra, HAVING, HAVING yantmcesinin koullarn salayan ve GROUP BY yan tmcesi ile gruplandrlm kaytlargrntler.

    Szdizimi

    SELECT alanlistesiFROM tabloWHEREsemelt

    GROUP BYgrupalanlistesi[HAVINGgruplt]

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    34/116

    HAVING yan tmcesi ieren bir SELECT deyiminin blmleri unlardr:

    Blm Aklama

    alanlistesi Herhangi bir alan dierad , SQL toplam ilevi , dorulamalar (ALL,DISTINCT, DISTINCTROW veya TOP ) veya baka SELECT deyimiseenekleri ile alnabilecek alan veya alanlarn ad.

    tablo inden kaytlarn seilecei tablonun addr. Ayrntl bilgi iin FROMyan tmcesine bakn.

    seimlt Seim ltdr. Deyim bir WHERE yan tmcesi ieriyorsa, MicrosoftJet veritaban alt yaps , kaytlara WHERE koullarn uyguladktansonra deerleri gruplandrr.

    grupalanlistesi Kaytlar gruplandrmak iin kullanlan en ok 10 alann ad.Grupalanlistesi iindeki alan adlarnn sras, grupta en stten en altadoru gruplandrma dzeylerini belirler.

    gruplt Hangi gruplandrlm kaytlarn grntleneceini belirleyen bir ifadedir.

    Uyarlar

    HAVING istee baldr.

    HAVING, WHERE'e benzer ve hangi kaytlarn seileceini belirler. Kaytlar GROUP BY ilegruplandrldktan 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 ifadeierebilir.

    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()

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    35/116

    Dim dbs As Database, rst As Recordset

    ' 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 yaps nn balanabilecei, dBASE veya Paradox veritaban veya bird Microsoft Jet veritaban gibi herhangi bir d veritaban ndaki tablolar belirler.

    Szdizimi

    Hedef bir tablo belirlemek iin:

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    36/116

    [SELECT | INSERT] INTO hedefIN{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 Aklama

    Hedef ine verilerin eklenecei d tablonun addr.

    Tabloifadesi inden verilerin alnaca tablo veya tablolarn addr. Budeiken; tek bir tablo ad, kaydedilmi bir sorgu ad veyaINNER JOIN , LEFT JOIN veya RIGHT JOIN sonucu olan bir

    birleim olabilir.Yol Tabloyu ieren dizin veya dosyann tam yoludur.

    Tr Veritaban bir Microsoft Jet veritaban (rnein, dBASE III,dBASE IV, Paradox 3.x veya Paradox 4.x) deilse, tablooluturmak iin kullanlan veritaban trnn addr.

    Uyarlar

    IN yan tmcesini bir anda yalnzca tek bir d veritaban na balanmak iin kullanabilirsiniz.

    Baz durumlardayoldeikeni, veritaban dosyalarn ieren dizini gsterir. rnein dBASE,Microsoft FoxPro veya Paradox veritaban tablolar ile alrken,yoldeikeni .dbf veya .dbdosyalarn ieren dizini belirtir. Tablonun dosya ad, hedefveya tabloifadesi deikenindentretilir.

    Microsoft Jet veritaban dnda bir veritaban belirtmek iin, ada bir noktal virgl (;) ekleyinve 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.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    37/116

    IN sakl szcn, bir ifade iinde bir karlatrma ileci olarak da kullanabilirsiniz. Ayrntlbilgi iin In ilecine bakn.

    IN Yan Tmcesi rnei

    Aadaki tablo, d bir veritabanndan veri almak iin IN yan tmcesini naslkullanabileceinizi gsterir. Her rnekte, d veritabannda Mteriler tablosunun bulunduunuvarsayn.

    D veritaban SQL deyimi

    Microsoft Jetveritaban

    SELECT MteriNoFROM MterilerIN DierVeritaban.mdb

    WHERE MteriNo Like "A*";dBASE III veya IV.Bir dBASE IIItablosundan verialmak iin, "dBASEIV;" yerine "dBASEIII;" yazn.

    SELECT MteriNoFROM MterilerIN "C:\DBASE\VER\SATLAR" "dBASE IV;"WHERE MteriNo Like "A*";

    Veritaban szdizimikullanan dBASE IIIveya IV.

    SELECT MteriNoFROM MterilerIN "" [dBASE IV; Database=C:\DBASE\VER\SATI;]

    WHERE MteriNo Like "A*";Paradox 3.x veya 4.x.Paradox srm 3.xtablosundan verialmak iin, "Paradox4.x;" yerine "Paradox3.x;" yazn.

    SELECT MteriNoFROM MterilerIN "C:\PARADOX\VER\SATLAR" "Paradox 4.x;"WHERE MteriNo Like "A*";

    Veritaban szdizimikullanan Paradox 3.xveya 4.x.

    SELECT MteriNoFROM MterilerIN "" [Paradox 4.x;Database=C:\PARADOX\VER\SATILAR;]WHERE MteriNo Like "A*";

    Microsoft Excelalma sayfas

    SELECT MteriNo, irketAdFROM [Mteriler$]IN "c:\belgeler\xlveri.xls" "EXCEL 5.0;"WHERE MteriNo Like "A*"ORDER BY MteriNo;

    alma sayfasiinde adlandrlm

    bir aralk

    SELECT MteriNo, irketAdFROM MterilerAralIN "c:\belgeler\xlveri.xls" "EXCEL 5.0;"WHERE MteriNo Like "A*"ORDER BY MteriNo;

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    38/116

    ORDER BY Yan Tmcesi

    Sorgunun sonu kaytlarn belirtilen alan veya alanlara gre artan veya azalan srada sralar.

    Szdizimi

    SELECT alanlistesiFROM tabloWHEREsemelt[ORDER BY alan1 [ASC | DESC ][, alan2 [ASC | DESC ]][, ...]]]

    ORDER BY yan tmcesi ieren bir SELECT deyiminin blmleri unlardr:

    Blm Aklama

    alanlistesi Herhangi bir alan dierad , SQL toplam ilevi , dorulamalar (ALL,DISTINCT, DISTINCTROW veya TOP ) veya baka SELECT deyimiseenekleri ile alnabilecek alan veya alanlarn ad.

    tablo inden kaytlarn seilecei tablonun addr. Ayrntl bilgi iin FROMyan tmcesine bakn.

    seimlt Seim ltdr. Deyim bir WHERE yan tmcesi ieriyorsa, MicrosoftJet veritaban alt yaps , kaytlara WHERE koullarn uyguladktansonra deerleri gruplandrr.

    alan1, alan2 Kaytlar sralamada temel alnacak alanlarn addr.

    Uyarlar

    ORDER BY istee baldr. Ancak, kaytlarn sralanm olarak grntlenmesini istiyorsanzORDER 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;

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    39/116

    Azalan srada sralamak iin (Z'den A'ya, 9'dan 0'a), azalan srada sralamak istediiniz heralann sonuna DESC sakl szcn ekleyin. Aadaki rnek maalar seer ve bunlar azalansrada sralar:

    SELECT Soyad, Maa

    FROM alanlar

    ORDER BY Maa DESC, Soyad;

    ORDER BY yan tmcesinde Not veya OLE Nesnesi verileri ieren bir alan belirtirseniz birhata oluur. Microsoft Jet veritaban alt yaps bu bu trdeki alanlar gruplandramaz.

    ORDER BY genellikle bir SQL deyimi nin 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 ikincialana gre sralanr ve bu bylece devam eder.

    ORDER BY Yan Tmcesi rnei

    Aadaki rnekte gsterilen SQL deyimi, soyadlarn azalan srada (Z-A) sralamak iinORDER 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;")

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    40/116

    ' 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 veyaDELETE deyiminden etkilendiini belirtir.

    Szdizimi

    SELECT alanlistesiFROM tabloifadesiWHERE lt

    WHERE yan tmcesi ieren bir SELECT deyiminin blmleri unlardr:

    Blm Aklama

    Alanlistesi Herhangi bir alan dierad , dorulamalar (ALL, DISTINCT,DISTINCTROW veya TOP ) veya baka SELECT deyimiseenekleri ile alnabilecek alan veya alanlarn ad.

    Tabloifadesi inden verilerin alnaca tablo veya tablolarn addr.

    ltler Kaytlarn, sorgu sonular iinde yer alabilmesi iin salamalargereken bir ifade dir.

    Uyarlar

    Microsoft Jet veritaban alt yaps , WHERE yan tmcesinde listelenen koullara uyan kaytlarseer. 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 arpm n oluturur.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    41/116

    WHERE istee baldr ancak varsa FROM'un ardndan gelir. rnein, sat blmndeki tmalanlar seebilir (WHERE Blm = 'Sat') veya ya 18 ile 30 arasndaki tm mterileriseebilirsiniz (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 kaytlarngrntleneceini belirtir.

    GROUP BY yan tmcesi ile gruplandrmak istemediiniz kaytlar elemek iin WHERE yantmcesini kullann.

    SQL deyiminin dndrecei kaytlar belirlemek iin deiik ifadeler kullann. rneinaadaki 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 ifadeierebilir.

    Bir boluk veya noktalama iareti ieren bir alan ad girerken, ad keli ayralar ([ ]) iinealn. rnein bir mteri bilgileri tablosu, belirli mteriler hakknda bilgiler ierebilir:

    SELECT [Mterinin En Sevdii Lokanta]

    ltdeikenini belirttiinizde, tarih rakamlar , Microsoft Jet veritaban alt yapsnnA.B.D. srmn kullanmyor olsanz bile A.B.D. biiminde olmaldr. rnein 10 Mays1996, ngilizce biiminde 10/5/96 eklinde ve A.B.D. biiminde 5/10/96 olarak yazlr. Tarihrakamlarn, 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 DateValueilevini de kullanabilirsiniz. rnein, A.B.D. iin u kodlar kullann:

    SELECT *

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    42/116

    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 szdizimikullanr:

    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 " _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    43/116

    & "WHERE Soyady = 'Etikan';")

    ' Recordset'i balatr.

    rst.MoveLast

    ' Recordset ieriklerini yazdyrmak zere EnumFields

    ' yordamn arr.

    EnumFields rst, 12

    dbs.Close

    End Sub

    CONSTRAINT Yan Tmcesi

    Bir kstlama bir dizin e benzer, ancak bir baka tablo ile iliki kurmak iin de kullanlabilir.CONSTRAINT yan tmcesini ALTER TABLE ve CREATE TABLE deyimlerinde, kstlamaoluturmak 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 oluturmakiin bir tane.

    NotMicrosoft Jet veritaban alt yaps , Microsoft Jet veritabanlar dnda ALTER TABLEkullanmn veya herhangi birveri tanm dili (DDL) deyimini desteklemez. Bunun yerine

    DAOCreate yntemlerini kullann.

    Szdizimi

    Tek alan kstlamas:

    CONSTRAINT ad {PRIMARY KEY | UNIQUE | NOT NULL |REFERENCESyabanctablo [(yabancalan1, yabancalan2)][ON UPDATE CASCADE | SET NULL]

    [ON DELETE CASCADE | SET NULL]}

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    44/116

    ok alan kstlamas:

    CONSTRAINT ad{PRIMARY KEY (birincil1[, birincil2 [, ...]]) |UNIQUE (benzersiz1[, benzersiz2 [, ...]]) |

    NOT NULL (nulldeil1[, nulldeil2 [, ...]]) |FOREIGN KEY [NO INDEX] (bavuru1[, bavuru2 [, ...]]) REFERENCESyabanctablo

    [(yabancalan1 [,yabancalan2 [, ...]])][ON UPDATE CASCADE | SET NULL][ON DELETE CASCADE | SET NULL]}

    CONSTRAINT yan tmcesinin blmleri unlardr:

    Blm Aklama

    ad Oluturulacak kstlamann ad.

    birincil1, birincil2 Birincil anahtar olarak belirlenecek alan veya alanlarn ad.benzersiz1,benzersiz2

    Benzersiz anahtar olarak belirlenecek alan veya alanlarn ad.

    nulldeil1,nulldeil2

    Null olmayacak ekilde kstlanan alan veya alanlarn ad.

    bavuru1, bavuru2 Baka bir tablodaki alanlara bavuran yabanc anahtar alan veyaalanlarnn addr.

    yabanctablo Yabancanahtartarafndan belirtilen alan veya alanlar ierenyabanc tablo nun addr.

    yabancalan1,yabancalan2 Bavuru1 ve bavuru2 tarafndan belirtilenyabanctablo iindekialan veya alanlarn addr. Bavurulan alanyabanctablonun birincilanahtar ise bu yan tmceyi ihmal edebilirsiniz.

    Uyarlar

    Tek alan kstlamas szdizimini, ALTER TABLE veya CREATE TABLE deyiminin alantanm yan tmcesinde alann veri trnn belirtiminin hemen ardndan kullanabilirsiniz.

    ok alan kstlamas szdizimini, ALTER TABLE veya CREATE TABLE deyiminde alantanm yan tmcesinin dnda CONSTRAINT sakl szc n her kullandnzdakullanrsnz.

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

    UNIQUE sakl szcn, bir alan benzersiz anahtar olarak belirlemek zerekullanabilirsiniz. Bu, tablodaki iki farkl kaydn bu alanda ayn deere sahip olamamasanlamna gelir. Herhangi bir alan veya alan gurubunu, benzersiz olarakkstlayabilirsiniz. ok alanl bir kstlama bir benzersiz anahtar olarak belirlendiyse,dizindeki tm alanlarn birletirilmi deerlerinin benzersiz olmas gerekir; bualanlardan yalnzca birindeki deer bir veya daha ok kaytta ayn olabilir.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    45/116

    PRIMARY KEY sakl szcklerini, bir alan veya bir alan kmesini bir tabloda birincilanahtar olarak belirlemek zere kullanabilirsiniz. Birincil anahtardaki tm deerlerin

    benzersiz olmas ve Null olmamas gerekir; ayrca, bir tabloda yalnzca bir tek birincilanahtar olabilir.

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

    FOREIGN KEY sakl szcn, bir alan yabanc anahtar olarak belirlemek zerekullanabilirsiniz. Yabanc tablonun birincil anahtar birden fazla alandan oluuyorsa,

    bavuran tm alanlar, yabanc tablonun adn ve bavuran alanlarn listelendii sradayabanc 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, yabanctablonun birincil anahtarnn bavurulan alanlar olduunu varsayar.

    Yabanc anahtar kstlamalar, ilgili bir birincil anahtar deeri deitiinde gerekletirilecekolan belirli eylemleri tanmlar.

    CONTRAINT yan tmcesinin tanml olduu tablodaki birincil anahtarda yrtlecekilgili eylemi temel alan ve yabanc tabloda gerekletirilecek eylemleri

    belirleyebilirsiniz. rnein, Mteriler tablosunda aadaki tanmn yapldndnelim:

    CREATE TABLE Mteriler (MtNo INTEGER PRIMARY KEY, stNo NCHARVARYING (50))

    Sipariler tablosunda da, Mteriler tablosunun birincil anahtarna bavuran yabanc anahtarilikisinin tanmlandn dnelim:

    CREATE TABLE Sipariler (SipariNo INTEGER PRIMARY KEY, MtNo INTEGER,SipariNotlar NCHAR VARYING (255), CONSTRAINT YASiparilerMtNo FOREIGNKEY (MtNo) REFERENCES Mteriler ON UPDATE CASCADE ON DELETE

    CASCADE

    Yabanc anahtarda hem ON UPDATE CASCADE hem de ON DELETE CASCADE yantmcesi tanmldr. ON UPDATE CASCADE yan tmcesi, mterinin numaras (MtNo)Mteriler tablosunda gncelletirildiinde bu gncelletirmenin Sipariler tablosunda dayaplmasn salar. lgili mteri numaras deeri ieren her sipari, otomatik olarak yeni deerile gncelletirilir. ON DELETE CASCADE yan tmcesi, Mteriler tablosunda bir mterisilindiinde Sipariler tablosundaki ayn mteri numaras deerini ieren tm satrlarnsilinmesini salar.

    imdi de, Sipariler tablosunda CASCADE eylemi yerine SET NULL eylemini kullanarak

    farkl bir tanm yapldn dnelim:

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    46/116

    CREATE TABLE Sipariler (SipariNo INTEGER PRIMARY KEY, MtNo INTEGER,SipariNotlar NCHAR VARYING (255), CONSTRAINT YASiparilerMtNo FOREIGNKEY (MtNo) REFERENCES Mteriler ON UPDATE SET NULL ON DELETE SET

    NULL

    ON UPDATE SET NULL yan tmcesi, mterinin numaras (MtNo) Mteriler tablosundagncelletirildiinde, Sipariler tablosunda otomatik olarak ilgili yabanc anahtar deerlerinin

    NULL olarak belirlenmesini salar. Benzer biimde, ON DELETE SET NULL yan tmcesi,mteri Mteriler tablosundan silindiinde, Sipariler tablosunda otomatik olarak tm ilgiliyabanc anahtarlarn NULL olarak belirlenmesini salar.

    Yabanc anahtarlar iin dizinlerin otomatik olarak oluturulmasn engellemek iin, NO INDEXdeitiricisi kullanlabilir. Bu yabanc anahtar tanm ekli, ancak sonu dizin deerleri sk skyinelenecekse kullanlmaldr. Yabanc anahtar dizinindeki deerlerin sk sk yinelendiidurumlarda, bir dizin kullanmak, basit biimde bir tablo tarama ilemi yapmaktan daha azverimli 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 yantmcesi 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 Aklama

    Ad Yordamn addr. Standart adlandrma kurallar na uymaldr.

    param1,param2 Bir veya daha fazla alan ad veya parametre dir. rnein:

    PROCEDURE lkelere_Gre_Satlar [Balang Tarihi]TarihSaat, [Biti Tarihi] TarihSaat;

    Parametreler hakknda ayrntl bilgi iin parametreler konusunabakn.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    47/116

    Veritr Birincil Microsoft Jet SQL veri trleri veya onlarneanlamllarndan biridir.

    Uyarlar

    Bir SQL yordam, yordamn adn belirten PROCEDURE yan tmcesinden, istee bal bir parametretanmlar listesinden ve tek bir SQL deyimi nden oluur. rnein, Para_Numarasn_Al yordam, belirtilenpara numarasn alan bir sorgu altrabilir.

    Notlar

    Yan tmce birden fazla alan tanm ieriyorsa (yaniparametre-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()

    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 " _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    48/116

    & "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

    lemlero UNION lemi

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    49/116

    ki veya daha fazla bamsz sorgu veya tablonun sonularn birletiren bir birleim sorgusuoluturur.

    Szdizimi

    [TABLE]sorgu1 UNION [ALL] [TABLE]sorgu2 [UNION [ALL] [TABLE]sorgun [ ... ]]

    UNION ileminin blmleri unlardr:

    Blm Aklama

    sorgu1-n Bir SELECT deyimi , sakl bir sorgunun ad veya TABLE anahtarszcnden sonra gelen sakl bir tablonun addr.

    Uyarlar

    ki veya daha fazla sorgunun, tablonun ve SELECT deyiminin sonularn herhangi birbirleimde tek bir UNION ileminde birletirebilirsiniz. Aadaki rnek, Yeni Hesaplar adlvar 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, tmkaytlarn dndrldnden emin olmak iin ALL dorulamasn bulundurabilirsiniz. Buayrca, sorguyu daha hzlandrr.

    UNION ilemindeki tm sorgular ayn sayda alan istemelidir; ancak, alanlarn ayn boyuttaveya ayn veri tr nde olmas gerekmez.

    Dieradlar yalnzca ilk SELECT deyiminde kullann; bunlar baka deyimlerde dikkate

    alnmaz. ORDER BY yan tmcesinde alanlara, ilk SELECT deyiminde adlandrldklar ekildebavurun.

    Notlar

    Bir GROUP BY veya HAVING yan tmcesini dndrlen verileri gruplandrmak zerehersorgu deikeninde kullanabilirsiniz.

    ORDER BY yan tmcesini, dndrlen verileri belirli bir srada grntlemek iin sonsorgu deikeninin sonunda kullanabilirsiniz.

    UNION lemi rnei

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    50/116

    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")

    ' 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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    51/116

    INNER JOIN lemi

    Ortak bir alanda eleen deerler olduunda iki tablonun kaytlarn birletirir.

    Szdizimi

    FROM tablo1 INNER JOIN tablo2 ON tablo1.alan1karlatrma tablo2.alan2

    INNER JOIN ileminin blmleri unlardr:

    Blm Aklama

    tablo1, tablo2 inden kaytlarn birletirilecei tablolarn addr.alan1, alan2 Birletirilen alanlarn addr. Alanlar saysal deilse, ayn veri tr ndeolmal ve ayn trde veriler iermelidir, ancak alanlarn ayn ada sahipolmalar gerekmez.

    karlatrma Herhangi bir karlatrma ilecidir: "=," "," "=," or "."

    Uyarlar

    INNER JOIN ilemini herhangi bir FROM yan tmcesinde kullanabilirsiniz. Bu, en skkullanlan birletirme trdr. birleimler, iki tabloda ortak olan bir alanda eleen deerlerolduunda her iki tablonun kaytlarn birletirirler.

    INNER JOIN'i, Blmler ve alanlar tablolarnda, blmlerdeki tm alanlar semek iinkullanabilirsiniz. Buna karlk, tm blmleri (blme atanm alan olmasa bile) veya tmalanlar (herhangi bir blme atanmam olsa bile) semek iin, bir d birleim oluturmakzere LEFT JOIN veya RIGHT JOIN ilemini kullanabilirsiniz.

    Not veya OLE Nesnesi verileri ieren alanlar birletirmeyi denerseniz bir hata oluur.

    Benzer trdeki herhangi iki saysal alan birletirebilirsiniz. rnein, benzer trlerdeolduklarnda OtomatikSay ve Uzun alanlarn birletirebilirsiniz. Ancak, Tek ve ift trndekialanlar birletiremezsiniz.

    Aadaki rnek, Kategoriler ve rnler tablolarn KategoriNo alanna gre naslbirletirebileceinizi gsterir:

    SELECT KategoriAdy, rnAdy

    FROM Kategoriler INNER JOIN rnler

    ON Kategoriler.KategoriNo = rnler.KategoriNo;

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    52/116

    nceki rnekte KategoriNo, birletirilen alandr ancak SELECT deyiminde yer almad iinsorgu sonularnda bulunmaz. Birletirilen alan bulundurmak iin, alan adn SELECTdeyiminde yazn (rneimizde Kategoriler.KategoriNo).

    Aadaki szdizimini kullanarak, JOIN deyimi iinde ok sayda ON yan tmcesini de

    balayabilirsiniz:

    SELECT alanlarFROM tablo1 INNER JOIN tablo2ON tablo1.alan1karlatrmatablo2.alan1 ANDON tablo1.alan2karlatrmatablo2.alan2) ORON tablo1.alan3karlatrmatablo2.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.alan3karlatrmatablox.alanx)]ON tablo2.alan2karlatrmatablo3.alan3)ON tablo1.alan1karlatrmatablo2.alan2;

    Bir LEFT JOIN veya bir RIGHT JOIN bir INNER JOIN iinde iie yer alabilir ancak birINNER 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 verileriniiermedii 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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    53/116

    ' arasnda da bir birleim oluturur. alanlarn listesini

    ' 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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    54/116

    Herhangi bir FROM yan tmcesinde kullanldnda kaynak tablo kaytlarn birletirir.

    Szdizimi

    FROM tablo1 [ LEFT | RIGHT ] JOIN tablo2

    ON tablo1.alan1karlatrma tablo2.alan2

    LEFT JOIN ve RIGHT JOIN ilemlerinin blmleri unlardr:

    Blm Aklama

    tablo1, tablo2 inden kaytlarn birletirilecei tablolarn addr.

    alan1, alan2 Birletirilen alanlarn addr. Alanlar ayn veri tr nde olmal veayn trde veriler iermelidir, ancak alanlarn ayn ada sahipolmalar gerekmez.

    karlatrma Herhangi bir karlatrma ilecidir: "=," "," "=," or

    "."

    Uyarlar

    Bir sol d birleim oluturmak iin LEFT JOIN ilemini kullann. Sol d birleimler, ikincitablonun (sadaki) kaytlarnda eleen deer olmasa bile, iki tablodan ilkinin (soldaki) tmkaytlarn ierir.

    Bir sa d birleim oluturmak iin RIGHT JOIN ilemini kullann. Sa d birleimler, ilktablonun (soldaki) kaytlarnda eleen deer olmasa bile, iki tablodan ikincisinin (sadaki) tmkaytlarn ierir.

    rnein, Blmler (sol) ve alanlar (sa) tablolar ile, blme atanm alan olmasa biletm blmleri semek iin LEFT JOIN ilemini kullanabilirsiniz. Herhangi bir blmeatanmam olanlar da dahil, tm alanlar semek iin RIGHT JOIN'i kullanmalsnz.

    Aadaki rnek, Kategoriler ve rnler tablolarn KategoriNo alanna gre naslbirletirebileceinizi gsterir. Sorgu, rn iermeyenler de dahil olmak zere tm kategorilerinbir 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 sorgusonularnda bulunmaz. Birletirilen alan bulundurmak iin, alan adn SELECT deyiminde

    yazn (rneimizde Kategoriler.KategoriAd).

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    55/116

    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 ancakbir INNER JOIN bir LEFT JOIN veya RIGHT JOIN iinde yer alamaz. Birleimlerinbaka birleimlerin iine nasl konulabilecei konusunda, INNER JOIN konusundakiiie 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

    ' seer.

    Set rst = dbs.OpenRecordset _

    ("SELECT [Blm Ady], " _

    & "Ady & Chr(32) & Soyady AS Ad " _

    & "FROM Blmler LEFT JOIN alanlar " _

    & "ON Blmler.[Blm No] = " _

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    56/116

    & "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

    lelero Like leci

    Bir dize ifadesi ile bir SQL ifadesindeki bir rnek ile karlatrr.

    Szdizimi

    ifade Like "rnek"

    Like ilecinin blmleri unlardr:

    Blm Aklama

    ifade WHERE yan tmcesi nde kullanlan SQL ifadesidir.

    rnek fadenin karlatrlaca dize veya karakter metinleridir.

    Uyarlar

    Like ilecini, belirlediiniz rnek ile eleen alan deerlerini bulmak iin kullanabilirsiniz.rnekiin, kesin bir deer belirtebilir (rnein, Like "gamze") veya bir deer araln bulmakiin joker karakterleri ni kullanabilirsiniz (rnein, Like "Ga*").

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    57/116

    Bir ifadede Like ilecini, bir alan deerini bir dize ifadesi ile karlatrmak iinkullanabilirsiniz. rnein bir SQL sorgusunda Like "C*"yazarsanz, sorgu, C harfi ile balayantm alan deerlerini verir. Bir parametre sorgusu nda, 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:

    Like "P[A-F]###"

    Aadaki tablo, ifadeleri farkl rneklerle snamak iin Like ilecini nasl kullanacanzgsterir.

    Eleme tr rnek Eleme(True verir)

    Eleme yok(False verir)

    ok sayda

    karakter

    a*a aa, aBa, aBBBa aBC

    *ab* abc, AABB, Xab aZb, bac

    zel karakter a[*]a a*a aaa

    ok saydakarakter

    ab* abcdefg, abc cab, aab

    Tek karakter a?a aaa, a3a, aBa aBBBa

    Tek hane a#a a0a, a1a, a2a aaa, a10a

    Karakter aral [a-z] f, p, j 2, &

    Aralk d [!a-z] 9, &, % b, a

    Hane deil [!0-9] A, a, &, ~ 0, 1, 9

    Birleik a[!b-m]# An9, az0, a99 abc, aj0

    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.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    58/116

    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

    dbs.Close

    End Sub

    Between...And leci

    Bir ifadenin deerinin, belirtilen deer aral iinde olup olmadn belirler. Bu ileci SQLdeyimleri iinde kullanabilirsiniz.

    Szdizimi

    ifade [Not] Between deer1 And deer2

    Between...And ilecinin blmleri unlardr:

    Blm Aklama

    ifade Deerlendirmek istediiniz verileri ieren alan belirten ifadedir.

    deer1,deer2

    fadeyi karlatrmak istediiniz deerlerdir.

    Uyarlar

    fadenin deeri deer1 ile deer2 arasnda ise (bu deerler dahil), Between...And ileci Truedeerini aksi takdirde False deerini verir. Kart koulu deerlendirmek (ifadenin,deer1 ve

    deer2 ile tanmlanan araln dnda kalmas durumu) iin Not mantksal ilecinibulundurabilirsiniz.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    59/116

    Bir alann deerinin, belirtilen saysal aralk iinde olup olmadn belirlemek iinBetween...And ilecini kullanabilirsiniz. Aadaki rnek, bir sipariin belirli bir posta koduaralndaki adrese gnderilip gnderilmediini belirler. Posta kodu 98101 ve 98199 arasndaise, IIfilevi "Yerel" deerini verir. Aksi takdirde, "Yerel Deil" deerini verir.

    SELECT IIf(PostaKodu Between 98101 And 98199, "Yerel", "Yerel Deil")

    FROM Yayyncylar

    fade, deer1 veya deer2Null ise Between...And, Null deerini verir.

    * gibi joker karakterleri bir dz metin olarak alglandklarndan, bunlar Between...And ileciile kullanamazsnz. rnein 980 ile 989 rakamlar ile balayan posta kodlarn bulmak iin980* 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 ile98999 - 9999 aras. (Dk deerlerde - 0000 yazmamalsnz; aksi takdirde, birtakm postakodlarnda uzun posta kodu varsa dierlerinde ise yoksa 98000 braklr.)

    In leci

    Bir ifadenin deerinin, belirtilen listedeki deerlerden herhangi birine eit olup olmadnbelirler.

    Szdizimi

    ifade [Not] In(deer1, deer2, . . .)

    Uyarlar

    In ilecinin blmleri unlardr:

    Blm Aklama

    fade Deerlendirmek istediiniz verileri ieren alan belirten ifadedir.

    deer1,deer2

    fadeyi karlatrmak istediiniz deer veya deer listesidir.

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

    rnein, belirtilen blgeler topluluuna hangi siparilerin gnderilmi olduunu belirlemek iin

    In ilecini kullanabilirsiniz:

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    60/116

    SELECT *

    FROM Sipariler

    WHERE TeslimBlgesi In ('Avon','Glos','Som')

    In leci rnei

    Aadaki rnek, stanbul ve Ankara'ya teslim edilen tm siparileri ve bunlarn teslimtarihlerini ieren bir sorgu oluturmak iin, Northwind veritabanndaki Sipariler tablosunukullanr.

    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

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    61/116

    dbs.Close

    End Sub

    SQL TOPLAM LEVLER

    SQL toplam ilevleri ni kullanarak, deer kmelerinde eitli istatistikler belirleyebilirsiniz. Builevleri bir sorguda ve toplam ifadelerini birQueryDefnesnesinin SQL zelliinde veya birSQL sorgusunu temel alan birRecordset nesnesi olutururken kullanabilirsiniz.

    Avg levi

    Sorguda belirtilen alanda bulunan deer kmesinin aritmetik ortalamasn hesaplar.

    Szdizimi

    Avg(ifade)

    fade yertutucusu, ortalamasn almak istediiniz saysal verileri ieren alan belirten bir diziifadesi ni veya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder.fadeiindeki ileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml birilev olabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir.

    Uyarlar

    Avg ile hesaplanan ortalama, aritmetik bir ortalamadr (deerlerin toplamnn deer saysnablmdr). Avg'yi rnein, ortalama navlun maliyetlerini hesaplamak iin kullanabilirsiniz.

    Avg ilevi hesaplamada herhangi birNull alan iermez.

    Avg ilevini bir sorgu ifadesinde ve birQueryDefnesnesinin SQL zelliinde veya bir SQLsorgusunu temel alan birRecordset nesnesi olutururken kullanabilirsiniz.

    Avg levi rnei

    Bu rnek, navlun bedeki 100 milyonun zerindeki siparilerin ortalama navlun bedellerinihesaplamak 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")

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    62/116

    ' 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.CloseEnd Sub

    Count levi

    Sorgunun dndrd kayt saysn hesaplar.

    Szdizimi

    Count(ifade)

    fade yertutucusu, saymak istediiniz saysal verileri ieren alan belirten bir dizi ifadesi ni veyabu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder.fade iindekiileler, tablo alannn adn veya bir ilevi (bilinen veya kullanc tanml bir ilev olabilirancak dier SQL toplam ilevlerinden biri olamaz) ierebilir. Metin dahil, herhangi bir trdekiverileri sayabilirsiniz.

    Uyarlar

    Temel alnan sorgudaki kayt saysn saymak iin Count'u kullanabilirsiniz. rnein belirli birlkeye yaplm olan siparilerin saysn saymak iin Count'u kullanabilirsiniz.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    63/116

    Her ne kadarifade de alan zerinde hesap yapabilirse de, Count, basit biimde kayt saysnhesaplar. Kaytlarda hangi deerlerin sakland ile ilgilenmez.

    fade yldz eklinde (*) bir joker karakteri deilse, Count ilevi Null deerine sahip olankaytlar saymaz. unless . Bir yldz kullanrsanz, Count, Null alanlar ieren kaytlar da dahil

    olmak zere toplam kayt saysn hesaplar. Count(*), Count([Stun Ad]) ilevinden belirginbiimde 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 Nullolmayan 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, birQueryDefnesnesinin SQLzelliinde veya bir SQL sorgusunu temel alan birRecordset nesnesi olutururkenkullanabilirsiniz.

    Count levi rnei

    Bu rnek, ngiltere'ye teslim edilen sipari saysn hesaplamak iin Sipariler tablosunukullanr.

    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")

    ' ngiltere'ye yaplm teslimlerin saysn

    ' hesaplar.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    64/116

    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 ifadesi niveya bu alandaki verileri kullanarak bir hesaplama yapan bir ifadeyi temsil eder.fade iindekiileler, tablo alannn adn, bir sabiti veya bir ilevi (bilinen veya kullanc tanml bir ilevolabilir ancak dier SQL toplam ilevlerinden biri olamaz) ierebilir.

    Uyarlar

    First ve Last ilevleri, DAO Recordset nesnesinin MoveFirst ve MoveLast yntemlerinebenzer. Basit biimde, sorgunun dndrd sonu kmesindeki ilk veya son kaydn alandeerini dndrr. Kaytlar genellikle belirli bir srada dndrlmediklerinden (sorgu iinde

    ORDER BY yan tmcesi yoksa), bu ilevlerin dndrd kaytlar dzensizdir.

  • 8/2/2019 (SQL) Structured Query Language (Yaplandrlm Sorgu Dili)

    65/116

    First, Last levleri rnei

    Bu rnek, alanlar tablosundaki ilk ve son kaytlarn Soyad alanlarnn deerlerini vermekzere alanlar tablosunu kullanr.

    Bu rnek, SELECT deyimi rneinde bulabileceiniz EnumFields yordamn arr.

    Sub FirstLastX1()

    Dim dbs As Database, rst As Recordset

    ' Bu satyry, bilgisayarynyzdaki Northwind yolunu

    ' bulundurmak zere deitirin.

    Set dbs = OpenDatabase("Northwind.md