Veri Tabanı Yönetim Sistemleri TBIL-403

AHMET YESEVİ ÜNİVERSİTESİ Uzaktan Eğitim Fakültesi TÜRTEP

TBIL-403

VERİ TABANI YÖNETİM SİSTEMLERİ
Dr. Yalçın ÖZKAN

Veri Tabanı Yönetim Sistemleri TBIL-403 -> Ahmet Yesevi Ünv

file:///D|/Belgeler/Universite/Donem_III/Dersler/temp/Kapak_TBIL403.html [24.11.2006 21:26:14]

Untitled Document

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/kunye.htm [24.11.2006 21:26:14]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01002.htm

Veri tabaný sistemleri bilgisayar sistemlerinin önemli bir bileþeni olarak deðerlendirilir. Veri Tabaný Yönetim Sistemleri (VTYS), birbirleriyle iliþkili veri ve programlar topluluðundan oluþmaktadýr. Veri topluluðu bir "veri tabaný" olarak deðerlendirilir. Veri tabaný, bir kuruluþa iliþkin bilgilerin yer aldýðý ortamdýr. Veri tabaný sistemleri, veri kümelerinin düzenli biçimde tutulduðu ve bu verilerin çeþitli yazýlýmlar aracýlýðýyla yönetildiði ortamlardýr. Bu derste; temel kavramlar ardýndan, veri tabaný tasarýmýnýn esasýný oluþturan "Varlýk-Ýliþki modeli" ele alýnarak incelenecektir. Ardýndan "Ýliþkisel Model" ele alýnacak ve "Ýliþkisel Veri Tabaný" tasarýmý üzerinde durulacaktýr. Veri Tabaný Yönetim Sistemlerinin temel sorgulama dili olan SQL, bu ders kapsamýnda ayrýntýlý biçimde ele alýnarak incelenecekir. Bu dilin sorgulama olanaklarý ve veri tabanýný deðiþtirme özellikleri üzerinde durulacaktýr. Bu dersi tamamlayan öðrenci, veri tabaný sistemleri üzerinde ayrýntýlý bilgi sahibi olacak, SQL sorgulama dilini etkin bir biçimde kullanabilecektir.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01002.htm [24.11.2006 21:26:15]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01005.htm

TEMEL KAVRAMLAR
Bu bölümde,
● ● ● ●

Klasik Dosya Yapýlarý, Veri Tabaný Sistemleri, Veri Tabaný Sistemlerinin Üstünlükleri, Veri Modelleri

anlatýlmaktadýr.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01005.htm [24.11.2006 21:26:15]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01010.htm

Bölüm Hedefi
Bu bölümde,
● ● ● ●

● ●

Bilgisayardaki dosya kavramýný, Temel dosya tiplerini, Veri Tabaný kavramýný, Veri Tabaný sistemlerinin neden tercih edilmesi gerektiðini, Veri modelinin ne olduðunu ve Baþlýca veri modellerini

öðreneceksiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01010.htm [24.11.2006 21:26:15]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01020.htm

1.1 Klasik Dosya Yapýlarý
Bilgisayarlarýn ilk ortaya çýktýðýndan bu yana hem donaným hem de yazýlým alanýnda pek çok deðiþim ortaya çýkmýþtýr. Doðal olarak bu deðiþim, kuruluþlarýn ve kiþilerin gereksinimlerine daha iyi cevap verebilmek amacýyla ortaya çýkmaktadýr. Pek çok kuruluþta eskiye oranla çok daha fazla veri üretildiðinden, geleneksel veri saklama ve iþleme tekniklerinin yetersiz kaldýðý gözlemlenmiþtir. Veri saklama birimlerinde depolanan veri topluluklarýna “dosya” (file) denir.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01020.htm [24.11.2006 21:26:16]

Disk üzerinde tutulan bu bilgiler. doðduðu yer vb gibi bilgileri içerebilir. yeni öðrenci eklendiðinde büyüyecek veya çýkarýldýðýnda küçülecektir. baba adý.1 Kayýt ve Alan Dosyalar kendi içinde kayýtlara bölünmüþtür. bilgisayarýn kapatýlmasý durumunda bu bilgiler yok olacaktýr.htm [24. Bu liste çok sayýda veri içerebilir.11. listenin ana bellekte tutulmasý söz konusu olamaz.2006 21:26:16] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01025. Ana bellekte tutulduðu takdirde. Örneðin. Ayrýca zaman zaman içeriði deðiþecektir. örneðin sabit disk üzerinde yer almasý gerekecektir. O halde. Bir sýnýftaki öðrenci listesini göz önüne alalým. O halde bu verilerin kalýcý bir ortamda. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01025.htm 1. Bu listedeki her bir öðrenci bilgisi bir mantýksal kayýt oluþturur.1. Her kayýt da farklý bilgiler içerebilir. Sayýlan bu bilgilerin herbirine alan (field) adýný veriyoruz. öðrencinin adý.

Bu tür dosyalarýn kayýtlarýna ardýþýk olarak eriþilebilmesine karþýlýk. muhasebe. Sýralý dosyalar. üretim ve diðer uygulamalarda kullanýlmak üzere hazýrlanýr. Ancak sadece birkaç öðrencinin listelenmesi isteniliyorsa.2006 21:26:16] . sýralý ya da doðrudan eriþim yöntemleri kullanýlarak iþlenir. Doðrudan eriþim yönteminde ise. pazarlama. bir baþka deyiþle ardýþýk dosyalar. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01030.htm [24. Sýralý dosyalarýn herbir kayýtýna ardýþýk olarak eriþilmesi bazý durumlarda yararlý olmasýna raðmen. istenilen kayýda doðrudan eriþerek iþlenir. kayýtlar fiziksel olarak ardýþýk olmayabilir.htm 1.1. Bu dosyalar. Bu durumda dosyanýn sýralý olarak tasarlanmýþ olmasý sorun yaratmaz. kayýtlar tek tek sýrayla okutulmaz.11. stok. içerdiði kayýtlara birinci kayýttan baþlamak üzere sýrayla eriþim yapmak üzere tasarlanmýþ dosyalardýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01030. bazý uygulamalarda sorunlar yaratýr. kayýtlara peþpeþe eriþim söz konusudur. Örneðin. tüm öðrencilerin okunarak bu listenin elde edilmesi uygun bir yöntem olmayacaktýr. dosyanýn tüm kayýtlarý tek tek taranarak istenilen kayýtlara ulaþýlýr. Söz konusu öðrencilere doðrudan eriþilmesi en uygun yoldur. okuldaki tüm öðrencilerin tümü listelenecek ise.2 Sýralý Dosyalar Klasik bilgisayar dosyalarý birbirinden baðýmsýz. Sýralý eriþimde.

3 Ýndeksli Dosyalar Sýralý dosyalarda tüm kayýtlar ardarda gelimesi gerkiyordu. öðrenci dosyasýnda. eriþimde kulanýlmak üzere seçilen alan olarak deðerlendirilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01035.2006 21:26:17] . Doðrudan eriþimli dosyalarýn en tanýnmýþý. Ýndeksli dosyalar veya bir baþka deyiþle indeks sýralý dosyalar. Herhangi bir öðrencinin bilgilerine ulaþmak söz konusu olduðunda. Anahtar alan. bu numara önce indeks üzerinde aranýlarak bulunur ve söz konusu kayýda iliþkin adres bilgisi elde edilerek. indeksli dosyalar olarak bilinir.htm 1. herbir arama iþlemi dosyanýn baþýndan itibaren yapýlmaz.11. Bu soruna çözüm bulmak amacýyla doðrudan eriþimli dosyalar kullanýlýr. Belirlenen kayýtlara doðrudan eriþilerek üzerinde iþlem yapýlýr. öðrenci numarasýný içeren alanýnýn indeks alaný olarak tasarlandýðýný varsayalým. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01035. Bu tür dosyalarda. Bir dosya için oluþturulan indeks. bu adrese doðrudan eriþilir. Örneðin.htm [24. veri dosyasýndan ayrý olarak bir indeks dosyasýnýn oluþturulmasý ile birlikte hazýrlanýr. söz konusu dosyanýn anahtarlarý ile bu anahtarlarýn disk üzerinde bulunduðu adresi içerir.1.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01040.4 Hesaba Dayalý Dosyalar Bir diðer doðrudan eriþimli dosya türü hesaba dayalý dosyalar (hashed files) olarak bilinir.2006 21:26:17] .htm 1.1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01040. indeksli dosyalar gibi ayrý bir indeksin tutulmasýný gerektirmez.htm [24. Dosyanýn herhangi bir kaydýna doðrudan doðruya eriþebilmek için bir hesaplama algoritmasý kullanýr. Bu tür dosyalar.11.

Veri tabaný sistemleri. kayýt desenleri ve dosya yapýlarýnda ortaya çýkabilecek en ufak bir deðiþiklik bile uygulama programlarýnýn deðiþmesine ve yeniden derlenmesine neden olmaktadýr. veriyi saklama ve veriye eriþim konusunda yeni yazýlým teknolojilerine yönelme baþlamýþ ve Veri Tabaný Yönetim Sistemleri (VTYS) yaklaþýmý ortaya çýkmýþtýr.htm 1. Veri Tabaný Yönetim Sistemleri (VTYS) yaklaþýmýnda veri giriþi ve depolanmasý. geleneksel dosya sisteminin yetersiz kaldýðý görülmüþtür.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01045. Veri topluluðu bir “veri tabaný” olarak deðerlendirilir.htm [24. birbirleriyle iliþkili veri ve programlar topluluðundan oluþmaktadýr. Bu sorunu çözmek üzere. veriye eriþen uygulama programlarýndan baðýmsýzdýr. veri kümelerinin düzenli bçimde tutulduðu ve bu verilerin çeþitli yazýlýmlar aracýlýðýyla yönetildiði ortamlardýr.2 Veri Tabaný Sistemleri Karmaþýk dosya yapýlarý ve çok sayýda dosya arasý iliþki ve kullanýcýlarýn dosyalara eriþimi söz konusu olduðunda.2006 21:26:18] . Klasik dosya kullanýmýnda ise. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01045. Veri tabaný sistemleri bilgisayar sistemlerinin önemli bir bileþeni olarak deðerlendirilir.11. Veri tabaný yönetim sistemleri (VTYS). Veri tabaný bir kuruluþa iliþkin bilgilerin yer aldýðý ortamdýr.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01050.htm 1.2006 21:26:18] .11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01050. geleneksel dosya kullanýmýna göre birçok yönden üstünlük saðlamaktadýr.htm [24.3 Veri Tabaný Sistemlerinin Üstünlükleri Veri tabaný kullanýmý.

Son zamanlarda ortaya çýkan Nesneye Yönelik Veri Modeli.2006 21:26:18] . Þu ana dek birçok veri modeli geliþtirilmiþtir.htm 1. En yaygýn kullanýlaný ise.11. Baþlýca veri modelleri yandaki animasyonda yer almaktadýr. Ýliþkisel Veri Modeli ile birlikte bazý VTYS’lerde kullanýlmaktadýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01055. Ýliþkisel Veri Modelidir. ! Veri Modellerini görmek için "DEVAM" düðmesine týklayýnýz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01055. kullanýlan kavramlar.htm [24. Sayýlan bu veri modellerinin ilk ikisi þu anda kullanýlmamaktadýr. yapýlar ve iþlemler topluluðuna “Veri Modeli” denir. Bir veri tabaný yapýsýnýn temelini veri modeli kavramý oluþturmaktadýr.4 Veri Modelleri Veri Tabaný Yönetim Sistemleri belirli bir veri modeline dayanýr. Günümüzde kullanýlan VTYS’lerin hemen hemen tümü iliþkisel veri modeline dayalýdýr. Veriyi mantýksal düzeyde düzenlemek için.

Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT01060.htm [24.2006 21:26:19] .11.

Varlýklarýn Eþlendirilmesi. Nitelikler. ● ● ● ● ● ● ● ● ● ● Varlýk Ýliþki Modeli. Varlýk. anlatýlmaktadýr. Varoluþ Koþulu. Varlýk Ýliþki Modelinin Tablolaþtýrýlmasý. Anahtarlar.htm VARLIK ÝLÝÞKÝ MODELÝ Bu bölümde. Varlýk Dizisi.htm [24.11.2006 21:26:19] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02005. Varlýk ve Ýliþki Kümeleri. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02005. Varlýk Ýliþki Þemalarý.

Varlýklarý eþlendirme türlerini. ● ● ● ● ● ● ● ● Varlýk ve iliþki kavramlarýný. öðreneceksiniz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02010.htm [24. Anahtar ve süper anahtarý ve görevlerini.2006 21:26:19] . Varlýk-iliþki þemalarýnýn görevlerini.htm Bölüm Hedefi Bu bölümde. Varlýk-iliþki þemalarýnýn veri tabaný tablolarýna dönüþtürülmesini. Varlýk Ýliþki þemalarýnýn düzenlenmesini.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02010. Varlýk Ýliþki modelinin temel kavramlarýný . Varoluþ koþulu kavramýný.11.

Varlýk Ýliþki modelini kýsaca Türkçe kelimelerinin baþ harflerinden türeterek VÝ veya Ýngilizce kelimelerinin baþ harflerinden türeterek kýsaca ER modeli olarak isimlendirilir. veri çözümlemede. her bir veri modeli için birçok VTYS’leri üretilmiþtir.htm 2. VTYS’den baðýmsýz olarak veri çözümlenir.htm [24. Örnek bir varlýk iliþki modeli þemasý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02020.1 Varlýk Ýliþki Modeli Zaman içinde. Varlýk-iliþki modeli herhangi bir VTYS’de kullanýlmasa bile. Bu model kullanýlarak. Ancak þu ana kadar hiçbir VTYS içinde kullanýlmamýþ bir veri modeli daha bulunmaktadýr. modellemesi ve iliþkileri tamamlandýktan sonra herhangi bir VTYS veri tabaný þemasýna dönüþtürülür. modellemede ve iliþkilerin ortaya konulmasý açýsýndan çok kullanýlan bir araçtýr.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02020. Bu veri modeli varlýk-iliþki modeli (Entity-Relationship Model) adýyla bilinmektedir.2006 21:26:20] .

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02025. var olan ve diðer varlýklardan ayýrt edilebilen bir nesnedir. kýz çocuðu birer varlýk olarak deðerlendirilir.2006 21:26:20] .htm [24. ● ● ● ● bir bir bir bir bilgisayar.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02025.htm 2. aslýnda dünyamýzdaki var olan nesneleri. kaplan. olaylarý ve kavramlarý tanýmlamaktadýr. Örneðin.2 Varlýk Varlýk (Entity). Yandaki nesnelerden her biri bir varlýk olarak deðerlendirilir. Bu kavram. savaþ uçaðý.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02030.htm [24. bir okuldaki tüm öðrenciler “öðrenci”.3 Varlýk Dizisi Ayný türdeki varlýklar bir varlýk dizisi ya da bir baþka deyiþle varlýk kümesi oluþturur.htm 2.2006 21:26:21] . Örneðin. bu okuldaki tüm dersler “ders” isimli varlýk olarak deðerlendirilebilir. Çok sayýdaki öðrenci topluluðu da bir varlýk oluþturur. “Burak” bir varlýk olmasýna karþýlýk. Örneðin. onun yer aldýðý “öðrenci” tanýmý da bir varlýk olarak deðerlendirilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02030.11.

Bu iliþkileri.htm 2. Ayný tür iliþkilerin oluþturduðu kümeye iliþki kümesi denir ve bu iliþki kümelerini R ile gösterilir. Biçimsel olarak. ikincisi ise bu öðrencilerin aldýklarý dersleri içermektedir.11. E1= {Burak.. Ýki varlýk kümesi için kartezyen çarpým þu þekildedir: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02035. En varlýk kümeleri ise. E2. Bu varlýk kümelerinden birincisi öðrencileri..file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02035. Fizik} Bu iki küme arasýndaki iliþki. E1.. Kartezyen çarpým. Begüm} E2= {Matematik. “Burak” varlýðý ile “Dersler” varlýðý arasýnda bir iliþki vardýr çünkü. bu varlýk seti üzerindeki bir matematiksel iliþki olarak ifade edilebilir. “Burak” bir öðrencidir ve aldýðý dersler “Dersler” varlýðý ile gösterilmektedir.4 Varlýk ve Ýliþki Kümeleri Varlýklar arasýndaki baðlantýya iliþki adý verilir.. ayný türdeki iliþkilerin bir kümesidir. Tüm öðrencilerle tüm dersler arasýndaki iliþki ise kartezyen çarpým yapýlarak ortaya konulur. Ýliþki kümesi. öðrenci-ders çiftleri biçiminde ifade edebiliriz.2006 21:26:21] . iki küme arasýnda olasý tüm çiftleri ifade etmektedir. bu kümeler arasýndaki R iliþkisi þu þekilde tanýmlanýr: Örnek Aþaðýdaki iki varlýk kümesini gözönüne alalým. Örneðin.htm (1 of 3) [24. öðrencilerle dersler arasýnda olan iliþkidir.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02035.11. Bu iki varlýk arasýnda müþteri-hesap no biçiminde ifade edilen bir iliþki bulunmaktadýr.htm (2 of 3) [24. 1200)} R5 = {(Dilay. Matematik).htm E1 x E2 = {(Burak. Matematik)} Bu iliþki kümeleri için aþaðýdaki baðýntýlarýn doðru olduðu görülür: R1 ⊆ E1 x E2 R2 Í E x E 1 2 R3 Í E x E 1 2 Bu örnek bize. R iliþki kümesinin bir alt kümesi olduðunu göstermektedir. Matematik). (Begüm. (Dilay. 1400)} R2 = {(Begüm. (Begüm. 1525} R3 = {(Selin. (Burak. "Müþteri" ve "Hesaplar" varlýklarý arasýnda ikili iliþki bulunmaktadýr. (Begüm. Matematik)} R2 = {(Burak. 1350). Örnek Bir bankanýn müþterileri ve bu müþteriler için bankanýn düzenlediði hesaplar birer varlýk olarak kabul edilir. 1500). Fizik)} R3 = {(Burak. Bu iliþki kümeleri þu þekilde ifade edilebilir: R1 = {(Burak. Fizik). iki veri kümesi arasýnda geçerli tüm iliþki kümelerinin.2006 21:26:21] . Matematik). (Burak.1111)} R4 = {(Sezin. Fizik)} Aþaðýda gösterildiði biçimde üç iliþki kümesi tanýmlayalým: R1 = {(Burak. 1750)} file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02035.

htm (3 of 3) [24.11.2006 21:26:21] .htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02035.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02035.

5 Nitelikler Bir varlýk.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02040.htm 2. Örneðin. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02040.htm [24. “PERSONEL” varlýðýnýn nitelikleri yandaki þekildeki gibi olabilir. çok sayýda nitelik yardýmýyla tanýmlanabilir.11.2006 21:26:22] .

Bu sayede her varlýk. Örneðin bir “PERSONEL” varlýðý.2006 21:26:22] . (nitelik.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02045. etki alaný) çiftleri biçiminde ifade edilebilir.5.1 Etki Alaný Niteliðin aldýðý deðerlere etki alaný (domain) adý verilir. O halde nitelik. matematiksel anlamda bir fonksiyon olarak da deðerlendirilebilir.htm 2.11.htm [24. “PERSONEL” varlýðýnýn “adý ve soyadý” niteliði. nitelik ve veri deðeri olarak veri çiftleri biçiminde gösterilebilir. Örneðin. birçok PERSONEL adýný ve soyadýný içeren bir dizidir. “PERSONEL” varlýðýnýn bir elemaný için veri çiftleri yandaki þekildeki gibi ifade edilebilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02045. Bir varlýk kümesinden bir etki alanýna eþlendirmeyi saðlar.

“yaþ” isimli bir nitelik tanýmlamaya gerek yoktur.htm [24. bir baþka varlýk niteliði elde edilebiliyorsa.2006 21:26:23] . bu tarih çýkarýlýr ve PERSONELin yaþý bulunur.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02050. PERSONELin “doðum tarihi” niteliði belirli ise. “yaþ” niteliði elde edilebilir. Örneðin. içinde bulunduðumuz yýldan yararlanýlarak.11. bu yeni niteliðe türetilen nitelik adý verilir.5. ÖRNEK: PERSONELin doðum tarihi 1960 ise. “Yaþ” niteliði bir türetilen nitelik olarak deðerlendirilir. “PERSONEL” varlýðýnýn “doðum tarihi” niteliðinden yararlanýlarak. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02050.2 Türetilen Nitelik Bir nitelik kullanýlarak.htm 2. O halde.

2006 21:26:23] . çok deðere sahip nitelik adý verilen bir kavramdan söz edilir. ÖRNEK: Bir kiþinin “beðendiði araba markalarý” isimli nitelik. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02055.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02055.5. birden çok arabayý kapsayacaðý için bu niteliðin çok deðere sahip bir nitelik olduðu kabul edilir.htm [24.3 Çok Deðere Sahip Nitelikler Bir nitelik birden fazla deðer ile eþlenebiliyorsa.htm 2.11.

htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02060. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02060.11. Bu tür niteliklere birleþik nitelik adý verilir.5. ÖRNEK: PERSONELin “cadde” ve “þehir” nitelikleri birleþtirilerek “adres” isimli yeni bir nitelik oluþturulabilir.htm 2.4 Birleþik Nitelikler Birden fazla nitelik birleþtirilerek yeni bir nitelik oluþturulabilir.2006 21:26:23] .

Bu varlýðýn nitelikleri ve etki alaný. “Kim kimin yöneticisidir?” biçimindeki bir iliþkiyi göz önüne alalým. buna rol adý verilir.5.5 Rol Bir iliþki varlýðýn bir fonksiyonu ise. Bu iliþki. Burak) (Begüm.2006 21:26:24] .11. Örneðin. (Begüm.htm [24. (Yönetici. Buna hangi PERSONELin.htm 2. ÖRNEK: “PERSONEL” varlýðý ile niteliklerini göz önüne alalým. yani içerdiði deðerler gösterilmiþtir. Dilay) (Selin. Sezin) file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02065. diðerinin yöneticisi olduðunu belirleyen “çalýþtýðý kiþi” iliþkisini göz önüne alarak rol çiftlerini belirleyelim. Bu varlýklar arasýnda bazýlarý diðerlerinin yöneticisidir. Ýþçi) çiftleriyle karakterize edilir. Yönetici) çiftleri göz ardý edilir. Ancak bu çiftler arasýnda. “PERSONEL” varlýðý hem yöneticileri hem de iþçileri kapsayacaktýr. (Ýþçi.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02065.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02070. Eþleme sayýlarý n>2 varlýk için söz konusudur ve ikili iliþkilerin ortaya konulmasý açýsýndan yararlýdýr.2006 21:26:24] .11.6 Varlýklarýn Eþlendirilmesi Bir varlýkla iliþkiye girebilecek varlýklarýn sayýsýna eþleme sayýsý denir. A ve B gibi iki varlýk kümesi arasýndaki R iliþki kümesi için dört farklý eþleme durumlarý olabilir. ! Varlýk Eþleme þekillerinin tamamýný görmek için "Devam" düðmesine týklayýnýz.htm 2.htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02070.

11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02075.6. ÖRNEK 1: Müþteri-hesaplar iliþkisini göz önüne alalým. A varlýk kümesi içinde sadece bir varlýk ile iliþkili ise birden-bire iliþki söz konusudur.2006 21:26:25] .htm 2. Her müþteri için sadece bir hesap açtýrýlabildiðini ve birden fazla kiþi için ortak hesap açýlmasýna izin verilmediðini varsayalým. B kümesindeki bir elemanla iliþkide olmasý bire-bir iliþkiyi ifade etmektedir.htm (1 of 2) [24. A ve B kümelerinin. A kümesinin her bir elemanýnýn. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02075. B varlýk kümesi içindeki sadece bir varlýk ile iliþkili ve B varlýk kümesi içindeki bir varlýk. biçiminde olduðunu varsayalým.1 Birden-bire Ýliþki A varlýk kümesi içindeki bir varlýk.

htm Þekil üzerinde gösterildiði gibi.2006 21:26:25] . O halde bu birden-bire iliþkidir.htm (2 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02075. Ayný biçimde bir hesap numarasý sadece bir müþteriye verilebilmektedir.11. her bir müþteri sadece bir hesap numarasý ile eþlenebilmektedir. Diðer örnekler için týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02075.

b2).2006 21:26:25] .b4)} R2 = {(a2.htm [24.(a2. birden-bire ilişkiden söz edilebilir.(a3.b3)} R3={(a1. R1 = {(a1.b1)} ÖRNEK 3: Aşağıdaki iki kümeyi gözönüne alalım: Bu iki küme içinde yer alan evli eşler birden-bire bir eşlemeye sahiptir.b1).(a2.(a4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02075_2.b2).b2).htm ÖRNEK 2: Aşağıdaki varlıkları gözönüne alalım: Bu varlıklar için aşağıdaki eşlemeler yapılabiliyorsa.(a3.b3).11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02075_2.

6. A kümesindeki sadece bir varlýk ile eþleþebilir. Bu durumun tersi geçerli deðildir. Çünkü bir annenin bir veya daha fazla çocuðu olabilir.htm [24. B kümesi ise bu anne varlýklarýnýn çocuklarýndan oluþmaktadýr. Ancak bir çocuðun sadece bir annesi olacaktýr. doðal olarak birden-çoða biçiminde olacaktýr.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02080.2006 21:26:25] .2 Birden-çoða Ýliþki A kümesi içindeki bir varlýk. O halde iki küme arasýndaki R iliþki kümesi þu þekilde ifade edilebilir: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02080. B kümesi içindeki birden fazla varlýk ile iliþkili ise. ÖRNEK: A varlýk kümesi anne isimlerinden oluþmaktadýr. küme elemanlarýný daha açýkca yazabiliriz: Bu iki küme arasýndaki iliþki.htm 2. Yani B kümesindeki bir varlýk. bu eþlemeye birden-çoða iliþki adý verilir.

B kümesindeki bir varlýk ile iliþkili ise. Bu iki varlýk kümesi arasýndaki iliþki þu þekilde ifade edilebilir : file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02085.6.2006 21:26:26] .htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02085. B kümesi ise bu çocuklarýn annelerini içermektedir.3 Çoktan-bire Ýliþki A varlýk kümesindeki birden fazla varlýk. ÖRNEK: A kümesi çocuklarý.htm 2.11. bu eþlemeye çoktan-bire iliþki adý verilir.

Müþteriler birden fazla hesaba sahip olabilmekte ve birden fazla müþteri ayný hesabý açabilmektedir. Bu þekil. aile üyelerinin ortak hesap açabilmesi durumunda çoktan-çoða iliþki söz konusu olmaktadýr. “Burak” isimli kullanýcý 4500 ve 2310 numaralý iki hesaba sahiptir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02090.htm 2.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02090.6.4 Çoktan-çoða Ýliþki A varlýk kümesi içindeki bir varlýk B varlýk kümesi içindeki birden fazla varlýk ile iliþkili ise ve B kümesindeki bir varlýk A kümesindeki birden fazla varlýk ile eþleniyorsa çoktan-çoða iliþki vardýr. Buna karþýlýk. ÖRNEK: Müþteri-hesap iliþkilerinde. 4500 numaralý hesabýn ayný aileye üye “Burak” dýþýnda “Begüm” isimli bir baþka müþterisi bulunmaktadýr.htm [24.2006 21:26:26] . Örneðin.11. müþteri-hesap iliþkisinin çoktan-çoða biçiminde olduðunu göstermektedir.

11.htm 2. Böyle bir durumda Y’ye baskýn varlýk (dominant entity).htm [24. ürün={ürün isimleri} stok hareket={Günlük ürün giriþ ve çýkýþ miktarlarý} Burada varlýklar arasýndaki iliþki birden çoða doðrudur. bu varlýkla iliþkili olan tüm “stok hareket” varlýklarýnýn da silinmesi gerekecektir. Çünkü bu varlýk “stok hareket” kümesindeki baþka varlýklarla da iliþkilidir. Yukarýda söylenenin aksine “ürün” kümesinden bir varlýk silinmesi söz konusu ise. “ürün” varlýk kümesinden bir varlýk silinmesi söz konusu olmaz. Bu durumda. “stok hareket” varlýk kümesinden bir varlýðýn silinmesi durumunda.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02095. “stok hareket” varlýðý ise baðýmlý varlýk olarak deðerlendirilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02095. X’e baðýmlý varlýk (subordinate entity) adý verilir. Y varlýðýnýn bulunmasýna baðlý ise. Bu durumda “ürün” varlýðý baskýn varlýk. ÖRNEK: Bir iþletmede “ürün” ve “stok hareket” varlýklarýnýn mevcut olduðunu varsayalým. X’in Y’ye baðlý olduðundan söz edilir.2006 21:26:27] . Y silinirse X’in bir anlamý kalmayacaktýr. Bir baþka deyiþle. Her ürün birden fazla stok hareketi ile iliþkilidir. O halde “X’de silinmelidir” sonucuna ulaþýlýr.7 Varoluþ Koþulu Eðer X varlýðýnýn bulunmasý.

Örneðin “öðrenci” varlýk kümesi içinde her bir öðrenciyi diðerinden ayýrt eden nitelikler neler olabilir? Öðrencileri birbirinden ayýrt etmek için. öðrenci numarasýný kullanabileceðimizi söyleyebiliriz. bir varlýk kümesi veya bir iliþki kümesi içinde yer alan varlýklarý birbirinden nasýl ayýrt edebileceðiz sorunu karþýmýza çýkmaktadýr.8 Anahtarlar Varlýklarý ve iliþkileri tanýmlamýþ bulunuyoruz. "Süper ve Aday Anahtar" olmak üzere iki tür anahtar vardýr.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02100.2006 21:26:27] .htm ! 2. Varlýk kümesi içindeki varlýklarý birbirinden ayýrt etmek için kullanýlan bu tür niteliklere varlýk kümesinin anahtarý denir. Diðer anahtar türünü görmek için "Devam" düðmesine týklayýnýz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02100. Ancak.htm [24.

Bir süper anahtarýn herhangi bir süper kümesi daima bir süper anahtar olarak kabul edilir. birden fazla niteliðin birleþiminden de oluþabilir. "SSK numarasý" ve "PERSONELin adý" birlikte süper anahtar olarak deðerlendirilebilir. PERSONELin “adý” süper anahtar olarak tanýmlanamaz.8. Ancak. Adý. ÖRNEK: SSK numarasý bir PERSONELi diðerinden ayýrt etmek için yeterlidir. Çünkü bir ülkedeki tüm çalýþanlarýn sadece bir SSK numarasý vardýr ve iki farklý kiþinin ayný SSK numarasýna sahip olmasý olanaksýzdýr.1 Süper Anahtar Varlýk kümesi içinde yer alan bir varlýðý kesin olarak tanýmlamaya yarayan anahtara süper anahtar denir. Süper anahtarlar süper küme oluþturur.htm [24.htm 2. Çünkü ayný isme sahip birçok PERSONEL var olabilir. Bölümü” nitelikleri birlikte bir süper anahtar olarak kabul edilebilir. Hatta “SSK Numarasý. Bu anahtar sadece bir nitelikten oluþabileceði gibi.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02105. “SSK numarasý” bir süper anahtar olmasý nedeniyle. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02105.2006 21:26:27] .11.

birlikte "PERSONEL" varlýðý içindeki her bir varlýðý diðerinden ayýrt etmek için kullanýlabilir. Anahtar ise. Adý. ayný tanýma uygundur. tek baþýna varlýklarý birbirinden kesin olarak ayýrt etmekte kullanýlabilir. “SSK No. bu özelliði kazanmak için gerekenden fazla niteliði içerebilir. “SSK No” niteliði süper anahtarýn bir parçasý olmasýna karþýlýk.2006 21:26:28] . Ancak gerekenden fazla nitelik içermeme özelliðine sahiptir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02110.htm 2. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02110.11. Bazý durumlarda.8. varlýklarý kesin olarak birbirinden ayýrt etme özelliðine sahip olmasýna karþýlýk. O halde “SSK No” niteliði bir anahtardýr. birlikte bir anahtar olarak tanýmlanabilir. varlýklara iliþkin birkaç nitelik. ÖRNEK: Personel için. bu anahtara aday anahtar ya da kýsaca anahtar adý verilir. Yukarýda görüldüðü gibi. Bir varlýk kümesinin süper anahtarý bir veya daha fazla niteliðin birleþiminden oluþabiliyordu.htm [24. Bu tür bir süper anahtarýn herhangi bir alt kümesi ayný zamanda bir süper anahtar deðil ise.2 Aday Anahtar Varlýk kümesi içinde yer alan bir varlýðý kesin olarak tanýmlamaya yarayan bir baþka anahtar da aday anahtar olarak bilinmektedir. Bölümü” nitelikleri. Süper anahtar.

Bu niteliklerin tümünün birleþimi bile bir anahtar olamaz. ÖRNEK: Bir “PERSONEL” varlýðýnýn aþaðýda belirtilen niteliklere sahip olduðunu varsayalým.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02115.htm [24.3 Zayýf ve Kuvvetli Varlýklar Bazý durumlarda varlýk kümesi içinde bir anahtar bulmak mümkün olmayabilir.htm 2. O halde bir anahtar olarak kabul edilemez. Böyle varlýk kümelerine zayýf varlýk kümesi adý verilir. Buna karþýlýk. Hatta niteliklerinin tümü biraraya getirildiðinde yine bir anahtar elde edilemeyebilir.8.11. varlýk kümesinin içerdiði niteliklerden en az biri bir anahtar oluþturabiliyorsa bu varlýk kümesine kuvvetli varlýk kümesi adý verilir. Benzer biçimde “doðduðu il” ve “eðitim düzeyi” nitelikleri de ayný nedenlerden ötürü birer anahtar olamaz. bir zayýf varlýk kümesi olarak deðerlendirilir. bu küme içinde ayný isim ve soyadýna sahip çok sayýda PERSONEL olabilir.2006 21:26:28] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02115. “Ýsim ve soyadý” “Doðduðu il” “Eðitim düzeyi” Bu üç nitelikten oluþan varlýk kümesi. Çünkü.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02120.2006 21:26:29] .htm 2.htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02120.9 Varlýklar Ýliþki Þemalarý Varlýk iliþki modelinde varlýklar ve iliþkileri tanýmlamak için aþaðýda belirtilen þema öðeleri kullanýlýr. ! Diðer Varlýk iliþki þema elementlerini görmek için "Devam" düðmesine týklayýnýz.11.

yani ER þemalarý ile aþaðýdaki þekilde gösterilebilir.htm [24.1 Ýliþki Türlerinin Gösterilmesi Ýliþki türleri. Örnek için týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125. Örnek için týklayýnýz 2. 1.9. Bu iliþkiler varlýk-iliþki.htm 2. Örnek için týklayýnýz 3.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125. ● ● ● ● Birden-bire Birden-çoða Çoktan-bire Çoktan-çoða biçiminde tanýmlanmýþtý.2006 21:26:29] .

“sokak” ve “apartman” nitelikleri “adres” isimli adýyla birleþtirilecektir. ● ● ● ● ● ● Adý Cadde Sokak Apartman Doðum tarihi Sevdiði yiyecekler a) b) “Cadde”. Yapýlan tanýmlara uygun olarak varlýk-iliþki þemasýný þöyle oluþturabiliriz: 2.2006 21:26:30] . Örnek için týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125_1. “Doðum tarihi” isimli nitelikten yararlanýlarak “yaþý” isimli yeni bir nitelik elde edilecektir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125_1.11.htm [24. Örnek için týklayýnýz 3.htm ÖRNEK 1: Bir “PERSONEL” varlýðýnýn aþaðýda belirtilen niteliklere sahip olduðunu varsayalým.

htm [24.htm ÖRNEK 2: “Müþteri” ve “Hesap” isimli iki varlýk kümesi birbirine “musHes” isimli iliþki ile baðlýdýr.11. “Müþteri” varlýðýnýn nitelikleri: ● ● ● Adý SSK no Adres “Hesap” varlýðýnýn nitelikleri: ● ● Hesap no Bakiye Varlýk-iliþki þemasý yanda belirtilen þekilde olabilir: 1. Örnek için týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125_2. Örnek için týklayýnýz 3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125_2.2006 21:26:30] .

htm ÖRNEK 3: “PERSONEL” isimli varlýk kümesini göz önüne alalým. Örnek için týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125_3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02125_3. Bu varlýk kümesinin nitelikleri þunlardýr: ● ● ● Adý Adresi Tel no Bu “PERSONEL” varlýk kümesindeki PERSONELin bir kýsmý diðerlerinin yöneticisidir. Örnek için týklayýnýz 2.2006 21:26:30] .11.htm [24. Bu iliþki þu þekilde gösterilebilir: 1.

Varlýk-iliþki þemalarý biçiminde çizilen bir veri tabaný tablolar halinde gösterilebilir.htm 2.2006 21:26:31] . bu isimlerle simgelenen birer tablo düzenlenir.htm (1 of 3) [24.10 Varlýk Ýliþki Modelinin Tablolaþtýrýlmasý Bir veri tabaný.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02130. ÖRNEK 1: ÖRNEK 2: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02130. Veri tabanýnýn her varlýk kümesi ve her iliþki kümesi için.11. tablolardan oluþur.

11.htm ÖRNEK 3: ÖRNEK 4: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02130.2006 21:26:31] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02130.htm (2 of 3) [24.

11.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02130.2006 21:26:31] .htm (3 of 3) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02130.

Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT02135.2006 21:26:31] .11.htm [24.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03005. Ýliþkisel Veri Tabaný.11.2006 21:26:31] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03005. ● ● ● Ýliþkisel Veri Modeli.htm ÝLÝÞKÝSEL VERÝ MODELÝ Bu bölümde. Veri Tabaný Bütünlüðü.htm [24. anlatýlmaktadýr.

● ● ● ● ● Ýliþkisel veri tabaný kavramýný ve ana bileþeni olan tablolarýn özelliklerini.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03010.11. Anahtarlarýn bütünlük sýnýrlamalarýndaki önemini. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03010. Veri tabaný bütünlüðü kavramýný. Veri tabaný sýnýrlamasý türlerini.htm [24. öðreneceksiniz.2006 21:26:32] .htm Bölüm Hedefi Bu bölümde. Veri tabaný þemasý kavramýný.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03015.1 Ýliþkisel Model Ýliþkisel model (relational model).htm 3.htm [24. varlýklar arasýnda oluþan karmaþýk iliþkileri basite indirgemek amacýyla geliþtirilmiþtir. Bu yaklaþýmda.11. içerdiði deðerlere göre saðlanmasý esasýna dayanýr. Ýliþkisel model. veri tabanýndaki tüm iliþkiler tablolar biçiminde tanýmlanmaktadýr. varlýklar arasýndaki baðlantýnýn.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03015. Ticari veri tabaný yönetim sistemlerinin hemen hemen tümünde bu model kullanýlmaktadýr. Ýliþkisel model.2006 21:26:32] . günümüzde en yaygýn biçimde kullanýlan ( veri tabaný modelidir ) bir modeldir.

2006 21:26:32] .11.htm [24. her biri özel isimlere sahip tablolardan oluþur. Anahtar alan.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03020.htm 3.2 Ýliþkisel Veri Tabaný Ýliþkisel veri tabaný. Her bir satýr bir “kayýt” olarak da düþünülebilir. Ýliþkisel veri tabanýnda her bir tablo bir varlýða veya bir iliþkiye karþýlýk gelmektedir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03020. tablonun tanýmlayýcýsýdýr. Tablonun sütunlarý nitelikleri. satýrlar ise bu niteliklerin deðerlerini ifade eder.

1 Tablolarýn Özellikleri Ýliþkisel veri tabaný içinde yer alan her bir tablo.11. ● ● ● ● ● ● Sütunlardan (kolonlardan) oluþur ve Her bir sütunun ayrý bir adý vardýr.2. Satýrlarýn sýrasý önemsizdir. Sütunlarýn sýrasý önemsizdir. Her bir sütun.htm 3. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03025.htm [24. ayný niteliðin tanýmlandýðý ayný etki alanýnýn (domain) belirlediði deðerleri içerir. Her bir satýr birbirinden farklýdýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03025.2006 21:26:33] .

Bir uygulama programýnýn veri tabanýnýn her noktasýna eriþmesi gerekmez.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03030. veri tabaný þemasýnýn herhangi bir uygulama programý tarafýndan gereksinim duyulan alt-düzey mantýksal görünümüdür. Çoðunlukla kendisi ile ilgili bölümlere yani alt-þemaya ulaþmasý yeterlidir. Çünkü bu uygulama veri tabanýnýn tümü ile ilgilenmez.htm 3. veri tabaný þemasýný oluþturur. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03030. her bir uygulama için alt-þemalar hazýrlanýr. ürünler ve müþterilerle ilgili verileri kapsayacaktýr.2.2006 21:26:33] . muhasebe uygulamasý bir alt þemadýr.2 Veri Tabaný Þemasý Veri tabanýnýn mantýksal tasarýmýna “veri tabaný þemasý” adý verilir. Örneðin. firmanýn satýþlarla ilgili alt-þemasý. Alt þema. Bu uygulama.11. veri tabanýnýn diðer kaynaklarý ile ilgilenmez.htm [24. Örneðin. ! Fiziksel ve Kavramsal Þema düðmelerine týkladýðýnýzda onlar hakkýnda bilgi alabilirsiniz. Veri tabaný þemasý veya bir baþka deyiþle kavramsal þema tasarlandýktan sonra. Veri tabaný þemalarýný iki ana grup altýnda ortaya koymak mümkündür. Tablolar ve onlarýn nitelikleri.

htm [24.2006 21:26:34] .2. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03035. Bu iþlemler sonucunda veri tabaný sürekli olarak deðiþime uðrar. Veri tabanýnýn herhangi bir andaki durumuna “Veri Tabaný Örneði” (database instance) adý verilir.htm 3. Ancak veri tabanýnýn herhangi bir andaki durumu önem taþýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03035.3 Veri Tabaný Örneði Veri tabanlarý.11. zaman içinde veri eklemeleri ya da veri silinmesi gibi iþlemlere tabi tutulurlar.

htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03040. kullanýcý tarafýndan yapýlmasý gereken ekleme. Diðerleri reddedilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03040. silme ve güncelleþtirme iþlemlerinden önce bir denetim yapýlmasýna neden olur. Veri tabanýnda veri bütünlüðünü saðlamak için birçok yol bulunmaktadýr.htm 3.11. Bunlardan en önemlisi. veri tabaný yönetim sistemi veya uygulama programlarý tarafýndan tanýmlanýr. yanlýþ. Verinin doðru ve tutarlý olmasýna "veri bütünlüðü" denir.2006 21:26:34] . Bütünlük sýnýrlamalarý. Bu denetim sonucunda.3 Veri Tabaný Bütünlüðü Veri tabanýnýn doðru ve tutarlý biçimde çalýþmasý ve iþlemleri yerine getirmesi gerekir. “bütünlük sýnýrlamalarý” (integrity constraints) adýný almaktadýr. tutarsýz ve çeliþkili olmamasý saðlanýr. sadece sýnýrlamalara uyan iþlemlerin yapýlmasýna izin verilir. Veri bütünlüðünün saðlanmasý sonucunda. Sözü edilen sýnýrlamalar. veri tabanýnýn eksik.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03045.11.3. Anahtar türü belirlenerek. bu sýnýrlamalarýn veri tabaný yönetim sistemi tarafýndan otomatik olarak yapýlmasý saðlanýr.htm [24.htm 3.2006 21:26:35] . Söz konusu anahtarlar: ● ● Birincil anahtar (Primary key) Yabancý anahtar (Foreign key) file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03045.1 Anahtar Sýnýrlamalarý Bütünlük sýnýrlamalarýnýn saðlanmasýnda anahtarlar önemli rol oynar.

” “Boþ” olan deðerlere NULL adýný veriyoruz. birden fazla sütunun birleþiminden de oluþabilir. Birincil anahtar tek bir sütundan oluþabileceði gibi.3.2006 21:26:35] .1 Birincil Anahtar Sýnýrlamalarý Ýliþkisel veri tabanlarýnda bir tablonun benzer deðerler içermeyen (unique) bir sütunu ya da birkaç sütunu birlikte “birincil anahtar” olarak tanýmlanabilir. Birincil anahtar. Ancak bileþik anahtarý oluþturan sütunlarýn her biri çift deðerler içerebilir. þu þekilde bir sýnýrlama konulmuþ olacaktýr. Bileþik birincil anahtarýn içerdiði deðer “tek” olmalýdýr.11. Bu sýnýrlamanýn kontrolünü ise veri tabaný yönetim sistemi yapacaktýr. Bununla birlikte birincil anahtarý oluþturan sütunlarýn hiçbiri NULL deðer içeremez.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03050.htm 3. “Birincil anahtar NULL deðerleri veya birbirinin ayný deðerleri içeremez. Birincil anahtar sýnýrlamalarý ile ilgili örnek için týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03050.1. Bu durumda “bileþik birinci anahtar” dan söz edilir.htm [24. bir aday anahtardýr ve söz konusu varlýðýn kayýtlarýný en iyi biçimde karakterize eder. Birincil anahtar tanýmlandýðýnda.

11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03050_1.htm Örnek PERSONEL tablosunun No isimli sütunu birincil anahtar olarak tanýmlanmýþtýr. bir tabloda birincil anahtara sahip bir sütunda birbirinin ayný olan deðerlere yer verilmez.htm [24. Bu tabloya.2006 21:26:35] . þekil üzerinde görüldüðü biçimde 25 numaraya sahip yeni bir PERSONEL eklemeye çalýþýyoruz. Çünkü.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03050_1. Bu isteðimiz gerçekleþmeyecektir.

Dýþ anahtarýn deðeri bir birincil anahtar deðeriyle eþleþmeli veya NULL olmalýdýr.2 Dýþ Anahtar Sýnýrlamalarý Bir dýþ anahtar. Eðer dýþ anahtar birincil anahtarýn bir kýsmýný oluþturuyorsa.1.htm [24. doðal olarak NULL deðer içeremez.htm 3.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03055. ayný tablo ya da bir baþka tabloda yer alan bir birincil anahtarla eþleþtirilir.3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03055. bir sütun veya çok sayýdaki sütunlarýn birleþiminden oluþur. Dýþ anahtar.2006 21:26:36] .

3 Ýliþkisel Bütünlük Ýki tablo birbirleriyle dýþ anahtar kullanýlarak iliþkilendirildikten sonra.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03060. bu sýnýrlamalara dayanarak.11. PERSONEL ve BÖLÜM isimli iki tabloyu göz önüne alalým. BÖLÜM isimli tablodan bir satýrý. BÖLÜM tablosuna iliþkin bir dýþ anahtar olarak tanýmlanmýþtýr. Örneðin. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03060. PERSONEL tablosunda da ayný satýr ile ilgili tüm kayýtlar otomatik olarak yok olacaktýr.htm 3.3. örneðin “10” numaralý bölümü silmek istiyoruz. iki tablo arasýnda silme ve güncelleþtirme iþlemleri otomatik olarak yerine getirilebilir.2006 21:26:36] . Bu tür bir taným beraberinde iliþkisel bütünlük özelliklerini getirecektir.htm [24.1. Bu satýr silindiðinde. PERSONEL tablosunun “Bölüm no” isimli sütunu.

yani iki haneli olacaktýr. Bir deðerin NULL olamayacaðý belirtilerek bir sýnýrlama yapýlabilir. örneðin bölüm numarasý 400 olan bir kayýt girilmeye çalýþýldýðýnda.htm [24.2006 21:26:37] . Benzer biçimde.2 Veri Deðerleri Sýnýrlamasý Tablonun herhangi bir sütununda yer alacak verilerin hangi deðerlere sahip olabileceði konusunda sýnýrlamalar getirilebilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03065. sýnýrlama nedeniyle kayýt ekleme iþlemi yerine getirilmeyecektir.htm 3. örneðin. ÖRNEK: PERSONEL tablosu için þöyle bir sýnýrlama tanýmlandýðýný varsayalým.11. PERSONELin þehir içi telefon numarasýnýn 7 haneden fazla olmasýný önlemek için böyle bir sýnýrlama konulabilir. bir öðrencinin doðduðu ilin trafik kodunun 3 haneden fazla olamayacaðý ve 1 ile 81 rakamlarý arasýnda olabileceði biçiminde sýnýrlamalar getirilebilir. Bunun yaný sýra.3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03065. “Bölüm numaralarý 1-99 arasýnda.” Bu sýnýrlamaya uymayan bir giriþ yapýlmaya çalýþýldýðýnda.

Bu tür sýnýrlamalar çoðunlukla uygulama programlarý aracýlýðýyla denetlenir.3. iþletme kurallarýna uygun olarak veri bütünlüðü söz konusu olabilir. Bu sayede. Veri tabanýna bilgi giriþleri esnasýnda. muhasebe bölümüne yeni PERSONEL kaydý eklemek gerektiðinde. uygunsuz veri giriþlerini engelleyecektir. Örneðin.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03070.htm [24.htm 3. söz konusu iþletme kuralý.3 Ýþletme Kurallarý Sýnýrlamasý Tablolar üzerinde iþletme kurallarýna dayalý sýnýrlamalar yapýlabilir. Bunu denetlemek gerekecektir. iþletmenin muhasebe bölümünde “programcý” kadrosuna sahip eleman çalýþtýrmak anlamlý deðildir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03070.2006 21:26:37] .11.

3.htm [24. þema üzerinde düzenlemeler yapýlýr.4 Nitelikler Arasý Baðýmlýlýklarýn Kullanýlmasý Veri bütünlüðünün ve tutarlýlýðýnýn saðlanmasýnda.11.2006 21:26:37] . Nitelikler arasýndaki fonsiyonel baðýmlýlýklar belirlenerek. Niteliklerin birbirleriyle olan baðýmlýlýðý göz önüne alýnmadan veri tabaný tasarýmýnýn yapýlmasý sorunlara neden olacaktýr.htm 3. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03075.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03075. nitelikler arasýndaki baðýmlýlýklarýn kullanýlmasý yararlý olabilir.

2006 21:26:38] .Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT03080.11.htm [24.

2006 21:26:38] .htm [24. Dördüncü Normal Form. Ýkinci Normal Form ve Sorunlarý. Beþinci Normal Form. anlatýlmaktadýr. Fonksiyonel Baðýmlýlýk. Birinci Normal Form ve Sorunlarý.htm ÝLÝÞKÝSEL VERÝ TABANI TASARIMI Bu bölümde. Boyce-Codd Normal Formu.11. Üçüncü Normal Form. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04005. ● ● ● ● ● ● ● ● Normalleþtirme.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04005.

2006 21:26:38] . Normal formlarýn hangi sorunlarý çözümlediðini öðreneceksiniz.htm [24.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04010.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04010. Veri tabaný tasarýmýnda karþýlaþýlan sorunlarý. ● ● ● ● ● Baþlangýç seviyesinde iliþkisel veri tabaný tasarýmýný.htm Bölüm Hedefi Bu bölümde. Normal formlarýn neler olduðunu. Bu sorunlarýn çözülmesi için normal formlarýn kullanýlmasý gerektiðini.

2006 21:26:39] . veri kaybýný veya veri yetersizliðini önlemek için normalleþtirme iþlemi uygulanýr.htm 4. Normalleþtirme teorisi normal form kavramýna dayanýr. verinin tekrarlanmasýný.htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04015.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04015.1 Normalleþtirme Ýliþkisel veri tabanýnýn tasarlanmasý aþamasýnda.11.

Fonksiyonel baðýmlýlýðý bir örnek ile ortaya koymak istiyoruz. burada kýsmi baðýmlýlýk söz konusudur. p# ve miktar ise daðýtým iþlemi bilgilerini oluþturmaktadýr. Bu bilgileri saklamak için bir iliþkisel tablo yaratýldýðýný varsayalým.htm 4. R'nin X niteliðine iliþkisel olarak baðýmlýdýr.11. Y. Eðer niteliklerinin R'nin iki alt kümesi olduðunu varsayalým. X nitelikler kümesinin deðerleri Y nitelikler kümesinin deðerlerini belirliyorsa. Söz konusu DAÐITIM þemasý þu þekilde gösterilebilir.htm (1 of 2) [24. Bu tablonun adý DAÐITIM olsun. þehir_kodu. Örnek Bir þirketin müþterilerine partiler biçiminde ürün gönderdiðini varsayalým.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04020. Her bir þehir "þehir kodu" na sahiptir. Y'nin bir deðerine biçiminde ifade edilir. Bir þehir birden fazla müþteri içerebilir. DAÐITIM (m#. R iliþkisinin Y niteliði. O halde. p#. X ve Y .2006 21:26:40] . X 'in her bir deðeri karþýlýk geliyorsa da fonksiyonel baðýmlýlýktan söz edilir. þehir_kodu ve þehir alanlarý müþteri bilgilerini. Bu iþlevsel baðýmlýlýk. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04020.2 Fonksiyonel Baðýmlýlýk R bir iliþki þemasý olsun. X 'e fonksiyonel baðýmlýdýr denir. Eðer bu baðýntý geçerli ise ve X'den bir nitelik çýkarýldýðý halde bu baðýmlýlýk hala geçerli oluyorsa. þehir. Her bir müþteri ayrý bir ilde yer almaktadýr. miktar) Burada m#. Her bir müþteriye birden fazla parti ürün gönderebilir.

anahtara baðýmlý olmayan.þehir þehir®þehir_kodu (m#.2006 21:26:40] .11.htm Bir müþteriye birden fazla parti ürün gönderilebilir. Birinci ve üçüncüsü anahtarlara göre baðýmlýlýklarý ortaya koymaktadýr. Ýkinci baðýmlýlýk ise. Bu verilere dayanarak fonksiyonel baðýmlýlýklarý þu þekilde ifade edebiliriz: m#®þehir_kodu. Verinin tekrarlý olmasýný önlemek için m# ve p# birleþik anahtar olarak tanýmlanmýþtýr.p#)®miktar Burada iki türlü baðýmlýlýk tanýmlanmýþtýr. geçiþli baðýmlýlýklardýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04020. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04020.htm (2 of 2) [24.

Ýliþkisel veri tabaný modelinin temel kuralýdýr. Birinci formdaki bir tablo.htm 4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04025. belirli bazý alanlarda tekrarlý verilere sahiptir. Ayrýca bu formda bilgi giriþi ve silme iþlemlerinde sorunlara neden olacaktýr.htm [24.11. Bütün niteliklerin aldýðý deðerler atomik olmak zorundadýr. Örneðin.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04025. sehir kodu ve þehir verileri her müþteri için tekrarlýdýr. Bu tekrarlar güncelleme sorunlarýna yol açacaktýr.2006 21:26:40] .3 Birinci Normal Form Aþaðýdaki tablo birinci normal form olarak tanýmlanýr.

1 Birinci Normal Formun Sorunlarý Birinci normal formda bazý sorunlarla karþýlaþabiliriz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04030. Bu sorunlar yandaki animasyonda verilmiþtir.2006 21:26:40] .3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04030.11.htm [24.htm 4.

1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04035. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04035. Bu deðerler olmadan kayýt ekleme iþlemi yapýlamaz. ! "Ekle" düðmesine týklayarak yeni satýr eklemeyi deneyiniz. örneðin "ÝZMÝR" deki müþterinin m#. Ekleme iþleminin yapýlabilmesi için. mutlaka bir daðýtým iþleminin gerçekleþtirilmesi gerekir.1 Satýr Ekleme Sorunu Bir baþka þehirdeki.htm 4. bu müþteriye iliþkin bir daðýtým iþleminin yapýlmýþ olmasý ve p# ile miktar deðerlerinin belirlenmiþ olmasý gerekir. þehir_kodu ve þehir bilgilerinin girilebilmesi için.htm [24.11.3.2006 21:26:41] .

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04040.1.2 Satýr Silme Sorunu Bir daðýtým iþleminin iptal edilerek ilgili kaydýn silinmeye çalýþýldýðýný varsayalým. sadece daðýtým ve miktarý deðil.htm 4. müþterinin þehir_kodu ve þehir bilgileri de yok olacaktýr. Bir satýr silindiðinde. Örneðin.htm [24.11. M3 müþterisi ile ilgili satýr silindiðinde.3. ! Satýr silmek için "Satýr Sil" düðmesine týklayýnýz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04040. müþteri hakkýndaki diðer bilgiler de yok olacaktýr.2006 21:26:41] .

1.htm 4.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04045. sadece bir müþteri ile ilgili bu tür küçük bir deðiþiklik belki de binlerce kaydýn güncelleþtirilmesi sorununu yaratacaktýr. Eðer tablo çok büyük ise.3.2006 21:26:41] . bu yeni bilgi nedeniyle tablo içinde M1'e ait beþ satýrýn güncelleþtirilmesi gerekecektir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04045.11.htm [24.3 Güncelleme Sorunu M1 müþterisinin yeri ÝSTANBUL'dan ANKARA'ya taþýnýrsa.

miktar) Bu tablolarýn görünümü aþaðýdaki animasyonda canlandýrýlmýþtýr. Ýkinci normal formda iliþkisel tablonun her bir anahtar olmayan sütunu. þehir_kodu ve þehir sütunlarý (m#. þehir) MÝKTARLAR(m#. anahtar olmayan her kolon. bu tablo iki ayrý tabloya dönüþtürülebilir. anahtarlara fonksiyonel baðlý olarak tanýmlanmýþtýr. p#. þehir. Bu tanýmlar 2NF formunun yapýsýný belirler. Bu. 1NF (birinci normal form) tablolarýnýn birden fazla tabloya dönüþtürülmesi sonucunda. ikinci normal forma (2NF) ulaþýlýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04050. p#) birleþik anahtarýnýn sadece m# sütunu üzerinde fonksiyonel baðýmlýdýr. kendisi anahtar olmayan tüm sütunlarýn anahtara baðlanarak yeni tablolara ayrýþtýrýlmasý ile oluþturulur. p#. DAÐITIM(m#. Çünkü. veri tabaný tasarýmý esnasýnda bazý sorunlara neden olduðunu öðrendik. þehir_kodu. bu iliþki ikinci normal formdadýr. Tablolarýn sütunlarý arasýndaki fonksiyonel baðýmlýlýktan yararlanarak. DAÐITIM isimli tabloda m# ve p# anahtarlarý göz önüne alýnarak.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04050. 2NF durumunda DAÐITIM tablosu ÞEHÝRLER ve MÝKTARLAR isimli iki tabloya dönüþür. Ýkinci normal form. þehir þehir -> þehir_kodu (m#. birincil anahtara tam fonksiyonel baðýmlýdýr. birincil anahtara baðýmlý olmalýdýr demektir. Eðer bir iliþki þemasýndaki birincil anahtar olmayan bir nitelik. Bu tablodaki fonksiyonel baðýmlýlýklar þu þekilde ifade edilebilir: m# -> þehir_kodu.p#) -> miktar Bu fonksiyonel iliþkilerden birincisi ve üçüncüsü. R'nin herhangi bir anahtar niteliðine kýsmi fonksiyonel olarak baðýmlý deðilse (yani tam fonksiyonel baðýmlý ise). Örnek. Bu sorunlardan bir kýsmýný çözmek için birinci normal formdaki tablolar. þehir_kodu.htm (1 of 2) [24. miktar) ÞEHÝRLER(m#. baþka normal formlara dönüþtürülür.2006 21:26:42] .htm 4. DAÐITIM tablosu birinci normal formdadýr.4 Ýkinci Normal Form Birinci normal formun.11.

htm (2 of 2) [24.2006 21:26:42] .11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04050. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04050.htm ! Ýkinci normal form tablolarýný oluþturmak için aþaðý yöndeki oka týklayýnýz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04055. Bu sorunlar yandaki animasyonda verilmiþtir.htm 4.1 Ýkinci Normal Formun Sorunlarý Ýkinci normal formda bazý sorunlarla karþýlaþabiliriz.2006 21:26:42] .11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04055.4.htm [24.

11. ! Yeni satýr eklemek için "Ekle" düðmesine týklayýnýz.2006 21:26:42] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04060. Böyle bir müþteri olmadýðý sürece þehir ile ilgili bu tür bilgiler tabloya eklenemez. 61 þehir koduna sahip TRABZON ilini eklemek gerektiðinde bir sorunla karþýlaþýlacaktýr. yeni bir þehir kodu ve þehir adý girilmesine olanak yoktur. Bu ili tabloya dahi etmek için.1 Satýr Ekleme Sorunu ÞEHIRLER isimli tabloya yeni bir müþteri kayýtý girilmediði sürece. Örneðin bu tabloya.4.htm 4.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04060.htm [24.1. bu ilde yerleþmiþ bir müþteriye ihtiyaç vardýr.

1. þehir kodu ve þehir adý bilgileri de yok olacaktýr. ÞEHÝRLER tablosundan M5 müþterisi silindiðinde. o müþterinin yerleþtiði ÝZMÝR iline iliþkin veriler de tablodan yok olur.htm [24.2006 21:26:43] .2 Satýr Silme Sorunu Tablodan bir müþteri silindiðinde. Örneðin.4.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04065.htm 4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04065.11.

MÜÞTERÝ_ÞEHÝR(m#. Ýkinci normal formda sadece anahtarlara iliþkin fonksiyonel baðýmlýlýklar kullanýlmýþtý. 3NF'deki aþaðýdaki tablo tanýmlarýna ulaþýlýr.htm [24. m# -> þehir_kodu. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04070. Bunun dýþýndaki geçiþli baðýmlýlýklar da tablolara dönüþtürülerek. þehir -> þehir_kodu geçiþli baðýntýsý da ayrý bir tabloya dönüþtürülerek. þehir) MÝKTARLAR(m#.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04070.11. þehir) ÞEHÝR_KOD(þehir_kodu. bir anahtara baðlý olmayan. ! Üçüncü normal form tablolarýný oluþturmak için aþaðý yöndeki oka týklayýnýz. üçüncü normal form elde edilir.2006 21:26:43] .p#) ->miktar Bu durumda. R'nin herhangi bir niteliðine geçiþli fonksiyonel baðýmlý deðil ve ayrýca 2NF özelliklerine sahip ise. bu iliþkinin üçüncü normal formda (3NF) olduðu söylenir. þehir þehir -> þehir_kodu (m#. miktar) Tablolar bu tanýmlara göre yeniden düzenlenir. Örneðimizdeki fonksiyonel baðýmlýlýklarý þu þekilde tanýmlamýþtýk. p#.5 Üçüncü Normal Form R'deki herhangi bir anahtar içinde yer almayan nitelik.htm 4.

htm 4. bölüm. her belirleyicinin bir anahtar oluþu halidir. BCNF oluþturulur ve yukarýda sayýlan sorunlara son verilmiþ olur. B. bir bölümde birden fazla öðretim üyesi de yer alabilmektedir. Bu durumda. bir anahtara baðlý olduðu için de ikinci normal formdadýr. öðretim üyesi) biçimindedir. BCNF.2006 21:26:44] . Örnek olarak aþaðýdaki iliþkiyi göz önüne alalým. 3NF'da da bazý sorunlarla karþýlaþýlabilir. öðrenci_no ile öðretim_üyesi anahtarlarý da bölüm niteliðini belirlemektedir. ÖÐRENCÝ(öðrenci_no. birinci normal formdadýr. Burada öðrenci_no ile bölüm anahtarlarý birlikte. bölüm) olarak belirlenmiþtir. bu iliþki BCNF'da bulunmamaktadýr. Örneðin. Boyce-Codd normal formu elde edilmeye çalýþýlýr. bir belirleyici olduðu için. Anahtarsýz nitelikler. öðrenci birden çok bölüme yazýlabildiði için. Ayný þekilde. (öðrenci_no. Öðretim_üyesi -> bölüm Þekil üzerindeki iliþki 3NF durumuda olup bazý sorunlara sahiptir. Bu sorunlarý önlemek için Boyce-Codd normal formu (BCNF) kullanýlýr. ÖÐRENCÝ þemasýnda öðretim_üyesi bir aday anahtar deðil. yeni bir öðrenci EKONOMÝ bölümüne yazýlýncaya kadar bu bölüm tablo üzerinde görülmeyecektir. Kendisi anahtar olmayan özellikler. (öðrenci_no. Buna raðmen yukarýdaki þema yine bazý sorunlara sahiptir. üçüncü normal formdadýr. Aday anahtar ise. Bu kombinasyonlarýn her ikisi de anahtar olabilir. öðretim üyesi niteliðini. 98 numaralý öðrencinin kaydýnýn silinmesi durumunda. 3F durumunda olup geçiþli baðýmlýlýk içermeyen bir iliþkidir. Örneðin. öðretim_üyesi) Burada birincil anahtar. Fonksiyonel baðýntý ise þu þekilde ifade edilebilir. öðrenci_no anahtarý bölümü ve öðretim üyesini belirleyememektedir. ÖZKAN 'a ait olan bilgi de yok olacaktýr.htm (1 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04075. bir öðrenci birden çok bölüme yazýlabildiði gibi. Bu sorunlarý önlemek için. ÖÐRENCÝ þemasý taným olarak. ÖÐRENCÝ þemasý aþaðýda görüldüðü biçimde iki iliþkiye ayrýlmasý halinde.6 Boyce-Codd Normal Formu 2NF. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04075. anahtara fonksiyonel olarak baðlý bulunmamaktadýr. Ayrýca geçiþli baðýmlýlýk bulunmadýðý için.11.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04075.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04075.htm ! Boyce-Codd normal formu tablosunu oluþturmak için aþaðý yöndeki oka týklayýnýz.2006 21:26:44] .htm (2 of 2) [24.

Bu nedenle.2006 21:26:44] . Böylece çok sayýda yineleme sorunu ortaya çýkmaktadýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04080.htm (1 of 2) [24.11. birden çok sayýda bölüme ve spor etkinliðine sahip olabilmektedir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04080.htm 4. Örnek olarak aþaðýdaki tabloyu göz önüne alalým: ÖÐRENCÝ(öðrenci_no. yine de bazý sorunlarý bulunmaktadýr. çoklu baðýmlýlýk durumu eklenmekte ve dördüncü normal form (4NF) oluþturulmaktadýr. Bu öðrencinin FUTBOL etkinliðine katýlabilmesi için ayrýca 2 kayýt daha eklenmesi söz konusudur. bölüm. Örneðin. çok deðerli baðýmlýlýk halindedir. Çok deðerli baðýmlýlýklar -> -> simgesi ile ifade edilir .7 Dördüncü Normal Form Bazý durumlarda BCNF'daki bir iliþkide de sorunlar görülebilmektedir. MATEMATÝK ve MUHASEBE bölümleri ile KAYAK ve TENÝS spor etkinliklerine katýlan 65 numaralý öðrenci için 4 ayrý kayýt yapýlmaktadýr. Çoklu baðýntýlarda ekleme ve silme esnasýnda sorunlarla karþýlaþýlabilir. Buna karþýlýk. 2NF. öðrenci_no ile bölüm ve öðrenci_no ile spor arasýndaki iliþkiler birer fonksiyonel baðýntý deðil. geçiþli belirleyicilerinin olmamasý ve belirleyicilerinin anahtar oluþu özellikleri nedeniyle 1NF. deðerlerin atomik oluþu. Burada bir öðrenci. A -> X ve bütün çok deðerli baðýmlýlýklar için. Bir iliþki þemasýnda bir A anahtar olmak üzere. bütün fonksiyonel baðýmlýlýklar için. spor) Bu iliþki. 3NF ve BCNF koþullarýna uymaktadýr. A -> -> Y biçiminde ise. yukarýda verilen iliþki iki ayrý iliþkiye ayrýlarak. anahtarlarýnýn bulunuþu. dördüncü normal form söz konusudur. Bu sorunu önlemek için.

htm (2 of 2) [24.htm ! Dördüncü normal form tablolarýný oluþturmak için aþaðý yöndeki oka týklayýnýz.2006 21:26:44] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04080.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04080.

Bu þema.2006 21:26:45] . aþaðýdaki þemayý göz önüne alalým: ÖDÜNÇ (þube_adý. KREDÝ1 (kredi_no. bilgi kaybýna düþülmemesi önem taþýmaktadýr. veri kaybý söz konusu olabilmektedir.müþteri_adý) Böylece kayýpsýz ayrýþtýrma iþlemi gerçekleþtirilmiþ olur. ikiden çok sayýda iliþkiye ayrýlmasý halinde. miktar) Bu þema. müþteri_adý. þube_adý) KREDÝ2 (kredi_no. ÞUBE (þube_adý. müþteri_adý) KREDÝ3 (kredi_no. Beþinci normal form. kredi_no. müþteri_adý. þube_þehri) KREDÝ (þube_adý. Bu sakýnca 5NF kurularak giderilebilir. toplam_mevduat. iyi bir veri tabaný þemasý olarak deðerlendirilmez. miktar) biçiminde üç ayrý þemaya ayrýlarak 5NF oluþmaktadýr. kredi_no olup.8 Beþinci Normal Form Bir iliþkinin iki veya daha çok sayýda iliþkiye ayrýlmasý halinde.htm (1 of 2) [24. Örnek olarak. ekleme ve deðiþtirme iþlemlerinde kaydýn tamamýnýn yazýlmasýný gerektirdiði için. miktar) KREDÝ þemasý da aþaðýda belirtildiði biçimde ikiye ayrýlýr: KREDI_MÝKTAR (þube_adý. Böylece KREDÝ þemasý. bu iliþkideki aday anahtarlardan oluþturulmasý ile saðlanmaktadýr. þube_þehri. Ancak yine de iliþkinin. toplam_mevduat.11. kredi_no. önce iki ayrý þemaya bölünür. Kredi_no -> miktar. Burada ortak özellik. Genellikle 4NF durumunda bu koþul saðlanmaktadýr.htm 4.kredi_no. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04085.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04085. miktar) MÜÞTERÝ_KREDÝ (kredi_no. silme. iliþki içerisindeki her birleþik baðýntýnýn. þube_adý baðýntýsý kurulmaktadýr.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04085.11.2006 21:26:45] .htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04085.htm (2 of 2) [24.

htm [24.2006 21:26:45] .11.Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT04090.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05005.htm

ÝLÝÞKÝSEL CEBÝR
Bu bölümde,
● ● ● ● ● ● ● ● ●

Ýliþkisel cebrin temel iþlemleri, Kayýtlar arasýnda seçim, Sütunlarýn seçimi, Kartezyen çarpým, Birleþtirme iþlemi, Kesiþme iþlemi, Fark, Doðal birleþtirme, Bölme iþlemi,

anlatýlmaktadýr.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05005.htm [24.11.2006 21:26:45]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05010.htm

Bölüm Hedefi
Bu bölümde,

Ýliþkisel cebir kavramýný, Ýliþkisel cebrin temel iþlemlerinden 1. 2. 3. 4. 5. 6. 7. 8. Seçimi, Atma Ýþlemini, Çarpmayý, Birleþtirmeyi, Kesiþmeyi, Farký, Doðal birleþtirmeyi, Bölmeyi,

öðreneceksiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05010.htm [24.11.2006 21:26:46]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05015.htm

5.1 Ýliþkisel Cebir Kavramý
Ýliþkisel cebir (relational algebra), bir iliþkisel sorgulama dilidir. Bir veya iki iliþkiyi girdi olarak alýp sonuç olarak yeni bir iliþki üreten bir dizi iþlemden oluþur. Ýliþkisel cebir, bir veri tabaný sorgulama dilidir. Ancak bu sorgulamalar sadece biçimsel olarak yapýlýr. Ýliþkisel Cebrin sorgulama dili için bir yorumlayýcý ya da bir derleyici yoktur. Bu açýdan, sonraki bölümlerde inceleyeceðimiz SQL (Standart Sorgulama Dili)'den farklýdýr. Ýliþkisel cebrin temel iþlemlerini yanda görebilirsiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05015.htm [24.11.2006 21:26:46]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05020.htm

5.1.1 Seçim
Belirli bir iliþkiden, bazý sýralarý (kayýtlarý) seçerek ortaya koymaya seçme iþlemi denir. Bu iþlem þu þekilde tanýmlanýr: iþareti ile gösterilir ve

Seçim iþleminde, bir seçim kriteri kullanýlýr. Seçim kriteri bir eþitlik biçiminde ortaya konabilir. Bu tür bir iþlemde "=" karþýlaþtýrma iþleci yerine " " iþleçlerinden biri de kullanýlabilir.

Ayrýca mantýksal iþleçlere de yer vermek mümkündür. "Ve" için "

"; "veya" için "

" iþleçleri kullanýlabilir.

! Seçim iþleminin nasýl yapýldýðýný görmek için "Seç" düðmesine týklayýnýz. Örnek MÜÞTERÝ iliþkisini (tablosunu) göz önüne alalým. "Beþiktaþ" ilçesindeki müþterileri seçmek için aþaðýda belirtildiði biçimde bir sorgu düzenlenebilir;

Bu sorgu tablodan iki kayýdýn seçilmesine neden olur. Sorgulamayý þu þekilde anime edebiliriz :
file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05020.htm (1 of 3) [24.11.2006 21:26:47]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05020.htm

Örnek
MÜÞTERÝ tablosunu yeniden göz önüne alalým. Ýlçesi "Beþiktaþ" ve bakiye miktarý 100'den büyük olan müþterileri seçmek istiyoruz. Amacýmýza uygun sorgu þu þekilde tanýmlanabilir;

Bu sorgu, tablodan bir kayýdýn seçilmesine neden olur. Sorgulamayý þu þekilde göstebiliriz;

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05020.htm (2 of 3) [24.11.2006 21:26:47]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05020.htm

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05020.htm (3 of 3) [24.11.2006 21:26:47]

Örnek MÜÞTERÝ tablosunda yer alan kayýtlara bir sorgu uygulayarak.1. Bu iþlem (projection) adý verilen bu iþlem þu þekilde tanýmlanýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05025. Söz konusu sorgu iliþkisel cebir ifadeleriyle þu þekilde ortaya konulabilir. Sorgulamayý þu þekilde gösterebiliriz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05025.2006 21:26:47] .htm 5.11. Atma ! Seçim iþleminin nasýl yapýldýðýný görmek için "Seç" düðmesine týklayýnýz.htm (1 of 2) [24. iþareti ile gösterilir.2 Atma Ýþlemi Belirli bir iliþkiden bazý sütunlarý atmak suretiyle yapýlan seçim iþlemidir. sadece müþteri adý ve þehir bilgisi elde edilmek istenmektedir.

11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05025.2006 21:26:47] .htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05025.htm (2 of 2) [24.

her iki tablonun tüm satýrlarýnýn birbirleriyle eþlenmesi sonucunda elde edilir. Sorgulamayý þu þekilde gösterebiliriz. mümkün olabilecek tüm eþleþmeleri kapsayacaktýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030. Kartezyen çarpým ifade edilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030. Sonuç. Ýki tablonun kartezyen çarpýmý.htm 5. iþareti ile gösterilir.11.htm (1 of 4) [24.3 Çarpma Belirli bir iliþkiden mümkün olabilecek tüm çiftleri elde ederek tek bir iliþki biçiminde göstermek için kartezyen çarpým oluþturulur. Örnek Aþaðýdaki ÖÐRENCÝ ve DERSLER iliþkilerini göz önüne alalým. Söz konusu çarpým þu þekilde ifade edilir.2006 21:26:48] .1. Kartezyen çarpým þu þekilde ! Kartezyen çarpým iþleminin nasýl yapýldýðýný görmek için "Çarp" düðmesine týklayýnýz.

"Ýktisat" bölümünde okuyan ve tüm dersleri alan öðrencileri bulmak için. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030.htm (2 of 4) [24. Bu sorgu iþleminde yer alan ifadesi. sorgusu tanýmlanabilir. biçimindeki bir taným ise.11. ÖÐRENCÝ ve DERSLER tablolarýndan elde edilebilecek tüm ikilileri ifade etmektedir. bu sonuç üzerinden bölümü "Ýktisat" olan satýrlarý seçmektedir.htm Örnek ÖÐRENCÝ ve DERSLER iliþkilerini göz önüne alalým. Sorgulamayý þu þekilde gösterebiliriz.2006 21:26:48] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030.

htm (3 of 4) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030.htm Örnek "Ýktisat" bölümünde okuyan ve hem "Matematik" hem de "Ýstatistik" dersi alan öðrenciler listelenecektir. Amacýmýza uygun sorgu þu þekilde olabilir. Sorgulamayý þu þekilde gösterebiliriz. Ancak bunlara iliþkin olarak sadece ders ve öðrenci adý elde edilecektir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030.11.2006 21:26:48] .

htm (4 of 4) [24.2006 21:26:48] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05030.11.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05035.4 Birleþtirme Ýki iliþkiden birinde veya her ikisinde birden bulunan kayýtlarýn seçilmesi için yapýlan bir iþlemdir. simgesi ile Örnek Aþaðýdaki iliþkileri göz önüne alalým.11.2006 21:26:48] .htm (1 of 2) [24. Bankanýn "Beþiktaþ" þubesinde mevduat ve/veya kredi hesabý bulunan kiþileri seçmek ve sadece isimlerini sunmak için þöyle bir ifade tanýmlanabilir. Sorgulamayý þu þekilde gösterebiliriz.htm 5.1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05035. Bu iþlem gösterilmektedir.

2006 21:26:48] .htm (2 of 2) [24.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05035.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05035.

11. Sorgulamayý þu þekilde gösterebiliriz.htm 5. Örnek Aþaðýdaki iliþkileri göz önüne alarak.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05040. bankanýn "Beþiktaþ" þubesinde hem mevduat hem de kredi hesabý olan müþterileri bulmak için aþaðýdaki sorgu düzenlenebilir.htm (1 of 2) [24.1.5 Kesiþme Ýki iliþkide de bulunan kayýtlarýn belirlenmesi için kesiþme iþlemi uygulanýr.2006 21:26:49] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05040. Bu iþlem iþareti ile gösterilir.

htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05040.htm (2 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05040.2006 21:26:49] .11.

bankanýn "Ulus" þubesinde mevduatý olup kredisi olmayan müþterilerin isimlerini bulmak için þu þekilde bir iþlem tanýmlanýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05045.1.htm 5.2006 21:26:49] . Sorgulamayý þu þekilde gösterebiliriz.11. Fark iþlemi (-) iþareti ile gösterilir.6 Fark Ýki iliþkiden birinde bulunup diðerinde bulunmayan kayýtlarýn bulunmasý iþlemidir. Örnek Aþaðýdaki iliþkileri göz önüne alarak.htm (1 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05045.

htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05045.2006 21:26:49] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05045.htm (2 of 2) [24.11.

C) niteliklerine sahip tek bir iliþki haline dönüþtürülmesine Doðal Birleþtirme denir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05050.7.htm (1 of 2) [24.C) niteliklerine sahip iki ayrý iliþkinin.B) ve (B. Örnek Aþaðýdaki iliþkileri göz önüne alarak.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05050.2006 21:26:50] .11. Sorgulamayý þu þekilde gösterebiliriz.htm 5. ! Doðal Birleþtirme iþleminin nasýl yapýldýðýný görmek için "Doðal Birleþtirme" düðmesine týklayýnýz. (A. Bu iþlem iþareti ile gösterilir.B.1. kredi hesabý olan ve ayný ilçede oturan tüm müþterilerin isimlerini bulmak için þu þekilde bir ifade tanýmlanýr. Bu taným sonucunda KREDÝ ve MÜÞTERÝ tablolarýnda yer alan adý ve ilçe nitelikleri karþýlaþtýrýlýr ve birbirleriyle eþleþen kayýtlar birleþtirilir. Doðal Birleþtirme (A.

11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05050.htm (2 of 2) [24.2006 21:26:50] .htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05050.

Önce ÝSTANBUL 'da yer alan tüm þubeleri elde edelim. birli olan iliþkiye eþ olan ikinci iliþkinin deðerlerinden oluþan. Örnek Bir bankanýn ÝSTANBUL ilindeki bütün þubelerinde mevduat hesabý olan müþterilerini öðrenmek istiyoruz. yeni bir iliþki oluþturulabilir.htm (1 of 3) [24.htm 5.11. ! Bölme iþleminin nasýl yapýldýðýný görmek için "Bölme" düðmesine týklayýnýz. Adým 1: Þube isimleri ÞUBE iliþkisi ile tanýmlýdýr.1. iki ayrý iliþkiyi karþýlaþtýrarak.8 Bölme Ýkili ve birli. Bu tür bir iþlem bölme iþlemidir ve (:) iþareti ile gösterilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05055.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05055.2006 21:26:50] .

htm (2 of 3) [24.11.2006 21:26:50] .htm Adým 2: Bu kez aþaðýdaki MEVDUAT tablosunu göz önüne alalým. MEVDUAT tablosundan tüm müþterilerin adýný ve þubesini elde etmek için aþaðýda belirtilen iþlem uygulanýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05055. Adým 3: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05055.

Burada Adým 1'deki þube isimlerinin Adým 2'dekilerle karþýlaþtýrýldýðý ve eþleþen kayýtlarýn elde edildiði anlaþýlmaktadýr.2006 21:26:50] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05055.htm (3 of 3) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05055. Bu iþlem sonucunda aþaðýda belirtilen sonuç elde edilir.htm Bölme iþlemi biçiminde tanýmlanýr.11.

htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT05060.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz.11.2006 21:26:50] .

11. SQL'in kendine özgü deyimleri ve kurallarý vardýr. SQL yapýsal programlama dilini öðrenmeye baþlayacaðýz.2006 21:26:51] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06005.htm SQL YAPISAL SORGULAMA DÝLÝ Bu bölümde. Hemen hemen tüm iliþkisel veri tabaný yönetim sistemlerinin ortak dili olarak kabul edilmiþtir. SQL bir sorgulama dilidir.htm [24. Verileri sorgulamak için SQL kullanan baþlýca veri tabaný yönetim sistemleri þunlardýr: ● ● ● ● ● ● ● Oracle Sysbase Microsoft SQL Server DB2 Informix MySQL Microsoft Acces file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06005.

11.htm Bölüm Hedefi Bu bölümde SQL'de. ● ● ● ● ● ● ● SELECT deyiminin temel yapýsýný. Ýþleçlerin iþlem sýrasýný.htm [24.2006 21:26:51] . Karþýlaþtýrma iþleçlerini. Aritmetik ifadelerin sorgularda kullanýmýný. öðreneceksiniz. Verinin sýralanmasýný. Mantýksal iþleçlerin kullanýmýný. Ayný deðere sahip satýrlarýn denetlenmesini. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06010.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06010.

htm 6.11.htm [24. SELECT deyimi temel olarak üç farklý iþlemi yerine getirmek için kullanýlýr: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06015. Sorgulama Ýþlemleri SQL'de sorgulama iþlemleri.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06015.2006 21:26:52] . SELECT deyimi yardýmýyla yerine getirilir.1.

1. Seçenekler birbirlerinden | iþareti ile ayrýlmaktadýr. tüm sütunlarý ifade eder. Bu anahtar kelimeler..} FROM tablo. Bunlar SQL sözcüðü deðildir. birden fazla seçeneðin varlýðýný ve bu seçeneklerden birinin mutlaka seçilmesi gerektiðini ifade eder. SELECT Deyiminin Yapýsý SELECT deyimi en basit biçimde þu þekilde ifade edilmektedir. bu iþaretler arasýnda tanýmlanýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06020. Çift kayýtlarý önleyen anahtar kelimedir. Tek bir sütunu deðil. Taným içinde bazý SQL anahtar kelimelerine yer verilmektedir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06020.2006 21:26:52] . Altý çizili ve italik olan bu ifadeler.1. SELECT [DISTINCT] { * | sütun. SQL 'in kendi özel kelimeleridir ve aynen bu þekilde ifade edilmelidir. .. {. SELECT FROM DISTINCT SQL'in sorgulama deyimidir. kullanýcý tarafýndan verilen isimleri ifade etmektedir. Hangi tablonun sorgulanacaðýný ifade eder..htm [24. [] Kullanýlmasý zorunlu olmayan SQL sözcükleri.11.htm 6. Tanýmdaki her bir iþaretin veya farklý gösterimin hangi anlama geldiðini aþaðýdaki tablodan görebilirsiniz... } * Bu biçimde gösterilen ifadeler.|.

SQL sorgu yazým kurallarýný aþaðýdaki animasyonu inceleyerek görebilirsiniz.htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06025.1. SELECT Yazým Kurallarý SQL deyimleri düzenlenirken bazý kurallarý ve önerileri göz önünde tutmak gerekmektedir. Aksi takdirde sorgu hata verir ve çalýþmaz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06025.htm 6.2.2006 21:26:52] .11.

Bölümün bulunduðu yerin adýdýr. * iþareti kullanýlýr.htm (1 of 2) [24.1. Bu tablonun içerdiði tüm verileri görüntülemek istiyoruz. Bu deyimi. Sorgunun nasýl çalýþtýðýný aþaðýda görebilirsiniz.11. Örnek: BÖLÜM isimli tablonun sütunlarý þunlardýr.3 Bir Tablonun Tüm Satýrlarýný Seçmek Bir tablonun tüm sütunlarýný seçmek söz konusu ise.2006 21:26:53] . daha izlenebilir olmasýný saðlamak için þu þekilde de yazabiliriz. Bölümün adýdýr. Bunun için aþaðýda belirtilen SELECT deyimi düzenlenir: SELECT * FROM BÖLÜM. ! Sorguyu çalýþtýrmak için "Çalýþtýr" düðmesine týklayýnýz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06030. Sütun adý Bölüm_no Bölüm_adý Konumu Açýklama Bölüm numarasýdýr. SELECT * FROM BÖLÜM.htm 6. SELECT deyimi içinde sütun isimleri yerine. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06030.

2006 21:26:53] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06030.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06030.11.htm (2 of 2) [24.

BÖLÜM_NO. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06035.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06035.2006 21:26:53] . Bunun için.11.htm 6.1. Sütun isimleri virgüllerle birbirlerinden ayrýlýr. Belirli Sütunlarýn Seçilmesi Tablo içinde belirlenen sütunlarýn elde edilmesi söz konusu ise. yani BÖLÜM_NO ve BÖLÜM_ADI sütunlarýný seçerek görüntülemek istiyoruz. SELECT BÖLÜM_NO. BÖLÜM_ADI FROM BÖLÜM.BÖLÜM_ADI FROM BÖLÜM. Amacýmýza uygun SELECT deyimi þu þekilde düzenlenebilir. BÖLÜM. tablo isimleriyle birlikte ifade edilebilir. Sorgunun nasýl çalýþtýðýný aþaðýda görebilirsiniz. SELECT BÖLÜM. Sütun isimleri.htm (1 of 2) [24. Özellikle birden fazla tablo varsa bu yola baþvurulur. Örnek: BÖLÜM tablosunun sadece bölüm numaralarýný ve bölüm isimlerini içeren sütunlarýný. ! Sorguyu çalýþtýrmak için "Çalýþtýr" düðmesine týklayýnýz. SELECT deyimi içinde bu sütun isimlerine yer verilir. tablo ismi her bir alanýn baþýna eklenir ve araya bir nokta iþareti konur.4.

11.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06035.htm (2 of 2) [24.2006 21:26:53] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06035.

htm [24. Amacýmýza uygun SELECT deyimi aþaðýda görüldüðü biçimde düzenlenebilir. bir tablonun ÜCRET isimli sütunundaki sayýsal deðeri 12 ile çarpmak için. ADI.htm 6. SELECT PERSONEL_NO. ÜCRET*12 biçiminde bir ifade tanýmlanabilir.2. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06040.2006 21:26:54] . SELECT deyimi içinde bir ifade tanýmlandýðýnda. ! Aritmetik Ýþleçleri ve anlamlarýný görmek için 'DEVAM' düðmesine týklayýnýz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06040.11. Örnek PERSONEL tablosunun PERSONEL ve ÜCRET isimli iki sütunu listelenecektir. bu ifade ayrý bir sütun biçiminde yaratýlmýþ olacaktýr. ÜCRET+1500 FROM PERSONEL. 1500 deðeri eklenerek (yani ücretlere zam yapýlýyor) ayrý bir sütun elde etmek istiyoruz. sabit sayýsal deðerler ve aritmetik iþleçlerden oluþur. Örneðin. Ayrýca ÜCRET sütununun içerdiði deðere. Aritmetik ifadeler Aritmetik ifadeler. sütun isimleri.

11. Aritmetik ifadeler file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06040_1.2.6.htm [24.2006 21:26:54] .

2006 21:26:54] .11. aylýk ücret rakamýný içermektedir. Yýllýk ücrete 500 deðerini eklemek istiyoruz. Amacýmýza uygun SELECT deyimi þu þekilde olabilir.2. PERSONEL ve ÜCRET isimli iki sütunu listelenecektir. SELECT PERSONEL_NO.1. Burada ÜCRET. SELECT deyiminin FROM sözcüðü dýþýnda herhangi bir yerinde kullanýlabilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06045. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz Aritmetik Ýfadelerde Ýþlem Sýrasý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06045. 12*ÜCRET+500 Buna göre * iþlecinin önceliðinden dolayý önce 12 ile ÜCRET çarpýlacak ve bulunan deðere 500 eklenecektir. Aritmetik Ýfadelerde Ýþlem Sýrasý Aritmetik iþleçler. 12*ÜCRET+500 FROM PERSONEL. Örnek PERSONEL tablosunun. Söz konusu hesaplamayý saðlayan ifade þu þekilde olacaktýr.htm [24.htm 6. ADI.

2.1.2006 21:26:55] . Aritmetik Ýfadelerde Ýþlem Sýrasý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06045_1.htm [24.6.11.

SELECT PERSONEL_NO. Örnek Önceki kýsýmdaki örnekte 12*ÜCRET+500 biçiminde bir taným yaparak.htm [24. ücret sütununun içerdiði deðere 500 eklenir ve bulunan deðer 12 ile çarpýlýr. aritmetik ifadeler içinde diðer tüm iþleçlere göre bir önceliðe sahiptir.2.htm 6.11. Önce parantez içindeki iþlemler gerçekleþtirilir. Bu kez aylýk ücrete 500 zam yapmak istiyoruz.2006 21:26:55] . Amacýmýza uygun ifade þu þekilde olabilir: 12*(ÜCRET+500) Bu durumda.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06050. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06050.2 Aritmetik Ýfadelerde Parantezlerin Kullanýmý Parantezler. 12*(ÜCRET+500) FROM PERSONEL. ADI. Amacýmýza uygun SELECT deyimi þu þekilde olabilir. yýllýk ücrete zam yapmýþtýk.

6.htm [24.2.2006 21:26:55] .2 Aritmetik Ýfadelerde Parantezlerin Kullanýmý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06050_1.11.

htm 6.3 Aritmetik Ýfadelerde NULL Deðerlerin Kullanýmý NULL Deðer. deyimi çalýþtýrýldýðýnda.2. Eðer bir sütun NULL deðerler içeriyorsa. NULL ile yapýlan hesaplamalara dikkat ediniz. O halde. SELECT ADI.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06055. bir sýfýr ya da boþluk olarak da deðerlendirilmez.htm [24. tanýmlanan aritmetik ifade her satýr için NULL deðerler üretecektir. atanamayan. KOMÝSYON isimli sütunun NULL deðerler içerdiði bilinmektedir. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06055. Örnek Eðer bir aritmetik ifade içinde NULL deðer içeren bir sütun varsa. 12*ÜCRET+KOMÝSYON FROM PERSONEL.11.2006 21:26:56] .KOMÝSYON. ÜCRET. SELECT deyimi çalýþtýrýldýðýnda bu deðerler boþ olarak görüntülenir. bilinmeyen bir deðer olarak kabul edilir. NULL Deðer. 12*7000+NULL ® NULL olduðu unutulmamalýdýr. var olmayan. ifade ne olursa olsun o satýrlarla ilgili sonuç da NULL olarak elde edilir. Örneðin.

2.6.2 Aritmetik Ýfadelerde NULL Deðerlerin Kullanýmý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06055_1.11.htm [24.2006 21:26:56] .

Örnek PERSONEL tablosunun PERSONEL sütunu için ÝSÝM. SELECT ADI AS ÝSÝM.htm [24.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06060.3. Amacýmýza uygun SELECT deyimi þu þekilde olabilir. Tablonun sütun isimleri. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06060. 12*ÜCRET+KOMÝSYON AS YILLIK_ÜCRET FROM PERSONEL. SELECT deyiminin çalýþmasý sonucu elde edilen listenin sütun baþlýklarý olacaktýr. ücret sütunu için AYLIK_ÜCRET takma isimlerini atayacaðýz. Ayrýca yýllýk ücreti hesaplayarak bu sütuna da YILLIK_ÜCRET takma ismini vermek istiyoruz. elde edilen sonuçlar yine sütunlar biçiminde olacaktýr. Sütunlar Ýçin Takma Ýsimler Kullanýmý SELECT deyimi çalýþtýrýldýðýnda. ÜCRET AS AYLIK_ÜCRET. çýktý sütunlarýna istenilen baþlýklar atanabilir. Bunun yerine.htm 6.2006 21:26:57] . AS anahtar kelimesi bu amaçla kullanýlýr. Eðer takma isim birden fazla kelimeden oluþuyorsa týrnak iþaretleri arasýnda belirtilebilir.

11.htm [24.6.3.2006 21:26:57] . Sütunlar Ýçin Takma Ýsimler Kullanýmý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06060_1.

4. Örnek PERSONEL adý ve görev bilgisini birleþtirerek. ORACLE veri tabanýnda (||).htm 6. birbiriyle ya da bir baþka karakter dizisi ile birleþtirerek yeni deðerler elde edilebilir. Sütun Ýçeriklerini Birleþtirme Sütunlarýn içerdikleri deðerleri.2006 21:26:57] . SELECT ADI & "-" & GÖREVÝ AS ADI_GÖREVÝ FROM PERSONEL. Bu iþlecin kulllanýmý veri tabanlarýnda farklýlýk gösterebilir. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06065. iki sütun bilgisi arasýna "-" iþaretini yerleþtirmek ve tek sütun biçiminde görüntülemek istiyoruz. Ayný amaca SELECT deyimini MS Access veri tabanýnda þu þekilde kullanarak ulaþabiliriz. Örneðin. Birleþtirme iþleci olarak (||) simgesi kullanýlabilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06065.htm [24.11. SELECT deyimini ORACLE veri tabaný için þu þekilde düzenleyebiliriz. SELECT ADI || '-' || GÖREVÝ AS ADI_GÖREVÝ FROM PERSONEL. MS Access veri tabanýnda ise (&) iþleci ayný amaçla kullanýlýr.

11. Sütun Ýçeriklerini Birleþtirme file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06065_1.4.2006 21:26:58] .htm [24.6.

deyimi çalýþtýrýldýðýnda. SELECT BÖLÜM_NO FROM PERSONEL.htm [24. Örneðin.2006 21:26:58] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06070. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06070. SELECT DISTINCT BÖLÜM_NO FROM PERSONEL. PERSONEL tablosunun BÖLÜM_NO sütunu içerikleri aynen listelenir. Bunun için aþaðýda belirtilen yol izlenir. Bu sütunun içerdiði deðerlerin çoðu birbirinin ayný olabilir.11. ayný deðerlere sahip satýrlarýn görüntülenmesi engellenemez.htm 6. SELECT DISTINCT BÖLÜM_NO FROM PERSONEL.5. SELECT deyimi DISTINCT anahtar kelimesi ile birlikte kullanýlýr. Örnek PERSONEL tablosunun BÖLÜM_NO sütunundaki verileri tekrarlatmadan listelemek istiyoruz. Eðer tekrarlý deðerlerin sadece bir tanesinin elde edilmesi söz konusu ise. Ayný Deðere Sahip Satýrlar Bir SELECT deyimi çalýþtýrýldýðýnda.

Ayný Deðere Sahip Satýrlar file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06070_1.2006 21:26:58] .5.htm [24.6.11.

htm [24. SELECT ADI.htm 6.6.11. WHERE sözcüðü içinde tanýmlanan koþul. Amacýmýza uygun SELECT deyimi þu þekilde düzenlenebilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06075.GÖREVÝ. literal deðerleri.2006 21:26:59] . Örnek PERSONEL tablosu içinde yer alan PERSONEL arasýnda görevi MEMUR olanlarý seçerek listelemek istiyoruz.BÖLÜM_NO FROM PERSONEL WHERE GÖREVÝ='MEMUR'. Verinin Sýnýrlandýrýlmasý Veri tabanýndan veriyi alma sýrasýnda. sütun içindeki deðerleri. Tablonun belirli kýsýmlarýný seçmek için WHERE sözcüðü kullanýlýr. tablonun tüm satýrlarý yerine bir kýsmý elde edilebilir. aritmetik ifadeleri veya fonksiyonlarý içerebilir. Bu sözcük SELECT deyimi içinde aþaðýda gösterildiði biçimde yer alýr. satýrlara bazý kýsýtlamalar koyarak. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06075.

11.6. Verinin Sýnýrlandýrýlmasý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06075_1.2006 21:26:59] .htm [24.6.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06080.6. Amacýmýza uyan SELECT deyimi þu þekildedir. yani koþul ifadelerinde çeþitli karþýlaþtýrma iþleçleri kullanýlýr.11.htm 6. SELECT ADI.ÜCRET FROM PERSONEL WHERE ÜCRET<=2500. Örnek Ücreti 2500'den daha az ya da eþit olan PERSONELi seçerek listelemek istiyoruz.2006 21:26:59] .1.GÖREVÝ. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06080.htm [24. Karþýlaþtýrma Ýþleçleri WHERE sözcüðü içinde tanýmlanan kýsýtlama ifadelerinde.

1. Karþýlaþtýrma Ýþleçleri file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06080_1.htm [24.11.2006 21:27:00] .6.6.

6.2006 21:27:00] .11. Diðer Karþýlaþtýrma Ýþleçleri Þu ana kadar öðrendiðimiz karþýlaþtýrma iþleçleri dýþýnda.2. Aþaðýdaki etkileþimli listeden bu iþleçleri ve anlamlarýný görebilirsiniz.htm [24.htm 6. bazý özel amaçlarla kullanýlabilecek baþka karþýlaþtýrma iþleçleri de bulunmaktadýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06085.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06085.

Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06090.htm [24. Ýþleci Bu iþleç.11.ÜCRET FROM PERSONEL WHERE ÜCRET BETWEEN 3000 AND 5000. iki deðer arasýnda kalan satýrlarý belirlemek ve bir alt deðer ile bir üst deðer arasýnda kalan deðerleri seçmek için kullanýlabilir.2006 21:27:00] .htm 6.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06090. SELECT ADI.6.1 BETWEEN…AND. Örnek Ücreti 3000 ile 5000 arasýnda olan personeli listelemek için SELECT deyimi þu þekilde kullanýlabilir..2.

11. Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06090_1..2006 21:27:01] .2.6.htm [24.6.1 BETWEEN…AND.

Bunun için IN iþlecini kullanabiliriz. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06095. Liste içindeki deðerler birbirlerinden virgüllerle ayrýlýr. Karakter ve tarih veri türleri.2.2006 21:27:01] .2.htm 6. 'PAZARLAMACI').11. týrnak iþareti arasýnda yer almalýdýr. bir listedeki deðerler ile karþýlaþtýrýlmasý söz konusu ise.GÖREVÝ FROM PERSONEL WHERE GÖREVÝ IN('MEMUR'. IN( liste) Örnek Görevi MEMUR veya PAZARLAMACI olan tüm personeli listelemek istiyoruz.htm [24. SELECT deyimi ile birlikte IN iþleci kullanýlýr.2 IN Ýþleci Sütun deðerlerinin.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06095. SELECT ADI. IN iþleci herhangi bir veri türü için kullanýlabilir.

11.6.2.2006 21:27:01] .2 IN iþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06095_1.2.htm [24.

2006 21:27:02] .11. Bu operatör ile birlikte.3 LIKE Ýþleci WHERE sözcüðü ile. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06100. LIKE ( kural) Örnek Adý "A" harfi ile baþlayan tüm personeli listelemek istiyoruz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06100. Bunlardan (%) iþareti.6. sadece bir kýsmýný belirterek arayabiliriz. GÖREVÝ FROM PERSONEL WHERE ADI LIKE "A*". bir sütunun deðerini tam olarak deðil. 'S%' biçiminde ifade edilir. Bu tür amaçlar için LIKE iþleci kullanýlabilir.htm 6. MS Access'de (*) iþareti kullanýlýr. "A" harfi ile baþlayanlar. SELECT ADI. (_) iþareti ise herhangi bir tek karakteri simgeler. adý "A" harfi ile baþlayan personeli aramak gibi. Örneðin. "S" harfi ile bitenler.2. farklý amaçlar için (%) veya (_) iþaretleri kullanýlabilir.htm [24. Amacýmýza uygun SELECT deyimi þu þekilde düzenlenebilir. LIKE ile birlikte kullanýlan (%) iþareti yerine. 'A%' biçiminde. bu iþaretten önce ya da sonra gelen karakterler için arama yapýlacaðýný belirtir. Örneðin.

11.6.2.6.2006 21:27:02] .htm [24.3 LIKE Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06100_1.

atanamayan ve bilinmeyen bir deðer olduðu için NULL ile ilgili karþýlaþtýrmalarda (=) iþleci kullanýlamaz.2006 21:27:03] .KOMÝSYON FROM PERSONEL WHERE KOMÝSYON IS NOT NULL. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06105.4 IS NULL Ýþleci NULL deðeri.htm 6.2.6. Komisyon almayan personelin bu sütunlarý NULL deðerler içerdiði için.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06105. SELECT ADI.11. bu kez IS NOT NULL iþlecine baþvurmak gerekecektir. Bunun yerine.htm [24. NULL olmayan deðerleri seçerek amacýmýza ulaþýyoruz. Örnek PERSONEL tablosu içinde komisyon alan personeli listelemek istiyoruz. sütun deðerlerinin NULL olup olmadýðýný denetlemek için IS NULL iþleci kullanýlýr. var olmayan. GÖREVÝ. Eðer söz konusu tabloda NULL olmayan alanlar aranacak ise.

4 IS NULL Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06105_1.6.11.6.2.2006 21:27:03] .htm [24.

2006 21:27:03] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06110. Bu iþleçlerden.6.11.htm 6. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06110.htm [24.3. Mantýksal Ýþleçler Koþullarý içeren karþýlaþtýrma iþlemlerinde mantýksal iþleçlere de yer verilebilir. AND ve OR iki koþulu birlikte deðerlendirmek üzere kullanýlýrlar.

htm 6.3. bu koþul da TRUE deðerini döndürür.2006 21:27:04] . her iki koþulun doðruluk deðeri TRUE ise istenen seçme iþlemi gerçekleþir.htm [24.6. SELECT ADI. AND Ýþleci Doðruluk Tablosu Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06111. GÖREVÝ.11. Amacýmýza uygun SELECT deyimi. ÜCRET FROM PERSONEL WHERE ÜCRET>=2000 AND GÖREVÝ='MEMUR'. Örnek Ücreti 2000'e eþit veya daha büyük ve iþi MEMUR olan personeli listelemek istiyoruz.1 AND Ýþleci AND iþleci. Eðer belirli bir personelin ücreti 2000'e eþit veya daha fazla ise.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06111. Yani TRUE deðerini döndürür. Eðer. Böylece her iki koþul için TRUE deðerlerine sahip olan personel isimleri listelenir. ÜCRET>=2000 koþulu doðru olacaktýr. iki koþulun yandaki doðruluk deðeri tablosuna göre TRUE veya FALSE deðerinin döndürülmesini saðlar. Ayný personelin görevi memur ise yani. þu þekilde olabilir. GÖREVÝ='MEMUR' koþulu doðru ise.

6.11.6.1 AND Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06111_1.htm [24.2006 21:27:04] .3.

2 OR Ýþleci OR iþleci.htm [24. GÖREVÝ. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06112.11.2006 21:27:04] . Amacýmýza uygun SELECT deyimi þu þekildedir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06112. her iki koþulun doðruluk deðeri TRUE ise istenen seçme iþlemi gerçekleþir. iki koþulun yandaki doðruluk deðeri tablosuna göre TRUE veya FALSE deðerinin döndürülmesini saðlar. Eðer.6. Örnek Komisyon alan veya görevi MEMUR olan personeli listelemek istiyoruz. OR Ýþleci Doðruluk Tablosu SELECT ADI.htm 6. ÜCRET FROM PERSONEL WHERE KOMÝSYON IS NOT NULL OR GÖREVÝ='MEMUR'.3.

2006 21:27:04] .6.6.3.2 OR Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06112_1.htm [24.11.

11. Bu iþleç IN. bir koþulun doðruluk deðeri TRUE ise FALSE. ÞEF veya PAZARLAMACI olmayan personeli listelemek için aþaðýdaki SELECT deyimi kullanýlabilir. FALSE ise TRUE deðerini döndürmesini saðlar.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06113. 'PAZARLAMACI'). 'ÞEF'.3. LIKE. NOT Ýþleci Doðruluk Tablosu SELECT ADI. GÖREVÝ FROM PERSONEL WHERE GÖREVÝ NOT IN('MEMUR'.6. NULL ve BETWEEN iþleçleriyle birlikte kullanýlabilir.htm [24.3 NOT Ýþleci NOT iþleci. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06113.htm 6. Örnek Mesleði MEMUR.2006 21:27:05] .

6.11.htm [24.3 NOT Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06113_1.6.2006 21:27:05] .3.

htm 6. AND iþlecini ilgilendiren koþulu öncelikle deðerlendirmemiz gerekiyor. Parantezler tüm iþleçlere göre bir önceliðe sahiptir. AND iþleci OR dan daha öncelikli olduðu için. yanda gösterilen sýraya göre iþlem görürler.ÜCRET FROM PERSONEL WHERE (GÖREVÝ='MEMUR' OR GÖREVÝ='ÞEF') AND ÜCRET>3000. þöyle bir seçme iþlemiyle karþýlaþýrýz. Yani öncelikle parantez içindeki iþlemler yapýlýr. 1) Görevi ÞEF olanlar ve ücreti 3000'den fazla olanlar 2) Görevi MEMUR olanlar Bu iki koþulu öncelik sýralarýný göz önüne alarak birleþtirirsek. GÖREVÝ. GÖREVÝ.4. Örnek Aþaðýdaki SELECT deyimini göz önüne alalým: SELECT ADI.2006 21:27:06] . ÞEF veya MEMUR olanlar ve ücreti 3000'den fazla olanlarýn seçimini yapacak SELECT deyimini yazýnýz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06115.ÜCRET FROM PERSONEL WHERE GÖREVÝ='MEMUR' OR GÖREVÝ='ÞEF' AND ÜCRET>3000. Bu iþleçlerin dýþýnda. Parantezlerin öncelik sýrasýna sahip olduðunu unutmayýnýz. Ardýndan geriye kalan koþulu göz önüne alýyoruz. parantezler de kullanýlabilir. Ýþleçlerin Ýþlem Sýrasý WHERE sözcüðü içinde yer alan iþleçler. Ýþleçlerin öncelik sýrasýný göz önüne alarak deðerlendirme yapmamýz gerekiyor. "Görevi ÞEF olanlar ve ücreti 3000'den fazla olanlar veya görevi MEMUR olanlarýn seçimi" Örnek Görevi. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06115. ! Karþýlaþtýrma Ýþleçleri ve anlamlarý görmek için 'DEVAM' düðmesine týklayýnýz. SELECT ADI. ardýndan da yandaki tabloya göre iþlem sýrasý uygulanýr.htm [24.6. O halde aþaðýda belirtildiði biçimde iki koþuldan söz edilebilir.11.

SELECT ADI. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06120. herhangi bir sütuna göre sýralý olarak elde edilmesi söz konusu ise. SELECT deyimi ORDER BY sözcükleri ile birlikte kullanýlýr. GÝRÝÞ_TARÝHÝ FROM PERSONEL ORDER BY GÝRÝÞ_TARÝHÝ.. .htm 6. ÜCRET DESC. ÜCRET FROM PERSONEL ORDER BY BÖLÜM_NO. ADI. Bunun için SELECT deyimi þu þekilde düzenlenebilir. Örnek Personeli iþe giriþ tarihine göre sýralamak istiyoruz. Sýralama sözcükleri de dahil olmak üzere SELECT deyimi þu þekilde tanýmlanýr. SELECT deyimi þu þekilde düzenlenebilir.7. SELECT BÖLÜM_NO. ifade} [ASC | DESC] ].11. bölümleri ve ücretleri birlikte sýralamýz söz konusudur..htm [24. SELECT [DISTINCT] { * | sütun. GÖREVÝ. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz Örnek Bu kez personeli ücretine göre her bölüm içinde sýralamak istiyoruz.} FROM tablo [WHERE koþul [ORDER BY {sütun. Bu durumda.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06120.2006 21:27:06] . Sýralama Ýþlemleri Tablolarýn satýrlarýnýn..

2006 21:27:06] . Sýralama Ýþlemleri file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06120_1.htm [24.11.6.7.

11.6. Sýralama Ýþlemleri file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06120_2.2006 21:27:07] .7.htm [24.

11.htm (1 of 2) [24.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06130.2006 21:27:07] . Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.

Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT06130.11.2006 21:27:07] .htm (2 of 2) [24.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07005. SQL yapýsal programlama dilinde standart olarak bulunan ve veri tabaný yönetiminde bizlere büyük kolaylýkar saðlayan temel SQL fonksiyonlarýný ve bu fonksiyonlarýn nasýl kullanýlacaðýný öðreneceksiniz.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07005.htm SQL FONKSÝYONLARININ KULLANIMI Bu bölümde.2006 21:27:07] .htm [24.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07010.htm

Bölüm Hedefi
Bu bölümde,
● ● ● ● ● ● ● ● ●

Fonksiyon kavramýný, SQL'de fonksiyonlarýn yerini, Tek satýr fonksiyonlarýnýn kullanýmýný, Karakter fonksiyonlarýný, Sayýsal fonksiyonlarý, Tarih fonksiyonlarýný, Dönüþtürme fonksiyonlarýný, Diðer SQL fonksiyonlarýný, Ýç içe fonksiyon kullanýmýný,

öðreneceksiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07010.htm [24.11.2006 21:27:08]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07015.htm

7.1. FONSÝYON NEDÝR?
Fonksiyonlar veya bir baþka deyiþle iþlevler, SQL'e bazý güçlü özellikler katan olanaklar olarak deðerlendirilir. SQL fonksiyonlarý, aynen programlama dillerinde olduðu gibi, kullanýcýya bazý özel iþlemleri ve hesaplamalarý otomatik olarak saðlar. Bir fonksiyon; çeþitli argümanlarý girdi olarak alýp bir sonuç üreten hazýr bileþenlerdir. Kullanýcýnýn, fonksiyonun adýný ve gerekli argümanlarý tanýmlamasý yeterlidir. Bu bilgilere dayalý olarak fonksiyon, bir sonuç döndürür (üretir).

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07015.htm [24.11.2006 21:27:08]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07020.htm

7.2. SQL Fonksiyonlarý
SQL fonksiyonlarý iki ana grup altýnda incelenmektedir:

Tek satýr fonksiyonlarý, tablonun bir satýrý için uygulanýr ve her satýr için bir sonuç üretilir. Çoklu satýr fonksiyonlarý ise, bir grup satýra uygulanýr ve sonuç buna göre elde edilir.

Burada anlatýlan SQL standart ANSI SQL 'dir. Ancak bazý fonksiyonlarý tüm veri tabanlarýnýn desteklemediðini göreceksiniz. ANSI SQL'in tüm özelliklerini barýndýran ORACLE veri tabaný üzerinde çalýþtýðýmýzý varsayarak, fonksiyonlarý ona göre anlatacaðýz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07020.htm [24.11.2006 21:27:08]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07025.htm

7.3. Tek Satýr Fonksiyonlarý
Tek satýr fonksiyonlarý, tablonun her bir satýrýna uygulanan fonksiyonlardýr. Tek satýr fonksiyonlarýnýn birçok türü bulunmaktadýr.

Bu derste, aksi söylenmedikçe "fonksiyon" sözcüðü ile tek satýr fonksiyonlarýndan söz edildiði anlaþýlacaktýr. Tek satýr fonksiyonlarýný aþaðýda belirtildiði biçimde tanýmlýyoruz;

fonksiyon sütun ifade argümanlar

Herhangi bir SQL fonksiyonunu simgeler. Örneðin LOWER bir fonksiyon ismidir. Bu ismi deðiþtiremeyiz. Herhangi bir tabloya iliþkin sütun adý Herhangi bir karakter dizisi ya da hesaplama ifadesi Fonksiyonla birlikte kullanýlabilecek argümanlar

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07025.htm [24.11.2006 21:27:09]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07030.htm

7.3.1. Karakter Fonksiyonlarý
Karakter fonksiyonlarý; karakter verileri girdi olarak alan, karakter ya da sayýsal deðerler döndürebilen fonksiyonlardýr.

Bu fonksiyonlarýn en çok kullanýlanlarýný þu þekilde sýralayabiliriz;

Alfabetik karakterleri küçük harflere dönüþtür. Alfabetik karakterleri büyük harflere dönüþtür. Alfabetik karakterlerin birincisini büyük harfe; diðerlerini ise küçük harfe çevirir.

Katarlarý (karakter dizileri) birleþtirmek için kullanýlýr. (||) ile ayný görevi yapar.

Bir katarýn m. pozisyonundan itibaren n karakterinden yeni bir katar oluþturur. Bir sütunun ya da katarýn içerdiði karakter sayýsýný döndürür.

Bu eðitimde bahsedilen fonksiyonlar, ORACLE veri tabaný için verilmiþtir. Bu fonksiyonlar, bazý veri tabanlarýnda farklýlýk gösterebilir. Örneðin; MS Access'de bu fonksiyonlarýn bazýlarý farklý biçimdedir.
file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07030.htm (1 of 2) [24.11.2006 21:27:09]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07030.htm

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07030.htm (2 of 2) [24.11.2006 21:27:09]

htm 7. bir karakterin büyük harfe ya da küçük harfe dönüþtürülmesi söz konusu olduðunda kullanýlabilir. UPPER () Fonksiyonu UPPER() fonksiyonu. Bu isimleri küçük harflerle görüntülemek için SELECT deyimi þu þekilde düzenlenebilir.3.2006 21:27:10] .1 LOWER() ve UPPER() Fonksiyonlarý Bu fonksiyonlar.1. a. Örnek PERSONEL tablosunda personel isimleri büyük harflerle yazdýrýlmýþ olarak yer almaktadýr. MS Access veri tabanýnda LOWER() fonksiyonu yerine LCASE() fonksiyonu kullanýlmaktadýr.htm (1 of 2) [24. SELECT LCASE(ADI) AS ÝSÝMLER FROM PERSONEL WHERE BÖLÜM_NO=10 OR GÖREVÝ='PAZARLAMACI' Yukarýdaki SELECT deyimi MS Access veri tabaný için düzenlenmiþtir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07035. bir karakter katarýndaki tüm harfleri büyük harflere çevirir. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz b.11. LOWER() Fonksiyonu LOWER() fonksiyonu.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07035. bir karakter katarýnýn tüm harflerini küçük harflere dönüþtürür.

htm (2 of 2) [24.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07035.2006 21:27:10] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07035.11.

htm [24.1.2006 21:27:10] .1 LOWER() ve UPPER() Fonksiyonlarý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07035_1.3.7.11.

Örnek Personel isimlerinin kaç karakterden oluþtuðunu bulmak istiyoruz. SELECT ADI.11.LEN(ADI) AS ÝSÝMLER FROM PERSONEL.htm 7.1.3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07040.2006 21:27:10] . Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07040.2 LENGTH() Fonksiyonu Bir karakter katarýn kaç karakterden oluþtuðunu veya uzunluðunu bulmak amacýyla ORACLE veri tabanýnda LENGTH(). MS Access veri tabanýnda LEN() fonksiyonu kullanýlýr. Bu amaçla SELECT deyimi þu þekilde kullanýlabilir.htm [24. bir sayýsal deðer döndürür. Lenght() fonksiyonu.

3.7.2 LENGTH() Fonksiyonu file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07040_1.1.2006 21:27:11] .11.htm [24.

htm 7. sayýsal veriler alýr ve yine sayýsal sonuçlar üretirler.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07045. m ve n 'nin birbirine bölümünden elde edilen kalaný döndürür. Sayýsal Fonksiyonlar Sayýsal veriler üzerinde çeþitli iþlemleri gerçekleþtirmek üzere özel fonksiyonlar bulunmaktadýr. Bu fonksiyonlarýn en çok kullanýlanlarýný þu þekilde sýralayabiliriz: Sayýsal deðeri yuvarlatmak amacýyla kullanýlýr.2.3.htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07045. Sayýsal deðeri belirtilen ondalýða göre budamak (kesmek) amacýyla kullanýlýr.2006 21:27:11] . Ýki sayýsal deðerin. Sayýsal fonksiyonlar.11.

ÜCRET AS AYLIK. Eðer n sýfýr ise veya fonksiyon içinde belirtilmemiþ ise. Örnek PERSONEL tablosunun ÜCRET sütunundaki bilgiler aylýk ücretleri kapsamaktadýr.2006 21:27:11] . yuvarlatma sonunda elde edilecek tamsayýnýn ondalýk hanesi olmayacaktýr.htm [24.1 ROUND() Fonksiyonu ROUND() fonksiyonu. SELECT ADI.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07050. Görevi MEMUR olanlar için. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07050.3. bir n ondalýk hanesine göre yapýlýr. bir sütun deðerinin veya bir ifadenin içerdiði sayýsal deðerin yuvarlatýlmasý amacýyla kullanýlýr.11. Yuvarlatma iþlemi. ROUND() fonksiyonu þu þekilde tanýmlanýr.2) AS GÜNLÜK FROM PERSONEL WHERE GÖREVÝ='MEMUR'. aylýk ücretleri 30'a bölerek günlük ücretleri bulmak ve sonucu 2 ondalýk haneye göre yuvarlatmak istiyoruz.htm 7. Amacýmýza uygun SELECT deyimi þu þekilde olacaktýr. ROUND(ÜCRET/30.2.

2006 21:27:12] .7.2.1 ROUND() Fonksiyonu file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07050_1.11.htm [24.3.

2.3. Eðer n negatif ise.htm 7. Sözü edilen n deðeri sýfýr ise veya belirtilmemiþ ise.2 TRUNC() Fonksiyonu TRUNC() fonksiyonu. Fonksiyon þu þekilde tanýmlanýr. ÜCRET AS AYLIK.2006 21:27:12] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07055. ondalýk noktanýn sonundan itibaren budama iþlemi gerçekleþir.11. Tanýmlamadaki n sayýsal deðerin ondalýk noktadan itibaren kesileceði konumu belirler. TRUNC(ÜCRET/30) AS GÜNLÜK FROM PERSONEL file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07055.htm [24. Bu fonksiyon. ORACLE veri tabanýnda geçerlidir. bir sütunun içerdiði sayýsal deðerin ya da bir ifade sonunda elde edilen sayýsal deðerin. Örnek Personelin günlük ücretini hesaplayan ve sonucu yuvarlatmadan ondalýk noktasýndan itibaren budayan SELECT deyimi aþaðýda gösterildiði biçimde düzenlenebilir: SELECT ADI. belirlenen haneye göre budanmasý (kesilmesi) amacýyla kullanýlýr. sayýsal deðerin ondalýk noktadan sonrasý budanýr.

KOMÝSYON) AS KALAN FROM PERSONEL.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07060. Örnek Personel ücretlerinin komisyonlarýna oranýný hesaplayan ve kalaný bulan SELECT deyimi aþaðýda belirtildiði biçimde olabilir. MOD(ÜCRET.htm [24. Burada m ve n birbirine bölünecek sayýsal deðerleri ifade etmektedir.2006 21:27:13] .2. ÜCRET. MOD() fonksiyonu kullanýlýr.11.3. KOMÝSYON. Bu fonksiyon þu þekilde tanýmlanýr. SELECT ADI.htm 7.3 MOD() Fonksiyonu Ýki sayýsal deðerin birbirine bölünmesi sonucunda elde edilen kalaný döndürmek için. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07060.

Haftanýn belirli bir gününün. Bu fonksiyonlarýn en çok kullanýlanlarýndan biri SYSDATE fonksiyonudur. Örnek 2 Ýþe giriþ süresi 200 aydan daha az olan personeli listelemek için þu þekilde bir sorgu yapýlabilir. Bu fonksiyonun herhangi bir argümaný bulunmamaktadýr.htm 7. MONTHS_BETWEEN (SYSDATE.GÝRÝÞ_TAR.11. O andaki tarih ve zaman bilgisini elde etmek amacýyla kullanýlýr. GÝRÝÞ_TAR. SELECT ADI. Örnek 1 Personelin iþe giriþ tarihinden bu zamana kadar olan süreyi ay olarak hesaplatmak istiyoruz.2006 21:27:13] .GÝRÝÞ_TAR) AS AY FROM PERSONEL WHERE MONTHS_BETWEEN(SYSDATE. Örnek 3 Personelin iþe giriþ tarihinden 6 ay sonrasýnýn hangi tarihe karþýlýk geldiðini hesaplayan bir sorgu þu þekilde oluþturulabilir.htm (1 of 2) [24. Belirli bir tarih bilgisine n ay ilave edildiðinde hangi tarihe ulaþýlacaðýný belirler. ADD_MONTHS (GÝRÝÞ_TAR.GÝRÝÞ_TAR)<200.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07065. Amacýmýza uygun SELECT deyimi þu þekilde olabilir.3. Fonksiyon Ýþlevi Ýki tarih arasýnda kaç aylýk bir süre olduðunu saptar. SELECT ADI.3. SELECT ADI. bir sonra hangi tarihe karþýlýk geldiðini bulmak için kullanýlýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07065. Belirlenen tarihe iliþkin ayýn son gününü bulmak için kullanýlýr. GÝRÝÞ_TAR. Tarih Fonksiyonlarý Tarih iþlemlerinde kullanýlan bazý tarih fonksiyonlarýndan söz edilebilir.6) FROM PERSONEL. Örnek 4 Personelin iþe giriþ tarihlerini göz önüne alarak her bir tarihin ait olduðu ayýn en son gününü belirleyen sorgu ifadesi þu þekilde olabilir. Diðer tarih fonksiyonlarýný aþaðýdaki tablo üzerinde görebilirsiniz. MONTHS_BETWEEN(SYSDATE.GÝRÝÞ_TAR) AS AY FROM PERSONEL.

2006 21:27:13] .htm SELECT ADI. LAST_DAY(GÝRÝÞ_TAR) FROM PERSONEL.11.htm (2 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07065. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07065. GÝRÝÞ_TAR.

sayýsal ve tarih verilerinin birbirlerine dönüþtürülmesi ve özellikle biçimlendirme iþlemlerinde çeþitli fonksiyonlardan yararlanýlýr.3.htm [24.4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07070. Fonksiyon Ýþlevi Tarih veya sayýsal bilginin istenildiði gibi biçimlendirilerek karakter dizisine dönüþtürülmesini saðlar.11.2006 21:27:14] . Dönüþtürme Fonksiyonlarý Karakter. Bir karakter katarýnýn içerdiði sayýsal deðerleri istenildiði gibi biçimlendirilerek sayýsal veri türüne dönüþtürmek için kullanýlýr. Bu fonksiyonlarý aþaðýdaki tabloda görebilirsiniz.htm 7. Bir karakter katarýnýn içerdiði tarih verilerini istenildiði gibi biçimlendirilerek tarih veri türüne dönüþtürmek için kullanýlýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07070.

4. Eleman YYYY YEAR MM MONTH DD DY DAY file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07075.htm (1 of 2) [24. bir sayýsal deðeri biçimlendirerek karakter dizisine çeviriyor. bir sayýsal deðerin karakter katarýna dönüþtürülmesi isteniyorsa.3.htm 7. Örneðin. tanýmý kullanýlýr. yani bir katara dönüþtürmek söz konusu ise. okunduðu gibi yazýlmasý Ýki haneli ay bilgisi Ayýn tam adý Ýki haneli gün bilgisi Haftanýn günü. tek týrnaklar arasýnda yazýlýr ve büyük küçük harf ayrýmýna karþý duyarlýdýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07075. Aþaðýdaki canlandýrmada TO_CHAR fonksiyonu.11. Eðer tarih bilgisini karakter dizisine.2006 21:27:14] Anlamý Dört haneli yýl bilgisi. tanýmý uygulanýr. Günün tam adý . Eðer. Tarih ile ilgili biçimlendirme ifadelerinde aþaðýdaki tanýmlardan yararlanýlýr. Tarihle ilgili biçimlendirme ifadesi. Üç karakterden oluþur. tarih veya sayýsal bilginin istenildiði gibi biçimlendirilerek karakter dizisine dönüþtürülmesini saðlar.1 TO_CHAR Fonksiyonu Bu fonksiyon. bazý biçimlendirme elemanlarýndan ve kurallardan oluþur. Biçimlendirme ifadesi. Ýki farklý uygulama alaný bulunmaktadýr. 2002 Yýlýn rakamlarla deðil.

htm (2 of 2) [24. Yerel para iþaretini yerleþtirir.TO_CHAR(ÜCRET.htm Zamanla ilgili biçimlendirme ifadeleri ise aþaðýdaki elemanlardan oluþabilir. Örnek 1 Anlamý Sayýsal deðeri ifade eder. Sýfýr deðerini ifade eder.TO_CHAR(GÝRÝÞ_TAR. Binler hanesini gösterir. Ayrýca ücret rakamýnýn sol tarafýna ($) iþaretini yerleþtireceðiz. . SELECT ADI.PM HH MI SS Anlamý Meridyen göstergesi Günün saati Dakika bilgisi Saniye bilgisi Sayýsal deðerleri kullanan TO_CHAR() fonksiyonu. Dolar iþaretini yerleþtirir.999') FROM PERSONEL. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07075. Amacýmýza uygun sorgu þu þekilde düzenlenebilir.'$99.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07075. Eleman AM. Personelin iþe giriþ tarihlerini MM/YY biçiminde elde etmek için þu þekilde bir sorgu düzenlenebilir.2006 21:27:14] . Eleman 9 0 $ L . SELECT ADI.11.'MM/YY') FROM PERSONEL. Örnek 2 Personel ücretlerini. Ondalýk hanesini gösterir. binler hanesinden ayýrarak elde etmek istiyoruz. aþaðýdaki tabloda yer alan biçimlendirme elemanlarýný kullanabilir.

4.htm [24. Biçimlendirme ifadesi. . Binler hanesini gösterir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07080. aþaðýda yer alan iþaretler kullanýlarak düzenlenir. Aþaðýdaki canlandýrmada. Eleman 9 0 $ L . TO_NUMBER() fonksiyonu bir karakter katarý girdisini sayýsal veri türüne çeviriyor.11. TO_CHAR() fonksiyonunda olduðu gibi. Dolar iþaretini yerleþtirir.htm 7. Ondalýk hanesini gösterir.2006 21:27:15] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07080. Sýfýr deðerini ifade eder. Bu fonksiyon þu þekilde tanýmlanýr. sayýsal veri türüne dönüþtürmek için TO_NUMBER () fonksiyonu kullanýlýr. Yerel para iþaretini yerleþtirir.2 TO_NUMBER Fonksiyonu Karakter alan olarak tanýmlanmýþ bir sütunun içerdiði sayýsal deðerleri. Anlamý Sayýsal deðeri ifade eder.3.

2006 21:27:15] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07085.3 TO_DATE Fonksiyonu Karakter dizisi olarak saklanan ifadeleri tarih bilgisine çevirmek söz konusu olduðunda TO_DATE() fonksiyonuna baþvurulur.htm [24. YYYY'). Biçimlendirme ifadesi içinde.htm 7.11. Amacýmýza uygun SELECT deyimi þu þekilde olabilir.1980'. Örnek Ýþe giriþ tarihlerine göre PERSONEL tablosunu sorgulayacaðýz. Aþaðýdaki canlandýrma TO_DATE() fonksiyonun çalýþma prensibini anlatmaktadýr. SELECT ADI.3. Bu fonksiyon þu þekilde tanýmlanýr.MONTH DD. TO_CHAR() fonksiyonu için geçerli olan biçimlendirme ifadeleri kullanýlabilir. GÝRÝÞ_TAR FROM PERSONEL WHERE GÝRÝÞ_TAR=TO_DATE('OCAK 1. Arama ifadesi "Ocak 1.4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07085. 1980" biçiminde olabilir. Bu ifadeyi SELECT deyiminin yorumlayabileceði bir biçime dönüþtürmek gerekiyor.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07090. NVL() ve DECODE() fonksiyonlarýdýr. SQL fonksiyonlarýnýn bir kýsmýný sonraki bölümde gruplama fonksiyonlarý olarak ele alarak inceleyeceðiz. ! Fonksiyonlarýn görevlerini öðrenmek için. fonksiyon isimleri yazýlý düðmelere týklayýnýz.htm 7. Ancak burada SQL'in önemli iki fonksiyonu üzerinde duracaðýz. Bu fonksiyonlar.2006 21:27:15] . Genel Fonksiyonlar Bu bölümde daha önce gördüðümüz fonksiyonlarýn dýþýnda SQL'in birçok fonksiyonu bulunmaktadýr.3.5. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07090.htm [24.11.

NVL() fonksiyonu þu þekilde tanýmlanýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07095. Bunun yerine. aylýk ücret bilgisi.ÜCRET. 12 ile çarpýlacak ve bulunan sonuca komisyon miktarý eklenecektir. SELECT ADI. NVL() fonksiyonu. Ancak pek çok personelin komisyon bilgisi NULL deðerler içermektedir. SELECT ADI. Bunun için. NVL() fonksiyonunu kullanmamýz söz konusudur. görev olarak "GÖREVÝ BELÝRLENMEDÝ" mesajýný görüntüleyen SELECT deyimi þu þekilde olabilir.'01-01-2002') FROM PERSONEL. NULL deðerler içeren sütunlar üzerinde aritmetik iþlemler yapamayýz. SELECT deyimi ile yapýlan sorgularda bu içerik boþ olarak görüntüleniyordu.11. Örnek 1 Yýllýk toplam ücretleri hesaplamak istiyoruz.0) FROM PERSONEL. bir baþka ifadenin görüntülenmesi saðlanabilir.2006 21:27:16] . NULL deðer ile karþýlaþýldýðýnda. O halde.KOMÝSYON. NULL deðerler yerine bir baþka deðerin yer almasýný saðlar. Örnek 3 Görevi henüz belli olmayan personel için.1 NVL() Fonksiyonu Bir sütunun içeriði NULL ise. NULL deðerler yerine 0 deðerini yerleþtirerek hesaplamalar yapýlabilir.GÝRÝÞ_TAR.5.htm 7. EVET ve HAYIR düðmelerine týklayýnýz. ! NVL() fonksiyonunun EVET ve HAYIR durumlarýnda çalýþma þeklini görmek için. Amacýmýza uygun SELECT deyimi þu þekilde olmalýdýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07095.3.ÜCRET*12+NVL(KOMÝSYON. Örnek 2 Ýþe giriþ tarihleri NULL olan personel için '01-01-2002' tarihini iþe baþladýðý tarih olarak görüntüleyen SELECT deyimi þu þekilde olabilir.NVL(GÝRÝÞ_TAR.htm (1 of 2) [24.

NVL(GÖREVÝ. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07095.htm (2 of 2) [24.'GÖREVÝ BELÝRLENMEDÝ') FROM PERSONEL.htm SELECT ADI. GÖREVÝ.11.2006 21:27:16] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07095.

MEMUR olanlara %10.ÜCRET*1.3.'MEMUR'.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07100.2006 21:27:16] .. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07100. Onun yerine. ! DECODE() fonksiyonunun EVET ve HAYIR durumlarýnda çalýþma þeklini görmek için. Örnek Personel arasýnda görevi.GÖREVÝ.20. ÜCRET) AS "YENÝ ÜCRETLER" FROM PERSONEL. 'MÜDÜR'ÜCRET*1. ÜCRET*1.. Bu fonksiyon þu þekilde tanýmlanýr. MÜDÜR olanlara ise. EVET ve HAYIR düðmelerine týklayýnýz. Bu iþlemleri yerine getirmek üzere aþaðýdaki SELECT deyimini düzenliyoruz.11.ELSE denetim deyimlerinin SQL içinde tam karþýlýðý olabilecek bir deyim yoktur.ÜCRET.15.5.THEN. SELECT ADI.2 DECODE() Fonksiyonu Programlama dillerinde kullanýlan CASE veya IF. DECODE(GÖREVÝ. 'ÞEF'. ÞEF olanlara %15.htm (1 of 2) [24. %20 zam yapýlacaktýr.10. ayný iþlevi yerine getirmek üzere DECODE() fonksiyonundan yararlanýlýr.htm 7. Diðerlerinde ise herhangi bir deðiþiklik olmayacaktýr.

2006 21:27:16] .htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07100.htm (2 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07100.11.

ADIM 2 ve ADIM 3 düðmelerine týklayýnýz. ! Adýmlarýn sonuçlarýný görmek için ADIM 1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07105. ardýndan elde edilen sonuç dýþtaki fonksiyon tarafýndan kullanýlýr.11. Ýç Ýçe Fonksiyonlar Bir SELECT deyimi içinde herhangi bir fonksiyonun nasýl kullanýlabildiðini gördük. …) biçiminde bir taným yapýlabilir. Bazý uygulamalarda.2006 21:27:17] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07105.0). Örneðin. önce iç taraftaki fonksiyon iþlem görür.htm 7. Burada DECODE() fonksiyonu içinde TRUNC() fonksiyonunun kullanýldýðý görülüyor. Ýç içe fonksiyonlarda. DECODE(TRUNC(ücret.htm [24. bir fonksiyonun içinde bir baþka fonksiyona yer vermek gerekebilir.4.

Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz.htm (1 of 2) [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07115. Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.2006 21:27:17] .11.

2006 21:27:17] .Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT07115.11.htm (2 of 2) [24.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08005.htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08005.2006 21:27:18] .htm VERÝLERÝ GRUPLAYARAK ANALÝZ ETMEK Önceki bölümde SQL'in bize sunduðu hazýr fonksiyonlarýn tek satýrla ifade edilebilen tiplerini öðrendiniz. Bu bölümde ise.11. SQL yapýsal sorgulama dilinde bulunan çok satýrlý fonksiyonlarý öðreneceksiniz.

2006 21:27:18] .htm Bölüm Hedefi Bu bölümde. öðreneceksiniz.11.htm [24. Grup koþullarýnýn tanýmlanmasýný. Bazý istatistik fonksiyonlarýnýn kullanýlmasýný. Gruplama iþlemlerini. ● ● ● ● ● ● Grup fonksiyonlarý nasýl tanýmlayacaðýnýzý. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08010. Gruplama iþlemlerinde dikkat edilecek noktalarý. Birden fazla sütuna göre gruplama yapmayý.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08010.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08015. "çoklu satýr" ya da bir baþka deyiþle "grup fonksiyonlarýndan" söz edilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08015. Bir grup satýra bir fonksiyonun uygulanmasý söz konusu ise. GROUP BY sözcüðü yardýmýyla da alt gruplara uygulanabilir.11.htm 8.1. Grup fonksiyonlarý tablonun tüm satýrlarýna uygulanabildiði gibi. Grup Fonksiyonlarý Tek satýr fonksiyonlarý.htm [24. tablonun bir satýrýna uygulanabiliyor ve buna karþýlýk gelen bir sonuç satýrý elde edilebiliyordu.2006 21:27:18] . SELECT deyimi aþaðýda belirtildiði biçimde kullanýlýr. Bir tablonun tüm satýrlarý için grup fonksiyonu uygulanacak ise.

SELECT AVG (ÜCRET) AS ORTALAMA FROM PERSONEL.htm [24.2006 21:27:19] . Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz Örnek 2 Personel arasýnda görevi MEMUR olanlarýn ortalama ücreti aþaðýda gösterildiði biçimde hesaplanabilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08020. Örnek 1 Personel ücretlerini göz önüne alalým. SELECT AVG (ÜCRET) AS ORTALAMA.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08020. AVG() fonksiyonu kullanýlýr.htm 8.1 AVG()Fonksiyonu Herhangi bir sütunun içerdiði sayýsal deðerlerin aritmetik ortalamasýný hesaplamak amacýyla.11. Bu fonksiyonun uygulandýðý sütunun veri türü sayýsal olmalýdýr. FROM PERSONEL WHERE GÖREVÝ='MEMUR'. Ücretlerin ortalamasýný bulmak için þöyle bir yol izlenir.1.

1.2006 21:27:19] .11.1 AVG()FONSÝYONU file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08020_1.8.htm [24.

SELECT SUM(ÜCRET) AS TOPLAM FROM PERSONEL.11.2006 21:27:19] .1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08025.2 SUM()Fonksiyonu Sütunlarýn içerdiði sayýsal deðerleri toplamak amacýyla SUM() fonksiyonundan yararlanýlýr. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08025. Örnek Tüm personel ücretlerinin toplamýný hesaplayan SELECT deyimi aþaðýda gösterildiði biçimde oluþturulabilir.htm [24.htm 8.

8.11.2006 21:27:20] .htm [24.2 SUM() Fonksiyonu file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08025_1.1.

Söz konusu hesaplamayý yapan SQL fonksiyonu ise. Standart sapma þekil üzerinde görülen formül aracýlýðýyla hesaplanýr.3 STDDEV() Fonksiyonu Standart sapma.11. Bu kavram istatistiksel veri analizlerinde sýkça kullanýlýr. STDEV() olarak kullanýlmaktadýr Solda STD() fonksiyonun kullandýðý Standart Sapma Formülü yer almaktadýr.1. STDDEV() 'dir.2006 21:27:20] .htm 8. STDDEV() fonksiyonu MS Access'de. Bunun için SELECT deyimi aþaðýda gösterildiði biçimde kullanýlýr. SELECT STDEV(ÜCRET) AS STANDART_SAPMA FROM PERSONEL.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08030. Örnek Personel ücretlerinin standart sapmasýný bulmak istiyoruz. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08030.htm [24. sayýsal verilerin aritmetik ortalamalardan farklarýnýn kareli ortalamasý olarak bilinir.

11.htm [24.1.2006 21:27:20] .3 STDDEV() Fonksiyonu file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08030_1.8.

Bunun için. Standart sapmanýn karesi olarak bilinmektedir.4 VARIANCE() Fonksiyonu Varyans. sayýsal deðerler arasýndaki deðiþkenliði ölçen bir kavramdýr. Bir dizi sayýsal deðerin varyansýný hesaplamak için VARIANCE() fonksiyonu kullanýlýr. VARP() fonksiyonu kullanýlýr. Örnek Personel ücret bilgilerinin ne ölçüde deðiþken olduðunu belirlemek istiyoruz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08035. Ýstatistiksel veri analizlerinde yaygýn biçimde kullanýlmaktadýr. SELECT VARP(ÜCRET) AS VARYANS FROM PERSONEL. MS Access'de bu fonksiyon yerine. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08035.11.2006 21:27:21] .1. Soldaki animasyonda görüldüðü biçimde bir formül yardýmýyla hesaplanýr.htm 8.htm [24. VARIANCE() veya VARP() fonksiyonu kullanýlabilir.

1.11.htm [24.2006 21:27:21] .4 VARIANCE() Fonksiyonu file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08035_1.8.

Bu fonksiyonlar herhangi bir veri türüne uygulanabilir. SELECT MIN(ÜCRET) AS EN_AZ.5 MAX() ve MIN() Fonksiyonlarý Tablonun içerdiði deðerlerin en büyük ve en küçük olanlarýný bulmak için MIN() ve MAX() fonksiyonlarý kullanýlýr. SELECT MIN(ADI) FROM PERSONEL.htm [24. Örnek 3 Personel isimlerini alfabetik olarak sýraladýðýmýzda birinci sýrada hangi ismin elde edileceðini þu þekilde öðrenebiliriz. MAX(ÜCRET) AS EN_FAZLA FROM PERSONEL.1. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08040.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08040. Örnek 1 Personel ücretlerini göz önüne alalým.2006 21:27:22] . Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz Örnek 2 Ýþe en son giren personelin iþe giriþ tarihini belirlemek için SELECT deyimi þu þekilde düzenlenebilir.11. En az ve en yüksek ücretin ne olduðunu öðrenemek istiyoruz.htm 8. SELECT MAX(GÝRÝÞ_TAR) FROM PERSONEL. Amacýmýza uygun SELECT deyimi aþaðýda belirtildiði biçimde olabilir. Soldaki canlandýrmalardan MAX() ve MIN() fonksiyonlarýnýn çalýþma þekillerini öðrenebilirsiniz.

2006 21:27:22] .5 MAX() ve MIN() Fonksiyonlarý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08040_1.htm [24.1.11.8.

Ýkinci biçim tercih edilirse. WHERE BOLUM_NO=30. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/Vt08045.11. Örnek 30 numaralý bölümde görev yapan kaç tane personel olduðunu bulmak istiyoruz. söz konusu sütunda NULL deðerler içermeyen tüm kayýtlarýn sayýlmasýna neden olur.htm 8.htm [24.1. bu koþula uygun tüm kayýtlarýn sayýsýnýn öðrenilmesini saðlar.2006 21:27:22] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/Vt08045. SELECT deyimi þu þekilde düzenlenir. WHERE ile birlikte kullanýlýrsa. NULL deðerleri de içeren tüm kayýtlarýn sayýlmasýna neden olur. Bu fonksiyon iki farklý biçimde kullanýlabilir.6 COUNT() Fonksiyonu Bir tablodaki kayýtlarýn sayýlmasý amacýyla COUNT() fonksiyonu kullanýlýr. yani COUNT(sütun) biçiminde kullanýlýrsa. SELECT COUNT(*) AS PERSONEL_SAYISI FROM PERSONEL. ● ● COUNT(*) COUNT(sütun) COUNT(*) fonksiyonu.

6 COUNT() Fonksiyonu file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08045_1.htm [24.11.8.2006 21:27:23] .1.

SELECT BÖLÜM_NO. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08050.11. Böyle bir amaçla SELECT deyimi içinde GROUP BY sözcüðünden yararlanýlýr. Gruplama Ýþlemleri Bir tablonun satýrlarý gruplara ayrýlarak. SELECT BÖLÜM_NO. PERSONEL tablosunda bulunan personel ücretlerini. SUM(ÜCRET) AS TOPLAM. grup fonksiyonu(sütun) FROM tablo [WHERE koþul] [GROUP BY sütun] [ORDER BY sütun].2006 21:27:23] . SUM(ÜCRET) AS TOPLAM_ÜCRET FROM PERSONEL GROUP BY BÖLÜM_NO.htm 8.2.htm [24. Bunun için. SELECT sütun.COUNT(ADI) AS SAYI. ücret toplamýný ve ortalama ücretleri hesaplayan SELECT deyimi þu þekilde oluþturulabilir. Bölüm_No'suna göre gruplayýp her bölümdeki toplam personel harcamalarýný bulabiliriz. AVG(ÜCRET) AS ORTALAMA FROM PERSONEL GROUP BY BÖLÜM_NO. grup fonksiyonlarýnýn bunlara uygulanmasý saðlanabilir. Örnek PERSONEL tablosunu göz önüne alarak. her bölüm için personel sayýsýný.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08050.

8.2.htm [24.11. Gruplama Ýþlemleri file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08050_1.2006 21:27:23] .

Bu son sorgu. COUNT(*) FROM PERSONEL GROUP BY BÖLÜM_NO. AVG(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO.2. Örneðin. Örneðin.htm 8.11. GROUP BY içinde belirtilen sütun isimleri. GROUP BY ile birlikte sütunlarýn takma isimleri kullanýlamaz. SELECT AVG(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO. sütun isimleri ile birlikte kullanýlabilirler. COUNT(*) FROM PERSONEL. Sýrayý test yönde deðiþtirmek söz konusu ise ORDER BY kullanýlýr. her bir bölüm numarasýný ve bu bölümlerdeki personel sayýsýný vermektedir. burada belirtilen sütunlara göre artan sýrada olduðu varsayýlýr. SELECT BÖLÜM_NO. bölüm numarasýna göre oluþturulan grupta.htm [24.2006 21:27:24] . grup fonksiyonu içinde yer almak zorunda deðildir. Ancak grup fonksiyonlarý. GROUP BY sözcüðü olmadan aþaðýda gösterildiði biçimde. GROUP BY içinde belirtilen sütun isimleri . SELECT BÖLÜM_NO. yani her bölümün ücret ortalamalarýnýn görüntülenmesi için þöyle bir taným yapýlabilir. Böyle bir amaca ancak aþaðýda gösterildiði biçimde varýlabilir. biçiminde bir taným yapýlamaz. Örneðin. sütun isimleri ve grup fonksiyonu ile birlikte kullanýlamaz. her bölümün numarasý ve ortalama ücretlerini birlikte elde etmek için SELECT deyimi þu þekilde oluþturulabilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08055.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08055.1 GROUP BY Kullanýrken Dikkat Edilecek Noktalar SELECT deyimi içinde grup fonksiyonlarý. SELECT BÖLÜM_NO. GROUP BY ie tanýmlanan gruplarýn. SELECT listesinde yer almak zorunda deðildir.

2. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08060.htm 8.11.2 Birden Fazla Sütuna Göre Gruplama GROUP BY ile bir sütuna göre gruplama yapýlabildiði gibi.GÖREVÝ.GÖREVÝ. SUM (ÜCRET) AS TOPLAM_ÜCRET FROM PERSONEL GROUP BY BÖLÜM_NO. Örnek Her bölümü ve bölüm içindeki görevlere göre personeli gruplayarak bu bazda ücret toplamlarý elde etmek amacýyla SELECT deyimi þu þekilde düzenlenebilir.htm [24.2006 21:27:24] . birden fazla sütun için de gruplama yapýlabilir. SELECT BÖLÜM_NO.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08060.

1 Birden Fazla Sütuna Göre Gruplama file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08060_1.11.8.2.htm [24.2006 21:27:25] .

Ortalama ücreti 3500'den daha fazla olan bölümlerin bölüm numarasý ve o bölümdeki en yüksek ücret miktarý görüntülenecektir. bölüm bazýnda yapýlan bir iþlemin.2. Örnek 1 PERSONEL tablosunu göz önüne alalým. Onun yerine HAVING sözcüðü kullanýlýr. SELECT GÖREVÝ. SELECT BÖLÜM_NO. SUM(ÜCRET) AS TOPLAM FROM PERSONEL WHERE GÖREVÝ <>'PAZARLAMACI' GROUP BY GÖREVÝ HAVING SUM(ÜCRET)>5000 ORDER BY SUM(ÜCRET). bölüm ücret ortalamasýnýn 2000'den büyük ise gerçekleþtirilmesi istenebilir.3 Grup Koþullarýnýn Kullanýmý Grup iþlemleri yerine getirilirken.htm 8.2006 21:27:25] . MAX(ÜCRET) AS EN_ÇOK FROM PERSONEL GROUP BY BÖLÜM_NO HAVING AVG(ÜCRET)>3500. SELECT BÖLÜM_NO.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08065.htm (1 of 2) [24. grup koþullarý WHERE içinde tanýmlanamaz. doðal olarak grup bazýnda bazý sýnýrlamalar söz konusu olabilir. Bunun için aþaðýda gösterildiði biçimde bir taným yapýlabilir.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08065. AVG(ÜCRET) FROM PERSONEL WHERE AVG(ÜCRET)>2000 GROUP BY BÖLÜM_NO. Bu sözcük SELECT deyimi içinde þu þekilde tanýmlanýr. Amacýmýza uygun SELECT deyimi þu þekilde olabilir. Örneðin. Amacýmýza uygun SELECT deyimi þu þekilde düzenlenebilir. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz Örnek 2 PAZARLAMA bölümü dýþýnda çalýþan personeli görevlerine göre gruplandýrýlarak ücretleri toplanacak ve toplam ücreti 5000 den fazla olanlar seçilecektir. Ancak bu deyim istenildiði biçimde çalýþmayacak ve bir hatalý durumla karþýlaþýlacaktýr çünkü. Sonuçlar en düþük ücret toplamýndan büyüðe doðru sýralý olacaktýr.

htm (2 of 2) [24.11.2006 21:27:25] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08065.htm Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08065.

2006 21:27:25] .htm [24.2.3 Grup Koþullarýnýn Kullanýmý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08065_1.8.11.

8.2.3 Grup Koþullarýnýn Kullanýmý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08065_2.2006 21:27:26] .htm [24.11.

htm (1 of 2) [24. Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.2006 21:27:26] .11.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08075.

Untitled Document

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT08075.htm (2 of 2) [24.11.2006 21:27:26]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09005.htm

ÇOKLU TABLOLAR
Ýliþkisel veri tabaný yönetim sistemlerinde bazen iliþkili veriler birden fazla tablolara bölünebilir ve bu tablolarda bulunan verilere ayný anda ihtiyacýmýz olabilir. Bu gibi durumlarda ilgili tablolarý birleþtirerek sorgulama yapmak zorunda kalabiriz. Bu bölümde bu tip sorgulama yapmayý öðreneceksiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09005.htm [24.11.2006 21:27:26]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09010.htm

Bölüm Hedefi
Bu bölümde,
● ● ● ● ● ● ● ●

Sorgularda birden fazla tablo kullanýmýný Tablolarýn birleþtirilmesini Birleþtirme türlerini Eþiti olan birleþtirmeyi Eþiti olmayan birleþtirmeyi Dýþ birleþtirmeyi Kendine birleþtirmeyi Küme operatörleriyle birleþtirmeyi

öðreneceksiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09010.htm [24.11.2006 21:27:27]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09015.htm

9.1. Çoklu Tablolarýn Kullanýmý
Bazý uygulamalarda veri birden fazla tablo üzerinde yer alabilir. Bu tablo verileri birleþtirilerek sonuçlar elde edilir. Bu bölümde PERSONEL ve BÖLÜM tablolarýný bu amaçla kullanacaðýz.
● ● ●

PERSONEL_NO sütunu PERSONEL tablosu üzerindedir. BÖLÜM_NO sütunu hem PERSONEL hem de BÖLÜM tablosu üzerinde vardýr. KONUM sütunu BÖLÜM tablosundadýr.

Bu iki tablo arasýnda ortak olan BÖLÜM_NO sütunlarý aracýlýðýyla bir iliþki kurulur ve her iki tablo verilerinden oluþan bir sonuç elde edilir.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09015.htm [24.11.2006 21:27:27]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09020.htm

9.2. Tablolarýn Birleþtirilmesi

Birden fazla tablonun ele alýnarak, birleþtirilmesi ve tek bir sonucun üretilmesi söz konusu olabilir. Bu iþleme "birleþtirme" (join) denir. Birleþtirme iþlemi, tablolarýn ayný deðerler içeren sütunlarý kullanýlmak suretiyle yapýlýr. Birleþtirme iþlemi þu þekilde tanýmlanýr;

Tanýmdan görüldüðü gibi, iki tabloyu birleþtirmek için bir birleþtirme koþulunun düzenlenmesi gerekiyor. Bu koþul, her iki tablonun hangi sütunlarý kullanýlarak birleþtirileceðini belirler. Sütun isimlerinin ön tarafýna, tablo isimlerinin yazýlmasý yararlý olacaktýr. Özellikle her iki tablodaki sütun isimleri ayný ise, söz konusu sütunlarýn hangi tablodan geldiðini belirtmek mümkün olamayacak ve bu durumda SELECT deyimi çalýþmayacaktýr. Sadece iki tablo deðil n sayýda tablo da birleþtirilebilir. Ancak bu durumda en az (n-1) birleþtirme koþulu tanýmlanmalýdýr. Yani, dört adet tabloyu birleþtirmekiçin en az üç birleþtirme koþulu olmalýdýr. Bu koþul, birleþtirilmiþ birincil anahtara sahip tablolar için geçerli olmayacaktýr.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09020.htm [24.11.2006 21:27:28]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09025.htm

9.3. Kartezyen Çarpým
Ýki tablo arasýnda birleþtirme koþulu tanýmlanmamýþ ise, sonuç olarak bir kartezyen çarpým elde edilir. Bunun dýþýnda, birleþtirme koþulu geçersiz ise ve birinci tablodaki tüm satýrlar ikinci tablodaki tüm satýrlarla birleþtirilemiyorsa, yine kartezyen çarpýmdan söz edilir.

Örnek
PERSONEL ve BÖLÜM tablolarýný göz önüne alalým. Bu iki tabloyu aþaðýda görüldüðü biçimde birleþtirmek istiyoruz. SELECT PERSONEL_NO, ADI,BÖLÜM_ADI FROM PERSONEL, BÖLÜM Bu sorgu çalýþtýrýldýðýnda, PERSONEL ve BÖLÜM tablolarý birleþtirilerek bir sonuç elde edilir. Ancak, herhangi bir birleþtirme koþulu tanýmlanmadýðý için, her iki tablodaki satýrlarýn sayýsýnýn birbirleriyle çarpýmý kadar satýrdan oluþan bir sonuç elde edilir. Örneðin; PERSONEL tablosunda 20, BÖLÜM tablosunda ise 5 satýr varsa, bu þekildeki bir sorgu sonucunda 20x5=100 satordan oluþan bir sonuç bulunur.

Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09025.htm [24.11.2006 21:27:28]

2006 21:27:28] .htm [24.11.9. Kartezyen Çarpým file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09025_1.3.

! Birleþtirme türlerini diðerlerini görmek için 'DEVAM' düðmesine týklayýnýz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09030.htm [24.2006 21:27:29] .4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09030.htm 9. tablolarý birleþtirme türleri verilmiþtir. Birleþtirme Türleri Tablolarý farklý þekillerde birleþtirme olanaðý bulunmaktadýr.11. Solda. Bu birleþtirme türlerinin herbirini ayrýntýlý biçimde ele alarak inceleyeceðiz.

11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09035. BÖLÜM tablosunun BÖLÜM_NO isimli sütununun içeriði ile karþýlaþtýrýlýr.htm 9.htm [24. "eþiti olan birleþtirme" ya da "iç birleþtirme" isimleri verilmektedir.1. PERSONEL tablosu. Bu birleþtirme aþaðýda belirtildiði biçimde gerçekleþtirilir. Eþiti Olan Birleþtirme Bu tür birleþtirmelere "basit birleþtirme".2006 21:27:29] .4.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09035. Yani her iki tablo arasýndaki BÖLÜM_NO sütununun içerdiði deðerlerin eþit olmasý durumunda birleþtirme gerçekleþtirilmiþ olur. Bir personelin çalýþtýðý bölümün adýný elde etmek için.

1. FROM sözcüðü ardýndan yazýlan tablo isimleri. PERSONEL tablosunun BÖLÜM_NO sütunu içeriði ile BÖLÜM tablosunun BÖLÜM_NO sütunu içeriðinin karþýlaþtýrýlmasýna neden olacaktýr.htm [24.BÖLÜM_NO. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09040. WHERE deyimi içinde tanýmlanan koþul. SELECT listesinde belirlenen sütunlar görüntülenecektir.4. PERSONEL.PERSONEL_NO gibi. PERSONEL_ADI.2006 21:27:29] . BÖLÜM_NO ve KONUM isimli sütunlarýnýn alýnacaðý anlaþýlmaktadýr.1 Eþiti Olan Birleþtirme Ýle Kayýtlarýn Seçilmesi Eþiti olan birleþtirmelere örnek olarak aþaðýdaki sorguyu düzenliyoruz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09040. BÖLÜM tablosundan ise. Bu koþul gerçekleþtiði takdirde.11.htm 9. Bu deyim þu þekilde yorumlanacaktýr. PERSONEL_NO. Bu durumda PERSONEL tablosundan. PERSONEL tablosundan alýnan sütunlar PERSONEL ön ekiyle tanýmlanmýþtýr. bu birleþme iþlemine tabi tutulacak tablolarý belirlemektedir. Örneðin.

SQL bunu yorumlayamayacaktý çünkü. bu sütunun hangi tablodan alýnacaðý belirtilmemiþtir.htm 9. her iki tablodaki alan isimlerinin ayný olmasý durumunda sorun yaratacaktýr. tablo isimleri ile birlikte belirtilmesi zorunluluðu yoktur. Bu durumda SELECT deyimi hata mesajý verecektir.htm [24.2006 21:27:30] .1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09045.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09045. yukarýda belirtildiði gibi.4. PERSONEL. SELECT listesindeki her bir sütunun.2 Sütun Ýsimlerindeki Belirsizlik Birleþtirme iþleminde. Bu. Sadece bir tabloda yer alan sütun isimlerinin.BÖLÜM_NO ve BÖLÜM. ilgili tablo ile gösterilebildiðini gördük.BÖLÜM_NO yerine sadece BÖLÜM_NO yazýlsaydý. Örneðin.

SELECT PERSONEL.BÖLÜM_NO.PERSONEL. BÖLÜM tablosuna ise. Örnek Aþaðýdaki SELECT deyimini göz önüne alalým.ADI.BÖLÜM. SELECT deyiminin herhangi bir yerinde.3 Tablolar için Takma Ýsimlerin Kullanýmý Birleþtirme iþlemlerinde.BÖLÜM_NO. sütun isimleri ilgili tablo isimleriyle birlikte kullanýlýyordu. Özellikle uzun tablo isimlerinde bu tür sorgularý ifade etmek zorluklar yaratabilir.11.PERSONEL_NO.BÖLÜM_NO=B.BÖLÜM_NO=BÖLÜM.2006 21:27:30] .BÖLÜM B WHERE P.B.B. SELECT P.htm 9.BÖLÜM WHERE PERSONEL. Tablonun gerçek isminin hemen ardýndan bir boþluk býrakýlarak takma isim tanýmlanýr.ADI.BÖLÜM_ADI. gerçek tablo ismi yerine bu takma isim kullanýlabilir. Sorgu içinde PERSONEL tablosuna P.1.BÖLÜM_NO.KONUM FROM PERSONEL P. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09050.BÖLÜM_ADI.htm [24.4. Gerçek tablo isimleri yerine daha kýsa tablo isimleri vermek mümkündür.BÖLÜM_NO. B takma ismini vererek ayný sorguyu aþaðýda gösterildiði biçimde düzenleyebiliriz. P. PERSONEL. Bu tür bir tanýma FROM sözcüðü içinde yer verilir.PERSONEL_NO.P.KONUM FROM PERSONEL.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09050. birden fazla tablo kullanýldýðý için.BÖLÜM.

B.BÖLÜM_NO AND P. BÖLÜM B WHERE P. bölüm numarasý ve bölümünün konumunu listelemek için þöyle bir sorgu tanýmlanabilir: SELECT P.htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09055. Örneðin.4 AND Ýþlecinin Kullanýmý Birleþtirme koþuluna ek olarak.1. personel numarasý.ADI.ADI='BEGÜM'.2006 21:27:31] . BEGÜM isimli personelin.BÖLÜM_ADI. WHERE sözcüðü içinde baþka koþullara da yer verilebilir.4. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09055.P.B.htm 9.KONUM FROM PERSONEL P.11.PERSONEL_NO. adý.BÖLÜM_NO=B.

Eþiti Olmayan Birleþtirme Eþiti olan birleþtirmelerde. birinci tablonun bir sütununa ikinci tabloda doðrudan uyan bir sütun yoksa. eþiti olan birleþtirme yoluyla birleþtirmek mümkün deðildir.htm (1 of 2) [24.2006 21:27:31] . Eðer.2. Ücret gruplarý ÜCRET_DÜZEY tablosu içinde tanýmlanmýþtýr. Çünkü PERSONEL tablosu ile ÜCRET_DÜZEY arasýnda bu tür bir iliþkiyi saðlayacak ortak bir sütun yoktur.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09060. iki tablonun belirlenen iki sütununun içeriði karþýlaþtýrýlýyor ve her iki sütunda ayný deðerle karþýlaþýnca ilgili bilgiler listeleniyordu.11. Bu iki tabloyu.4. PERSONEL tablosundaki her bir personelin ücretlerinin hangi ücret grubuna girdiðini öðrenmek istiyoruz. Bu tür bir birleþtirmeyi saðlamak için WHERE sözcüðü içinde (=) iþleci yerine BETWEEN…AND iþlecinden yararlanýlýr. eþiti olmayan birleþtirmelerden söz edilir. Örnek Yukarýdaki animasyonda bulunan PERSONEL ve ÜCRET_DÜZEY tablolarýný göz önüne alalým.htm 9. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09060.

ÜCRET.11. "<=.>=" iþleçleri de kullanýlabilir.DERECE FROM PERSONEL.htm (2 of 2) [24. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09060.htm SELECT ADI.2006 21:27:31] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09060. Karþýlaþýlan problemin türüne göre BETWEEN iþleci yerine.ÜCRET_DÜZEY WHERE ÜCRET BETWEEN ENAZ AND ENÇOK.

11. Eþiti Olmayan Birleþtirme file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09060_1.2.4.2006 21:27:31] .9.htm [24.

dýþ birleþtirme yöntemi uygulanýr. Bu iki tablo incelendiðinde.htm [24. BÖLÜM tablosunda yer alan REKLAM bölümünde herhangi bir personelin çalýþmadýðý görülecektir. Ýki tablo. Dýþ Birleþtirme Eþiti olan birleþtirmelerde.3. bir tablonun bir sütununun içerdiði deðerler.htm 9. Böyle durumlarda eþleþmeyen kayýtlarý da birleþtirme iþlemine katmak için.2006 21:27:32] . sonuç içinde bu bölüm adý görüntülenmeyecektir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09065. eþleþemeyen satýrlar birleþtirilemeyecek ve sonuca dahil edilemeyecektir.4. PERSONEL ve BÖLÜM tablolarýnýn aþaðýda gösterildiði biçimde olduðunu varsayalým. Örneðin.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09065. Eðer bu þekilde eþleþemeyen kayýtlarýn da sonuca dahil edilmesi isteniliyorsa.11. dýþ birleþtirme yönteminin uygulanmasý gerekecektir. eþiti olan birleþtirme yöntemine göre birleþtirilirse. Doðal olarak. diðer tablonun ilgili sütununda eþleþtiriliyor ve ancak eþleþebilen deðerler birleþtiriliyordu.

Bilgi eksikliði PERSONEL tablosundadýr çünkü.BÖLÜM_NO = P. dýþ birleþme olayýnýn olduðunu göstermektedir. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09070.ADI.ADI.sütun1.BÖLÜM_NO.sütun2 FROM tablo1. BÖLÜM tablosunda yer alan.htm [24.sütun1(+)=tablo2. Bu iki tabloyu.3. B.BÖLÜM_ADI FROM PERSONEL P. BÖLÜM tablosunda yer alan REKLAM satýrý. tablo2. Bu iþlemin aynýsýný MS Jet SQL'de gerçekleþtirmek için biraz daha farklý taným yapmak gerekiyor. PERSONEL tablosunda yoktur.sütun1. Bunun için aþaðýdaki yol izlenir: SELECT P.4.B.BÖLÜM_NO.sütun2 FROM tablo1. tablo2 WHERE tablo1.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09070.1 Dýþ Birleþtirme Nasýl Tanýmlanýr ? Dýþ birleþtirmeler.BÖLÜM_ADI FROM BÖLÜM B LEFT JOIN PERSONEL P ON B.sütun1=tablo2.sütun2(+) Tanýmda (+) iþaretlerinin yer almasý. tablo2.sütun2 veya SELECT tablo1.2006 21:27:32] .BÖLÜM_NO. eþleþmeyen kayýtlar hangi tabloda yer alýyorsa ona baðlý olarak iki farklý biçimde düzenlenebilir: SELECT tablo1. Bu iþaret eksik bilginin olduðu tarafa yerleþtirilir.P.BÖLÜM_NO(+)=B.BÖLÜM B WHERE P.11. ancak PERSONEL tablosunda yer almayan ve REKLAM bilgisini içeren bir satýr bulunmaktadýr. O halde (+) iþareti. SELECT P. karþýlaþmayan kayýtlarý da görüntüleyecek biçimde birleþtirmek ve sonucu listelemek istiyoruz. Bu tür bir dýþ birleþme için LEFT JOIN…ON sözcükleri kullanýlýr.htm 9. PERSONEL tablosunun ilgili sütunu yanýnda tanýmlanmýþtýr. tablo2 WHERE tablo1. Örnek PERSONEL ve BÖLÜM tablolarýný göz önüne alalým.

3.11.9.htm [24.4.1 Dýþ Birleþtirme Nasýl Tanýmlanýr ? file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09070_1.2006 21:27:33] .

iki farklý tablo biçiminde düþünebiliriz. Örnek PERSONEL tablosunun YÖNETÝCÝSÝ baþlýklý sütunu.PERSONEL_NO=P. personel numarasýný içermektedir. her bir personelin yöneticisinin.htm 9. Y.4. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09075.PERSONEL_NO AS NO. Örneðin.4. P.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09075. Bu amaçla SELECT deyimi þu þekilde düzenlenebilir: SELECT P.ADI AS PERSONEL.htm [24.11. Kendine Birleþtirme Bazý uygulamalarda birleþtirme iþlemi. iki ayrý tablo yerine tek bir tablodaki veriler kullanýlarak yapýlýr. PERSONEL Y WHERE Y. Hangi yöneticilerin hangi personel ile çalýþtýðýný belirlemek istiyoruz. PERSONEL tablosunu aþaðýda görüldüðü gibi.2006 21:27:33] .ADI AS YÖNETÝCÝSÝ FROM PERSONEL P. Böylece bu iki tabloyu birleþtirerek çeþitli sonuçlar elde etmek imkânýmýz vardýr.YÖNETÝCÝSÝ.

htm [24.2006 21:27:33] .4.4.11. Kendine Birleþtirme file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09075_1.9.

Küme Ýþleçlerini Kullanarak Birleþtirme SQL deyimleri içinde küme iþlemlerini temel alarak.htm [24. çeþitli sorgulamalar yapýlabilir. Küme iþleçleri sayesinde birden fazla tablo birleþtirilerek sonuçlar alýnabilir.11. ! Birleþtirme türlerini diðerlerini görmek için 'DEVAM' düðmesine týklayýnýz.htm 9. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09080.2006 21:27:34] .5. Bu tür sorgularda küme iþleçlerinden yararlanýlýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09080.

Bunlardan birincisi.1. Burada iki ayrý koþuldan söz edilebilir. Union Ýþlecinin Etkisi file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09085. çift kayýtlar görüntülenmez.htm [24. tüm kayýtlarýn seçilmesi söz konusu ise.11. Ýkincisi ise. UNION ve UNION ALL Ýþleçleri UNION iþleci. Eðer çift kayýtlarýn da görüntülenmesi isteniliyorsa.5.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09085. Buna karþýlýk. Örnek PERSONEL tablosunda. SELECT deyimi þu þekilde düzenlenir: SELECT ADI.2006 21:27:34] . verilen koþul ifadesine uygun olarak çift kayýtlar da dahil olmak üzere. UNION iþlecinin kullanýlmasý gerektiði anlaþýlmaktadýr. A={Adý "A" harfi ile baþlayan personel} B={Görevi "M" harfi ile baþlayan personel} Bu durumda sorgu içinde. Bu deyim çalýþtýrýldýðýnda. görevi "M" harfi ile baþlayanlarýn oluþturduðu kümedir. GÖREVÝ FROM PERSONEL WHERE ADI LIKE 'A%' UNION SELECT ADI. UNION ALL iþleci kullanýlýr. adý "A" ile baþlayanlarý veya görevi "M" ile baþlayanlarý topluca listelemek istiyoruz. UNION ALL iþleci kullanýlýr.htm 9. GÖREVÝ FROM PERSONEL WHERE GÖREVÝ LIKE 'M%'. verilen koþul ifadesine uygun olarak çift kayýtlarý göz ardý eder ve her iki kümedeki tüm kayýtlarý seçer. adýnýn ilk harfi "A" ile baþlayan personelin oluþturduðu kümedir. birbirinin ayný olan yani.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09090.5. INTERSECT Ýþleci Her iki koþula da uygun kayýtlarý elde etmek için. INTERSECT Ýþlecinin Etkisi file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09090. Örnek PERSONEL tablosunda.htm [24. Bu iþleç. adý "A" ile baþlayanlarý ve görevi "M" ile baþlayan kayýtlarý bulacaðýz.htm 9.2006 21:27:34] . GÖREVÝ FROM PERSONEL WHERE GÖREVÝ LIKE 'M%'. Amacýmýza uygun SELECT deyimi þu þekilde olabilir: SELECT ADI.2.11. iki kümenin ara kesiti olarak düþünülür ve iki bölgedeki kayýtlarýn seçilmesini saðlar. INTERSECT iþleci kullanýlýr. GÖREVÝ FROM PERSONEL WHERE ADI LIKE 'A%' INTERSECT SELECT ADI.

5. ikinci kümede olmayan kayýtlarý seçmek amacýyla. "M" ile baþlamayan kayýtlarý listelemek gerektiðinde. Örnek Adý "A" ile baþlayan ancak iþi. GÖREVÝ FROM PERSONEL WHERE GÖREVÝ LIKE 'M%'. MINUS iþlecinden yararlanýlabilir. MINUS Ýþleci Birinci kümede olan. MINUS Ýþlecinin Etkisi file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09095.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09095.htm [24. birinci sorguda ismi "A" ile baþlayanlar.2006 21:27:35] . "M" ile baþlayanlar aranýlacaktýr. MINUS iþlecine baþvurulur.3. ikinci sorguda da iþi. A={Adý "A" harfi ile baþlayanlar} B={Görev adý "M" harfi ile baþlayanlar} Amacýmýza uygun SELECT deyimi þu þekilde düzenlenebilir: SELECT ADI. bu iki küme arasýndaki farký ortaya çýkaracaktýr.htm 9. Bunun anlamý.11. GÖREVÝ FROM PERSONEL WHERE ADI LIKE 'A%' MINUS SELECT ADI. MINUS iþleci.

11.2006 21:27:35] . Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09105.htm (1 of 2) [24.

Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT09105.2006 21:27:35] .11.htm (2 of 2) [24.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10005.htm KARMAÞIK SORGULAR Veri Tabaný Yönetim Sistemleri.2006 21:27:36] . Karmaþýk sorgularý yazarken.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10005. Veri iþlemek için sorgulama yapmak esastýr.11. verilerin düzenli bir þekilde depolanýp gerektiði þekilde iþlenmelerini saðlar. belirli kurallara göre ve dikkatli hareket etmemiz gerekir. Bu bölümde incelediðimiz ve vurguladýðýmýz kurallara uymak. Bazen istediðimiz sonuçlarý veri tabanýmýzdan almak için karmaþýk sorgular yazmak zorunda kalabiliriz.htm [24. karmaþýk sorgularýmýzýn bize doðru çýktýlar vermesini saðlayacaktýr.

Çok satýrlý alt sorgularý. ● ● ● ● ● ● Alt sorgu kavramýný. Tek satýr alt sorgularýný. From sözcüðü içinde alt sorgu tanýmlamayý öðreneceksiniz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10010. Çok sütunlu alt sorgularý.2006 21:27:36] .11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10010.htm Bölüm Hedefi Bu bölümde.htm [24. Alt sorgu düzenleme kurallarýný.

htm [24. Alt Sorgu Kavramý Þu ana kadar ele alarak incelediðimiz tüm sorgular. önceki bölümde öðrendiðimiz iþleçler yardýmýyla yapýlan birleþtirmeler dýþýnda.11.htm 10. bir diðer sorguyu ilgilendirebilir. tek bir ana sorgudan oluþuyordu.1. Dolayýsýyla. Bu gibi durumlarda alt sorgular ya da bir baþka deyiþle iç sorgular kullanýlýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10015. bir sorgudan elde edilen sonuç. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10015. "HALÝT" isimli personelin ücretinden daha fazladýr? Yukarýdaki iki sorguyu aþaðýdaki þekilde analiz ederek bir sorgu biçimine döndürebiliriz.2006 21:27:36] . Alt sorgular bu amaçla tanýmlanýr. "HALÝT" isimli personelin ücretinden daha fazladýr?" Bu problemi iki farklý sorguya ayýrmak mümkündür: Sorgu 1: "HALÝT" isimli personelin aylýk ücreti nedir? Sorgu2: Hangi personelin ücreti. Uygulamada. Þu soruyu göz önüne alalým: "Hangi personelin ücreti. sorgu içinde sadece bir SELECT deyimine yer veriliyordu.

aþaðýdaki sözcükler içinde kullanýlabilir: ● ● ● WHERE HAVING FROM Örnek Personel numarasý "110" olan personelin ücretinden daha fazla ücret alan personel isimlerini listelemek istiyoruz. þöyle bir yol izlenecektir: a. "5000" dir.11. b. Tanýmda görüldüðü gibi.2006 21:27:37] .1. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10020.htm [24. Bu ücret. Alt sorgu Personel numarasý "110" olan personelin ücretini bulacaktýr. Bu iki sorgu birbirine WHERE koþul sözcüðü içinde baðlanmýþtýr. iki SELECT deyimi ile bir farklý sorgu tanýmlanmýþtýr. Alt Sorgunun Tanýmlanmasý Bir alt sorgu aþaðýda gösterildiði biçimde tanýmlanýr: SELECT liste FROM tablo WHERE ifade iþleç (SELECT liste FROM tablo).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10020. Amacýmýza uygun SELECT deyimi þu þekilde olabilir: SELECT ADI. Bir alt sorgu.ÜCRET FROM PERSONEL WHERE ÜCRET > ( SELECT ÜCRET FROM PERSONEL WHERE PERSONEL_NO=110 ).htm 10. Bu sorgu çalýþtýrýldýðýnda. Yani ana sorgunun WHERE koþulu þu þekli almýþ olacaktýr: WHERE ÜCRET > 5000 c. Yani ücreti "5000" den fazla olan personelin listesi görüntülenir. Ana sorgu bu þekilde çalýþýr.1. Elde edilen ücret bilgisi ana sorgudaki WHERE sözcüðü içinde yerine konulacaktýr.

1.htm [24.1.2006 21:27:37] .10. Alt Sorgunun Tanýmlanmasý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10020_1.11.

2006 21:27:38] .11.1.htm 10.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10025. Alt Sorgu Düzenleme Kurallarý Alt sorgular düzenlenirken aþaðýdaki kurallara uymak gerekmektedir: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10025.2.htm [24.

Ana sorgu ise görevi "ÞEF" olanlarý sorgular.ÜCRET FROM PERSONEL WHERE GÖREVÝ = (SELECT GÖREVÝ FROM PERSONEL WHERE PERSONEL_NO=155) AND ÜCRET> (SELECT ÜCRET FROM PERSONEL WHERE PERSONEL_NO=350).2006 21:27:38] . Örnek Personel numarasý "140" olan personelle ayný göreve sahip olan personelin isimlerini listelemek istiyoruz. Bu sorgularda soldaki animasyonda yer alan iþleçler kullanýlýr.htm 10. Bu sorgu çalýþtýrýldýðýnda. Örnek Personel numarasý "155" olan personelle ayný göreve sahip olan ve "350" numaralý personelin ücretinden daha fazla ücret alan personeli listelemek istiyoruz. alt sorgu sonucunda "140" numaralý personelin görevi.GÖREVÝ.GÖREVÝ FROM PERSONEL WHERE GÖREVÝ = (SELECT GÖREVÝ FROM PERSONEL WHERE PERSONEL_NO=140).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10030. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10030. SELECT ADI.2.11. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz ! Karþýlaþtýrma Ýþleçleri ve anlamlarý görmek için 'DEVAM' düðmesine týklayýnýz.htm [24. Ýç taraftaki SELECT deyiminden sadece tek bir deðer elde edilir. Amacýmýza aþaðýdaki sorgu yardýmýyla ulaþabiliriz: SELECT ADI. yani "ÞEF" deðeri elde edilir. Tek Satýr Alt Sorgularý Sadece bir deðer döndüren alt sorgulardýr.

htm [24.2.11.10. Tek Satýr Alt Sorgularý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10030_1.2006 21:27:38] .

10. Tek Satýr Alt Sorgularý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10030_2.2.11.2006 21:27:39] .htm [24.

Bu sorgu doðal olarak alt sorgularla yapýlabilir.1.2006 21:27:39] . Amacýmýza uygun SELECT deyimi þu þekilde olabilir: SELECT ADI.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10035.ÜCRET FROM PERSONEL WHERE ÜCRET = (SELECT MIN(ÜCRET) FROM PERSONEL). Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10035.htm [24.11.htm 10. bu tür fonksiyonlar tek satýr alt sorgularýnda kullanýlabilir.2. bulunan deðer ana sorgu içinde bu ücrete göre seçilecektir. Grup Fonksiyonlarýnýn Kullanýmý Grup fonksiyonlarý sadece bir deðer döndürdüðü için. Örnek Personel arasýnda en az ücret alanlarý listelemek istiyoruz. Önce alt sorgu içinde en az ücret alan personel belirlenecek.

1.htm [24. Grup Fonksiyonlarýnýn Kullanýmý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10035_1.11.2.10.2006 21:27:39] .

HAVING ile Grup Koþullarýnýn Tanýmlanmasý Ana sorgu grup fonksiyonu içeriyorsa. diðer tüm bölümlerin en düþük ücretleriyle karþýlaþtýrýlacak c) Eðer bu deðer bölümlerin en düþük ücretlerinden daha küçük ise ilgili bölüm listelenecektir. doðal olarak grup koþullarýnýn tanýmlanmasý gerekebilecektir. Amacýmýza ulaþmak için þu þekilde bir akýl yürüteceðiz: : a) "20" numaralý bölümün en az ücret alan personeli belirlenecektir. Yani HAVING sözcüðü de kullanýlacaktýr. Bu durumda SELECT deyimi þu þekli alacaktýr: SELECT liste FROM tablo GROUP BY sütun HAVING fonksiyon iþleç (SELECT fonksiyon FROM tablo).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10040.htm (1 of 2) [24. Belirtilen bu adýmlara uygun SELECT deyimi þu þekilde olabilir: SELECT BÖLÜM_NO.11.2.2006 21:27:40] . Örnek En düþük ücreti "20" numaralý bölümün en düþük ücretinden daha büyük olan bölümleri listelemek istiyoruz.htm 10. b) Bulunan bu deðer.2.MIN(ÜCRET) AS ENAZ_ÜCRET FROM PERSONEL GROUP BY BÖLÜM_NO HAVING MIN(ÜCRET) > (SELECT MIN(ÜCRET) file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10040.

2006 21:27:40] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10040.htm (2 of 2) [24.htm FROM PERSONEL WHERE BÖLÜM_NO=20).11. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10040.

11.htm [24. HAVING ile Grup Koþullarýnýn Tanýmlanmasý file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10040_1.2.2006 21:27:40] .2.10.

ADI FROM PERSONEL WHERE ÜCRET > (SELECT MIN(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO). Alt sorgudan sadece bir deðer beklemektedir. Örnek Aþaðýdaki alt sorguyu göz önüne alalým. amaca ulaþýlamayacaktýr. sadece bir deðer üreterek.2.3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10045. SELECT PERSONEL_NO. Ancak ana sorgunun WHERE sözcüðü içinde kullanýlan (=) iþleci bir tek satýr iþlecidir. Yani birden fazla satýr listelenecektir. Bu tür alt fonksiyonlar. çoklu satýr alt sorgularýný tanýmlamak gerekiyor.ADI FROM PERSONEL WHERE ÜCRET > (SELECT MIN(ÜCRET) FROM PERSONEL).htm [24.htm 10. Bu durum gerçekleþmediði için SELECT deyimi bir hata mesajý görüntüleyerek iþlemi sonlandýrýr. Çünkü alt sorgu gruplandýrýlmýþtýr ve doðal olarak grup fonksiyonu herbir grup için bir deðer üretir. Alt Sorgularda Hatalý Çalýþma Durumu Tek satýr alt sorgularýnýn yapýsýný ve özelliklerini biliyoruz. Eðer alt sorgu tek satýrlý alt sorgu olarak düþünülüyorsa. Eðer alt sorgunun birden fazla deðer üretmesi söz konusu ise. onu ana sorguya aktarýr. Bu sorgu çalýþtýrýldýðýnda. Ayný sorgu þu þekilde düzenlenseydi hata durumu ortaya çýkmayacaktý: SELECT PERSONEL_NO.2006 21:27:41] .11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10045. Aksi takdirde söz konusu sorgu çalýþmaz. bunu bozabilecek tanýmlardan kaçýnmak gerekiyor.

htm 10. Aþaðýdaki animasyonda çoklu satýr iþleçlerine yer veriyoruz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10050.htm [24.11.3. Yukarýda sayýlan iþleçlerden hiçbiri NOT iþleci ile birlikte kullanýlamaz! file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10050. bu kez sorgu bir çoklu satýr alt sorgularý olarak deðerlendirilir. Ancak bu tür sorgular farklý iþleçler yardýmýyla gerçekleþtirilir. daha fazla sayýda satýr elde ediliyorsa. Çok Satýrlý Alt Sorgular Alt sorgudan bir satýr yerine.2006 21:27:41] .

biçimindeki bir sorgu.2006 21:27:41] .2500.GÖREVÝ FROM PERSONEL WHERE ÜCRET IN(2000. alt sorgularda da gerçekleþtirilebilir. Bu tür bir iþlem.ÜCRET.1. SELECT ADI. IN iþleci ile belirlenen listedeki deðerlerle karþýlaþtýrýlmalarýný saðlýyordu. ÜCRET sütunu içeriðinin. Bu tür bir iþlem.3000).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10055. Örneðin. IN iþleci ile belirlenen listedeki deðerlerle karþýlaþtýrýlmalarýný saðlýyordu. SELECT ADI.3.htm [24. alt sorgularda da gerçekleþtirilebilir. ÜCRET.GÖREVÝ FROM PERSONEL WHERE ÜCRET IN( SELECT MIN(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO). Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10055.htm 10. biçimindeki bir sorgu. IN Ýþleci Bir liste içindeki deðerlerden birini seçmek için IN iþlecini kullanýyorduk. Örnek Bir liste içindeki deðerlerden birini seçmek için IN iþlecini kullanýyorduk.11. Örneðin. ÜCRET sütunu içeriðinin.

10.2006 21:27:42] .3.htm [24. IN Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10055_1.1.11.

Amacýmýza uygun sorgu þu þekilde olabilir. Bu iþleç "=.<.GÖREVÝ FROM PERSONEL WHERE ÜCRET <ANY( SELECT ÜCRET FROM PERSONEL WHERE GÖREVÝ='MEMUR'). Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz Örnek En düþük ücretli MEMUR dan daha fazla maaþý olan personeli listelemek için aþaðýda belirtilen yol izlenebilir: SELECT ADI.11. SELECT ADI.>" iþleçlerinden biri ile birlikte kullanýlýr.htm 10. "=ANY" biçimindeki bir taným IN tanýmý ile eþdeðerdir.3. ">ANY" ise "en azdan daha büyük" anlamýnda deðerlendirilir. "<ANY" ifadesi "en çoktan daha az".ÜCRET.ÜCRET. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10060. ANY Ýþleci Alt sorgu tarafýndan üretilen herbir deðeri ana sorgu içinde belirlenen bir deðerle karþýlaþtýrmak söz konusu ise ANY iþleci kullanýlýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10060.2006 21:27:42] .GÖREVÝ FROM PERSONEL WHERE ÜCRET >ANY( SELECT ÜCRET FROM PERSONEL WHERE GÖREVÝ='MEMUR'). Örnek En fazla kazanan MEMUR dan daha az maaþý olan personeli listelemek istiyoruz.htm [24.2.

11. ANY Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10060_1.3.2.10.2006 21:27:43] .htm [24.

Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10065. ALL Ýþleci Alt sorgu tarafýndan üretilen tüm deðerlerin. Amacýmýza uygun sorgu þu þekilde olabilir: SELECT ADI. ana sorgu için bir girdi olarak kullanýlmasý söz konusu ise ALL iþleci kullanýlabilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10065.3.3.11. Örnek Ücreti tüm bölümlerin ortalama ücretinden daha büyük olan personellerii listelemek istiyoruz. ">ALL" ifadesi "en büyükten daha büyük".ÜCRET FROM PERSONEL WHERE ÜCRET >ALL( SELECT AVG(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO). "<ALL" ise "en küçükten daha küçük" olanlarý ifade eder.htm 10.htm [24.2006 21:27:43] .

2006 21:27:43] .3.htm [24.3.10.11. ALL Ýþleci file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10065_1.

.11. ADI. Böyle durumlarda aþaðýda belirtildiði biçimde sorgu tanýmlanýr. ana sorgu için bir girdi olarak kullanýlýyordu. Bu tür bir taným MS Access'de.ÜCRET FROM PERSONEL WHERE ADI='SEZÝN'). Çok Sütunlu Alt Sorgular Önceki bölümde.ÜCRET FROM PERSONEL WHERE ADI='SEZÝN') AND ADI<>'SEZÝN'.2006 21:27:44] .ÜCRET FROM PERSONEL WHERE (GÖREVÝ. alt sorgunun ürettiði bir sütun.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10070. Örnek "SEZÝN" isimli personelin görevi ve ücretiyle ayný olan personeli listelemek istiyoruz. ADI. FROM tablo WHERE koþul ). Bazý uygulamalarda alt sorgunun birden fazla sütun üretmesi ve koþul içinde bu deðerlerin kulanýlmasý söz konusu olabilir. Ancak bu sorguya "SEZÝN" in kendi bilgileri de dahil edilmiþtir. sütun2..ÜCRET) IN (SELECT GÖREVÝ... Sorgu þu þekilde düzenlenebilir: SELECT BÖLÜM_NO... sütun2.htm [24.ÜCRET) IN (SELECT GÖREVÝ.ÜCRET FROM PERSONEL WHERE (GÖREVÝ. IN ( SELECT sütun1. Dahil edilmesi istenmiyorsa þu þekilde bir taným yapýlýr: SELECT BÖLÜM_NO. yani MS Jet SQL'de geçerli deðildir.htm 10. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10070.4. SELECT liste FROM tablo WHERE sütun1.

Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10075.AVG(ÜCRET) AS MAAÞ FROM PERSONEL GROUP BY BÖLÜM_NO) S WHERE P.BÖLÜM_NO AND P. Amacýmýza uygun sorgulama þu þekilde olabilir: SELECT P. FROM içinde bu sorgu yer alabilir.5. Örnek Bir bölümün ortalama ücretinden daha fazla ücret alan tüm personelin ortalama ücretlerini listelemek istiyoruz.htm 10. S.ÜCRET. Ancak gerektiðinde bir alt sorgunun sonuçlarý da týpký bir tablo gibi deðerlendirilerek.BÖLÜM_NO=S.MAAÞ FROM PERSONEL P.2006 21:27:44] . Bu sorgu bölümlerin ücret ortalamalarýný üretmektedir.MAAÞ.P. PERSONEL tablosu yanýsýra bir alt sorgu tanýmlanmaktadýr. P.htm [24. Bu sorgu týpký bir tablo gibi düþünülerek ona S adý verilmiþtir. FROM Sözcüðü Ýçinde Alt Sorgu Tanýmlama Normal olarak bir SELECT deyiminde kullanýlabilecek tablolar.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10075.11.ADI. yani veri kaynaðý FROM sözcüðü içinde tanýmlanýr. Burada.ÜCRET>S.(SELECT BÖLÜM_NO.BÖLÜM_NO.

10.5. FROM Sözcüðü Ýçinde Alt Sorgu Tanýmlama

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10075_1.htm [24.11.2006 21:27:45]

Untitled Document

Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz. Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10085.htm (1 of 2) [24.11.2006 21:27:45]

Untitled Document

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT10085.htm (2 of 2) [24.11.2006 21:27:45]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11005.htm

DML (Data Manipulation Language)
Veri Tabaný Yönetim Sistemlerinin tablolarýnda yer alan kayýtlarý; deðiþtirmek, silmek ve yeni kayýtlar eklemek için SQL dilinin bir alt dili olan DML'i kullanabiliriz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11005.htm [24.11.2006 21:27:45]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11010.htm

Bölüm Hedefi
Bu bölümde,
● ● ● ● ● ●

DML'in hangi iþlere yaradýðýný, Tablolara yeni satýr eklemeyi, Tablolardaki verilerin güncelleþtirilmesini, Tablodan satýr silme iþlemini, Hareket iþleme kavramýný, Hareketin baþlatýlmasý ve sona erdirilmesini

öðreneceksiniz.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11010.htm [24.11.2006 21:27:46]

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11015.htm

11.1. DML Nedir ?

SQL'de SELECT deyimi ile sorgulama iþlemleri yapýlýyordu. Bunlarý önceki bölümlerde ayrýntýlý biçimde ele alarak inceledik. Bu tür iþlemler, sadece sorgulama yapar. Tablolar üzerinde herhangi bir deðiþikliðe yol açmaz. Eðer bir tabloya yeni kayýt ilave edilmesi, var olan bir satýr üzerinde deðiþiklikler yapýlmasý veya bir satýrýn yok edilmesi söz konusu ise, sorgulama deyimleri bir iþe yaramaz. Onun yerine baþka yöntemlere baþvurmak gerekir. DML-(Data Manipulation Lanquage) adý verilen dil yardýmýyla; veri tabaný tablolarý üzerinde kayýt ekleme, veri deðiþtirme ve kayýt silme gibi iþlemler yapýlabilir. Bu bölümde söz konusu dilin temel özelliklerini inceleyeceðiz.

!

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11015.htm [24.11.2006 21:27:46]

Herbir sütuna girilecek yeni deðerler. Bu deyim aþaðýda gösterildiði biçimde tanýmlanýyor: INSERT INTO tablo (sütunlar) VALUES (deðerler).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11020. Tabloya Satýr Ekleme Bir tabloya yeni bir satýr eklemek gerektiðinde INSERT INTO deyimi kullanýlýr.11. Örnek BÖLÜM tablosunun aþaðýda görüldüðü biçimde 6 adet kayýta sahip olduðunu varsayalým: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11020. Bu deyim her çalýþtýðýnda tabloya yeni bir satýr eklenir.htm 11.2. Ancak. bu durumda sütunlarýn tablo tanýmýndaki varsayýlan sýrasý kabul edilir. tablo sütunlar deðerler Kayýt ekleme iþleminin yapýlacaðý tablonun adý. INSERT INTO deyimi içinde sütun isimlerini belirlemek zorunlu deðildir.htm (1 of 2) [24. Eklenecek satýrlarýn sütun isimleri.2006 21:27:47] .

'EÐÝTÝM'. Eklenecek yeni bölüm ile ilgili veriler þu þekildedir: Bölümün numarasý Bölümün adý Bölümün konumu : : : 70 EÐÝTÝM KADIKÖY Söz konusu bir kayýtý eklemek için aþaðýdaki deyim kullanýlýr: INSERT INTO BÖLÜM(BÖLÜM_NO.11. tablonun en sonuna söz konusu kayýtýn eklendiði görülür.BÖLÜM_ADI. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11020.htm Yukarýda olduðu gibi. Bu þekilde kayýt ekleme iþlemi gerçekleþtirildikten sonra. BÖLÜM tablosu yeniden görüntülenirse. herhangi bir tablonun satýrlarýný nasýl görüntüleyeceðimizi geçen derslerden biliyoruz.2006 21:27:47] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11020.KONUM) VALUES(70. Bu iþlem aþaðýda belirtildiði biçimde SELECT sorgulama deyimi ile yapýlýr: SELECT * FROM BÖLÜM.htm (2 of 2) [24.'KADIKÖY'). Bu tabloya yeni bir bölüm eklemek istiyoruz.

Sütun adý belirtilmez.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11025. a. Birinci yöntemde. iki yöntemden biri kullanýlabilir. Ýkinci yöntemde ise.'BÝLGÝ ÝÞLEM'.htm 11. NULL Deðerlerin Tabloya Eklenmesi Tablonun bir sütununa NULL deðerin girilmesi gerekebilir. INSERT INTO BÖLÜM VALUES(80. Örnek BÖLÜM tablosuna yeni bir kayýt ekleyeceðiz. Eklenecek satýrda KONUM sütununa NULL deðerini atamak için INSERT INTO deyimi aþaðýda belirtilen biçimlerde kullanýlabilir. Sütuna NULL deðeri kaydedilir. Bu gibi durumlarda.1.2006 21:27:47] .NULL).11. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11025.htm [24.2. b. INSERT INTO deyimi içinde NULL deðeri girilecek sütun adý belirtilmez. INSERT INTO BÖLÜM(BÖLÜM_NO.BÖLÜM_ADI) VALUES(80.'BÝLGÝ ÝÞLEM'). söz konusu sütuna doðrudan NULL deðeri atanýr.

NULL Deðerlerin Tabloya Eklenmesi file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11025_1.11.11.htm [24.1.2006 21:27:47] .2.

'SERAY'.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11030. GÝRÝÞ_TAR.2006 21:27:48] .ADI. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11030. SYSDATE.GÖREVÝ.30).2800.NULL.ÜCRETÝ.'MEMUR'. GÝRÝÞ_TAR isimli alana o günün tarih ve zaman bilgisini kaydetmek için þöyle bir yol izlenebilir: INSERT INTO PERSONEL(PERSONEL_NO.2. Tablolara Satýr Eklerken Fonksiyonlarýn Kullanýmý INSERT INTO deyimi içinde bazý özel deðerlerin girilmesi söz konusu ise.2. SQL fonksiyonlarý kullanýlabilir.BÖLÜM_NO) VALUES(600. Örnek PERSONEL tablosuna yeni bir kayýt ekleme esnasýnda.htm 11.KOMÝSYON.htm [24.

BÖLÜM_NO FROM PERSONEL WHERE GÖREVÝ='MÜDÜR' OR GÖREVÝ='ÞEF'. GÖREVÝ.ÜCRET.11. bir diðer tabloya eklemek için aþaðýda belirtilen taným kullanýlýr: INSERT INTO tablo (sütunlar) alt sorgu. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11035.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11035.ADI. O nedenle.ÜCRET.2.3. Bu durumda VALUES sözcüðü kullanýlmaz. Bir tablodan satýr okuyarak. Bir Diðer Tablodan Satýr Kopyalama INSERT INTO deyimi ile. Bir tablodan bir baþka tabloya kayýt ekleme Örnek YÖNETÝCÝLER isimli bir tabloya.BÖLÜM_NO) SELECT PERSONEL_NO. tabloya belirlenen deðerleri içeren bir satýr eklenebildiði gibi.ADI. Alt sorgudan elde edilecek sütunlar ile INSERT INTO içinde tanýmlanan sütunlar karþýlýklý eþleþecektir. ayný veri türüne sahip olmalarýna dikkat etmek gerekiyor. Amacýmýza uygun deyimler þu þekilde olacaktýr: INSERT INTO YÖNETÝCÝLER(PERSONEL_NO.2006 21:27:48] . Diðer tablodan satýrlarý okumak için SELECT sorgulama deyimi kullanýlýr.htm 11. PERSONEL tablosunda yer alan ve görevi "MÜDÜR" veya "ÞEF" olanlarý seçerek eklemek istiyoruz. bir baþka tablodan okunan satýrlar da eklenebilir. GÖREVÝ.htm [24.

htm [24.2006 21:27:49] .11.2.3. Bir Diðer Tablodan Satýr Kopyalama file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11035_1.11.

3 Tablodaki verileri güncelleme Bir tablonun içerdiði deðerler gerektiðinde deðiþtirilecektir. Verilerin güncelleþtirilmesi için WHERE deyimi ile bir koþul tanýmlanabilir. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11040.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11040. Bunu saðlamak için þöyle bir yol izlenir: UPDATE PERSONEL SET ÜCRET=2500 WHERE PERSONEL_NO=300.htm [24.… [WHERE koþul]. Bu tanýmýn yapýlmadýðý durumlarda. söz konusu tablonun tüm satýrlarý güncelleþtirilmiþ olacaktýr. Bu deyim þu þekilde tanýmlanýr: UPDATE tablo SET sütun1=deðer1.2006 21:27:49] . Örnek Personel numarasý "300" olan personelin ücretini "2500" olarak deðiþtirmek istiyoruz.htm 11. sütun2=deðer2.11. Bu amaçla UPDATE deyiminden yararlanýlýr.

2006 21:27:49] .3.htm [24.11. Tablodaki Verileri Güncelleme file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11040_1.11.

11.1.htm 11. Bir tablodan okunan verilerle diðerini güncelleme Örnek Numarasý "350" olan personel ile ayný göreve sahip tüm personelin bölüm numarasýný.3. Bunun için ikinci tablodan kayýt okuma iþlemi SELECT deyimi ile gerçekleþtirilir. "90" olarak deðiþtirmek istiyoruz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11045. Bir Baþka Tablodan Okunan Verilerle Güncelleme Güncelleme iþlemi. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11045.2006 21:27:50] . Amacýmýza þu þekilde ulaþabiliriiz: UPDATE PERSONEL SET BÖLÜM_NO=90 WHERE GÖREVÝ=(SELECT GÖREVÝ FROM PERSONEL WHERE PERSONEL_NO=350).htm [24. bir tablodan okunan deðerlere baðlý olarak da yapýlabilir.

2006 21:27:50] . Yukarýdaki UPDATE deyimi ise sadece PERSONEL tablosu üzerinde bu alaný deðiþtirmeye çalýþmaktadýr. Güncelleme Sorunlarý Bir tablo üzerinde bütünlük sýnýrlamalarý yapýlmýþ olabilir. PERSONEL ve BÖLÜM tablolarý üzerinde bütünlük sýnýrlamalarý tanýmlandýðýný varsayalým.3. Bu gibi durumlarda güncelleþtirme iþlemlerinde sorunlarla karþýlaþýlabilir. UPDATE PERSONEL SET PERSONEL_NO=55 WHERE BÖLÜM_NO=10. PERSONEL tablosunun BÖLÜM_NO sütununda yer alacak tüm deðerlerin BÖLÜM tablosunun BÖLÜM_NO tablosundaki deðerlerle ayný olmasý gerekmektedir.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11050.htm [24. BÖLÜM tablosunun birincil anahtarý BÖLÜM_NO'dur. PERSONEL ve BÖLÜM tablolarýnýn birincil anahtarlarý bulunmaktadýr. Örnek "10" numaralý bölüme sahip tüm bölüm numaralarýný "55" olarak deðiþtirmek istiyoruz. Ayný alan PERSONEL tablosunda dýþ anahtar olarak yer almaktadýr. Sýnýrlama tanýmlarý yüzünden bu iþlem yerine getirilmeyerek kullanýcý uyarýlýr.htm 11. Sayýlan bu sýnýrlamalar nedeniyle.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11050. Bu iki tablonun BÖLÜM_NO alanlarýna göre iki tablo iliþkilendirilmiþtir.2. Sýnýrlama iþlemleri ile ilgili daha ayrýntýlý bilgiyi daha sonraki derslerde vereceðiz.

Çünkü "60" numaralý bölüm BÖLÜM tablosunda tanýmlanmasýna raðmen.11. Ancak bu tür bir silme iþleminin gerçekleþtirilebilmesi için. BÖLÜM ile PERSONEL arasýnda bütünlük sýnýrlamalarý tanýmlanmýþ olmasýna raðmen. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11055. Örnek 1 BÖLÜM isimli tablonun tüm kayýtlarýný silmek için þöyle bir yol izlenebilir: DELETE FROM BÖLÜM.2006 21:27:51] .htm (1 of 2) [24. Tablodan Satýr Silme Tabloda yer alan bir veya daha fazla sayýda satýr silinebilir. Bu tablonun PERSONEL tablosu arasýnda bütünlük iliþkilerinin tanýmlandýðýný varsayacak olursak. bu silme iþleminin gerçekleþmeyeceðini söyleyebiliriz. Bunun için DELETE deyimi þu þekilde düzenlenebilir: DELETE FROM BÖLÜM WHERE BÖLÜM_NO=60. amaçlanan silme iþlemi gerçekleþir. Bu deyim þu þekilde tanýmlanýyor: DEELETE [FROM] tablo [WHERE koþul]. Silme iþlemi için DELETE deyimi kullanýlýr. PERSONEL tablosunda bu bölümle ilgili herhangi bir kayýt bulunmamaktadýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11055.htm 11. bu tablo üzerinde bütünlük sýnýrlamalarýnýn bulunmamasý gerektiði unutulmamalýdýr.4. Örnek 2 BÖLÜM isimli tabloda yer alan ve bölüm kodu "60" olan bölümü silmek istiyoruz.

htm (2 of 2) [24.htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11055.2006 21:27:51] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11055.11.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11060. bir baþka tablodan okunan verilere baðlý olarak da ilgili satýrlar silinebilir. Bu amaçla aþaðýda belirtildiði biçimde bir iþlem yapýlabilir: DELETE FROM PERSONEL WHERE BÖLÜM_NO= (SELECT BÖLÜM_NO FROM BÖLÜM WHERE BÖLÜM_ADI='SATIÞ').1. Örnek PERSONEL tablosundan "SATIÞ" bölümüne iliþkin tüm satýrlarý silmek istiyoruz. Yukarýdaki sorgulamanýn sonucunu görmek için linke týklayýnýz file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11060.2006 21:27:51] .htm 11.4.htm [24. Bir Baþka Tablodan Okunan Verileri Kullanarak Silme Ýþlemi Bir tablodan doðrudan doðruya belirlenen satýrlarý silebileceðimiz gibi.11.

Bir Baþka Tablodan Okunan Verileri Kullanarak Silme Ýþlemi file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11060_1.4.11.1.htm [24.2006 21:27:52] .11.

5. Bu tür bir amaca ulaþmak için hareket iþleme (transaction processing) kavramýný bilmek gerekir. veri ekleyebilir.htm 11. Bu deðiþikliklerin diðer kullanýcýlarý hemen etkilemesi istenmez. Hareket Ýþleme Veri tabanlarýný doðal olarak ayný anda çok sayýda kiþi kullanacaktýr. bunun sonucunu sadece kendimiz görürüz. Verinin deðiþtirilmesi üzerinde etkili olan DML deyimleri çalýþtýrýldýðýnda. Çünkü yapýlan bazý iþlemlerin iptal edilerek. Ayrýca bilgisayarýn çalýþmasý sona erince ya da sistem bozulmalarýnda (crashes) veri tabaný hareketleri sona erecektir. Baþlayan bir hareket COMMIT ya da ROLLBACK deyimleri çalýþtýrýlýncaya dek sona ermez ve sonuçlarý kalýcý deðildir.2006 21:27:52] . Gerek görülürse.11. bu deðiþikliklerin kalýcý hale getirilerek diðer kullanýcýlar tarafýndan da görülmesi saðlanabilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11065. veriyi deðiþtirebilir hatta silebilir. Veri tabaný hareketleri INSERT. "veri tabaný hareketleri " (database transactions) oluþur. Kullanýcý.htm [24. UPDATE ve DELETE gibi deyimlerin çalýþtýrýlmasý sonucunda baþlar.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11065. veri tabanýnýn önceki hale dönüþmesi gerekebilir. Bu deyimlerden biri çalýþtýrýldýðýnda veya bir baþka DDL deyimi (örneðin CREATE) çalýþtýrýldýðýnda da hareket son bulur. Yani veri üzerinde bir deðiþiklik yaptýðýmýzda.

Veri tabanýna ulaþan diðer kullanýcýlar bu deðiþikliðin sonucunu görmezler. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11070.2006 21:27:52] . Çünkü kullanýcýnýn yarattýðý hareket sona ermemiþtir. "300" numaralý personelin bölüm numarasý "10" olarak deðiþtirilir. Ancak bir kullanýcýnýn bu þekilde yaptýðý bir iþlemin sonucu diðer kullanýcýyý etkilemez. Bu deyimin çalýþtýrýlmasý ardýndan.UPDATE veya DELETE deyimlerinden birinin çalýþtýrýlmasý yeterlidir. UPDATE PERSONEL SET BÖLÜM_NO=10 WHERE PERSONEL_NO=300. deyimini çalýþtýracak olursa.5.htm [24.11. Ayný kullanýcý bu kez. Bu þekilde baþlayan bir iþlemi sona erdirmek için COMMIT kullanýlýr.1. yaptýðý tüm deðiþiklikler kalýcý hale gelir ve diðer veri tabaný kullanýcýlarý da bu deðiþikliði algýlamýþ olurlar. COMMIT. Hareketin Sona Erdirilmesi Veri tabaný hareketlerinin baþlamasý için INSERT.htm 11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11070. Örnek Veri tabaný kullanýcýlarýndan birinin aþaðýdaki deyimi çalýþtýrdýðýný varsayalým. Söz konusu deðiþiklik sadece bu deyimi çalýþtýran kullanýcý için yapýlmýþtýr.

11. Silme iþlemini iptal etmek için. Henüz COMMIT deyimi çalýþtýrýlmadýðý için diðer kullanýcýlar bu iþlemden etkilenmez ve bu durumda. Bu deyim çalýþtýrýlmadýðý sürece.5. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11075. Deðiþikliklerin Geri Alýnmasý Veri tabaný üzerinde bir kullanýcý tarafýndan gerçekleþtirilen deðiþikliðin kalýcý hale gelmesi için COMMIT deyiminden yararlanýyoruz. Böyle bir amaca ulaþmak için. Deyiminin çalýþtýrýldýðýný varsayalým. deyimi kullanýlýr. Bu deyim çalýþtýrýldýðýnda.2. deyimi çalýþtýrýlýrsa. ROLLBACK. Örnek PERSONEL tablosunun tüm kayýtlarýný silmek için.htm 11. tüm DML deyimlerinin etkileri geri alýnabilir. DELETE FROM PERSONEL.htm [24. Yani deðiþiklikler iptal edilebilir. silinen kayýtlarý geri alma olanaðý bulunmaktadýr.2006 21:27:53] .file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11075. PERSONEL tablosunun eski haline dönüþtüðü görülür. ROLLBACK. bu deyimi çalýþtýran kullanýcý için PERSONEL tablosunun tüm kayýtlarý silinmiþtir.

Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.11.2006 21:27:53] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11085.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz.htm (1 of 2) [24.

2006 21:27:53] .htm (2 of 2) [24.Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT11085.11.

htm Veri Tabaný Nesneleri Bir veri tabaný için en önemli nesne. tablodur. veri tabanlarý için diðer önemli nesneler olarak söylenebilir. Görünümler ve indeksler ise. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12005.htm [24.2006 21:27:53] .11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12005.

Ýndeksler yaratýlmasýný ve sebeplerini. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12010.htm Bölüm Hedefi Bu bölümde. öðreneceksiniz.2006 21:27:54] . ● ● ● ● ● ● ● Veri tabaný nesnelerini.11.htm [24. Tablolara sýnýrlamalar koymayý. Görünümlerin yaratýlmasý ve kullanýmýný. Tablo tanýmlarý üzerinde deðiþiklik iþlemlerinin yapýlmasýný. Sýnýrlama türlerini. Tablolarýn yaratýlmasýný.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12010.

htm 12.1. ● ● ● Tablolar Görünümler Ýndeksler file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12015. bu nesneler yardýmýyla olmaktadýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12015. Bu nesnelerin en önemlilerini aþaðýda görebilirsiniz.2006 21:27:54] . Tüm veri tabaný iþlemleri ve verinin yönetilmesi. Veri tabaný Nesneleri Bir veri tabaný farklý yapýlara sahip birçok nesneden oluþmaktadýr.11. Veri tabanlarý çeþitli amaçlara yönelik farklý birçok nesne içerebilir.htm [24.

Tablolar için bir boyut belirlemeye gerek yoktur. Veri tabaný sunucusu tarafýndan kullanýlan ve bakýmý onun tarafýndan yapýlan tablolardýr.htm [24.2006 21:27:55] . Veri tabanlarýnda iki türlü tablo yer almaktadýr: Kullanýcý tablolarý Bu tablolar herhangi bir veri tabaný kullanýcýsý tarafýndan yaratýlan tablolardýr. Tablolar Tablolar veri tabanýnýn temel yapýlarýdýr. veritabaný sözlüðünü (database dictionary) oluþtururlar.htm 12.2.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12020. Veri tabanýnýn yönetilmesine yönelik olan bu tablolar ve görünümler (views). Bu tablolara sistem yöneticisi dýþýnda herhangi bir kullanýcýnýn eriþmesi ya da müdahale etmesi mümkün deðildir. Tablo yapýlarýnýn en önemli özellikleri þunlardýr: a) b) Tablolar herhangi bir anda. Veri sözlüðü file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12020.11. Söz konusu tablolarýn isimleri ve sütunlarý doðal olarak kullanýcý tarafýndan belirlenmiþtir. Ancak yine de tablonun ne kadarlýk bir hacime ulaþabileceðini tahmin etmekte yarar vardýr. hatta veri tabanýnýn bir kullanýcý tarafýndan kullanýlmasý esnasýnda bile yaratýlabilir.

Ayný sütunlar birden fazla tablo içinde yer alýyorsa. b) file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12025. Tablo isimleri verilirken aþaðýda sýralanan hususlara dikkat edilmesi tavsiye edilir: a) Tablo ya da sütun isimleri iliþkili olduðu konuya uygun biçimde belirlenmelidir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12025.2006 21:27:55] .1. Ýsimlendirirken bazý kurallara uymak gerekmektedir : Tablo isimleri büyük-küçük harf ayrýmýna karþý duyarlý deðildir. Tablolarý Ýsimlendirme Tablolara doðal olarak bir isim vermek gerekecektir.htm [24. Küçük harflerle ya da büyük harflerle veya karýþýk yazýlmasý fark etmez.2.htm 12. ayný isimleri vermek yararlý olacaktýr.11. Örneðin PERSONEL ve BÖLÜM tablosu içindeki bölüm numarasýný içeren sütunlar BÖLÜM_NO biçiminde belirlenmiþtir.

2.2006 21:27:55] .11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12030. her bir sütunun veri türü mutlaka belirlenmelidir Çeþitli amaçlara uygun veri türleri bulunmaktadýr.2.htm 12. tamamýný ise aþaðýdaki canlandýrmada görebilirsiniz: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12030. ORACLE sunucuda geçerli olan bu veri türlerinin temel olanlarýný soldaki . Veri Türleri Tablolar yaratýlýrken.htm [24.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12035. En fazla 15 karakter olabilir. o sütunun varsayýlan deðerini belirler Veri tabanýndaki nesneler topluluðuna þema adý verilebilir. Örneðin. Bölümün yerini belirleyecekitir.2. Ancak belirtlenen deðer.htm 12. Þema nesneleri tablolar. veri tabaný içindeki verilere doðrudan karþýlýk gelen mantýksal yapýlardýr. Tablolarýn Yaratýlmasý Tablolarýn yaratýlabilmesi için CREATE TABLE deyimi kullanýlýr. Bu tablo aþaðýda belirtildiði biçimde yaratýlabilir: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12035. Bölüm adýný içerecektir. Bir sütunun deðeri. bu personelin tabloya kaydedildiði günün tarihini iþe giriþ tarihi olarak kabul etmek istiyoruz. Eðer herhangi bir deðer kaydedilmez ise. ilgili sütunun veri türüne uygun olmalýdýr. PERSONEL tablosunun GÝRÝÞ_TAR isimli alaný. Bu amaçla DEFAULT sözcüðü.htm (1 of 2) [24. dizinler ve diðer nesnelerdir. þema tablo sütunlar veri türü DEFAULT ifade Tablonun sahibini belirler Yaratýlacak tablonun adý Tablonun herbir sütunu Herbir sütunun veri türü Sütuna veri giriþi yapýlmadýðýnda. Bir tablo belirli bir kullanýcýya ait ise. En fazla 13 karakter olabilir. Burada doðrudan bir deðer.3. Þema nesneleri. bir ifade veya bir fonksiyon belirlenebilir. Örnek BÖLÜM tablosunun aþaðýdaki sütunlardan oluþmasý gerektiðini varsayalým: BÖLÜM_NO BÖLÜM_ADI KONUM Sayýsal deðerler içerecektir.11.…).] tablo (sütun veri türü [DEFAULT ifade]. En fazla 2 karakter olabilir. … GÝRÝÞ_TAR DATE DEFAULT SYSDATE biçiminde kullanýlabilir. tablo adý kullanýcý adý ile birlikte ifade edilir. görünümler.2006 21:27:56] . Bu deyim þu þekilde tanýmlanýr: CREATE TABLE [þema. personelin iþe giriþ tarihini içerecektir. daha tablo yaratýlýrken varsayýlan deðer (default value) olarak atanabilir.

htm CREATE TABLE BÖLÜM (BÖLÜM_NO BÖLÜM_ADI KONUM NUMBER(2). file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12035.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12035.11. VARCHAR2(15).htm (2 of 2) [24.2006 21:27:56] . VARCHAR2(13)).

alt sorgudan elde edilen sütunlar yeni yaratýlacak olan tablonun sütunlarýný oluþturacaktýr. ADI. bunlarýn sayýsý alt sorgudan elde edilen sütun sayýsý ile ayný olmalýdýr. bilgi giriþ iþlemi daha tablo yaratýlýrken de yapýlabilir. Bunun için. CREATE TABLE PER20 AS SELECT PERSONEL_NO.2006 21:27:57] . INSERT INTO deyimi yardýmýyla. Eðer CREATE TABLE deyimi içinde sütun tanýmlarý verilmiþ ise. CREATE TABLE tablo [(sütunlar)] AS altsorgu . CREATE TABLE deyiminde sütun tanýmlarý yapýlmamýþ ise. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12040.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12040. ÜCRET*12 AS YILLIK FROM PERSONEL WHERE BÖLÜM_NO=20. bu tabloya bir baþka tablodan sorgulama iþlemi yapýlarak bilgi giriþ yapýlabilir.4. Bir Alt Sorgu Ýle Tablolarýn Yaratýlmasý Bir tablo yaratýldýktan sonra. PERSONEL tablosundaki aylýk ücret bilgileri yýllýða çevrilerek PER20 tablosuna yazdýrýlacaktýr.htm [24.htm 12. Ancak. Örnek PER20 isimli bir tablo yaratacaðýz.2. Bu tablo PERSONEL tablosunda yer alan ve "20" numaralý bölüme iliþkin personel kayýtlarýný içerecektir.11. CREATE TABLE deyimi bir alt sorgu ile birlikte kullanýlabilir. Bu durumda yeni tablo sütunlarý ile alt sorgu sütunlarý sýraya göre eþleþir.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12045.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12045. ALTER deyimi þu þekilde tanýmlanýyor: ALTER TABLE tablo ADD ((sütun1 veri türü [DEFAULT ifade] [. Bunun için þöyle bir yol izlenir: ALTER TABLE PER20 ADD (GÖREVÝ VARCHAR2(9)).htm [24. Bu sütun VARCHAR2 veri türüne sahip olacak ve en fazla 9 karakter içerebilecektir.htm 12. gerektiðinde yeni sütunlar eklenebilir.2006 21:27:57] .2.11. Örnek Daha önce yaratýlan PER20 isimli tabloya GÖREVÝ isimli yeni bir sütun eklemek istiyoruz.sütun2 veri türü]…).5. Tabloya Yeni Bir Sütun Ekleme Bir tablo yaratýldýktan sonra. Bu amaçla ALTER deyimi kullanýlýr.

Bunun için aþaðýda belirtilen yol izlenir: ALTER TABLE PER20 MODIFY (ADI VARCHAR2(15)).htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12050.11. Bu iþlemi yerine getirirken bazý noktalara dikkat etmek gerekiyor: Örnek PER20 isimli tablonun ADI isimli sütunun geniþliðini 15 karakter olarak deðiþtirmek istiyoruz.htm 12. Bunun için ALTER deyimi MODIFY sözcüðü ile birlikte þu þekilde kullanýlýr: ALTER TABLE tablo MODIFY ((sütun1 veri türü [DEFAULT ifade] [.sütun2 veri türü]…). Bir Sütun Tanýmýný Deðiþtirmek Tablo yaratýldýktan sonra.2006 21:27:58] . gerektiðinde bir sütun ile ilgili tanýmlarda bazý deðiþiklikler yapýlabilir. Sütun tanýmlarý istenildiði biçimde deðiþtirilemez.2.6.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12050.

2. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12055.7.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12055. isimlendirme ile ilgili kurallara uymak gerekmektedir.htm [24. Nesnenin adýný deðiþtirirken.htm 12. Bu amaçla RENAME deyimi kullanýlýr.2006 21:27:58] . Örnek Veri tabanýndaki BÖLÜM isimli tablounun adýný YENÝ_BÖLÜM olarak deðiþtirmek için þöyle bir yol izlenebilir: RENAME BÖLÜM TO YENÝ_BÖLÜM. Tablo Adýnýn Deðiþtirilmesi Bir tablo veya diðer veri tabaný nesnelerinin adýný deðiþtirmek gerekebilir. Bu deyim þu þekilde tanýmlanýyor: RENAME eski adý TO yeni adý.

htm 12. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12060.htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12060. Böyle bir amaca ulaþmak için DROP deyimi kullanýlýr.2006 21:27:58] . O halde kullanýrken bazý noktalara dikkat etmek gerekiyor: Örnek PER20 isimli tabloyu yok etmek için aþaðýda belirtilen yol izlenir: DROP TABLE PER20.11.2.8 Tablonun Yok Edilmesi Gerektiðinde bir tablo veri tabanýndan silinebilir. Söz konusu deyim þu þekilde tanýmlanýyor: DROP TABLE tablo Bu deyim tehlikeli sonuçlara neden olabilecek bir deyimdir.

Tablonun Budanmasý Bir tablonun bazý satýrlarý ve gerektiðinde tüm satýrlarýnýn nasýl silinebildiðini biliyoruz. Ancak. Benzer biçimde. DELETE deyimini bu amaçla kullandýk.2.htm [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12065. Bu deyim þu þekilde tanýmlanýr: TRUNCATE TABLE tablo DELETE ve TRUNCATE deyimleri tablonun tüm satýrlarýnýn yok edilmesi neden olur. TRUNCATE deyimi çalýþtýrýldýktan sonra silinen satýrlar geri alýnamaz. TRUNCATE ise bu alaný yok eder. bir tablonun tüm satýrlarýný yok etmek gerektiðinde TRUNCATE TABLE deyimi kullanýlýr.11. DELETE deyimi tablonun silinen satýrlarýndan boþalan alaný yok etmez. DELETE deyimi çalýþtýrýldýktan sonra ROLLBACK deyimi ile iþlemler geri alýnabiliyordu.htm 12.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12065. Örnek BÖLÜM tablosunun tüm satýrlarýný silmek için TRUNCATE deyimi þu þekilde kullanýlýr: TRUNCATE TABLE BÖLÜM.2006 21:27:59] .9.

2006 21:27:59] .htm 12. Veri tabanýnda.11. çoðunlukla aþaðýda sýralanan amaçlara uymak amacýyla kullanýlýr.htm [24. kayýt ilavelerinde ve kayýt silme iþlemlerindeki tutarsýzlýklarý önlemek. Tablolara Sýnýrlamalarýn Eklenmesi Veri tabaný tablolarýna geçersiz veri giriþlerinin önüne geçmek ve bazý denetimleri gerçekleþtirmek ve bütünlüðü saðlamak üzere sýnýrlamalar (constraints) tanýmlanýr. ● ● Bir tablodan kayýt silme. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12070. Bir tablo bir baþka tabloyla iliþkili ise. Sýnýrlamalar.3.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12070. Aþaðýdaki tablo bu sýnýrlamalarý açýklamaktadýr. Bu sýnýrlamalar tablo seviyesinde denetimleri saðlar. veri bütünlüðünü saðlayan çeþitli sýnýrlamalar tanýmlanabilir. tabloya satýr ekleme veya güncelleþtirme iþlemlerine sýnýrlamalar getirmek.

Sütun düzeyindeki sýnýrlamalar NOT NULL.htm 12. aþaðýda görüldüðü biçimde daha tablo yaratýlýrken belirlenebilir: CREATE TABLE [þema.htm [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12075. [tablo sýnýrlamalarý]. UNIQUE olup. sütun düzeyinde. iki tür sýnýrlama olabilmektedir.2006 21:28:00] . doðrudan ilgili sütunun karþýsýnda tanýmlanýrlar. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12075.1. Bunlardan birincisi. Diðerleri ise CONSTRAINT sözcüðü yardýmýyla tablo düzeyinde tanýmlanýr..] tablo (sütun veri türü [DEFAULT ifade]..11. Bu tanýma göre.…) [sütun sýnýrlamasý] . diðeri ise tablo düzeyindedir. Tablo Yaratýlýrken Sýnýrlamanýn Tanýmlanmasý Tablolara konulacak sýnýrlamalar.3..

11. Yani bu sütun NULL deðerler içermeyecektir. Böyle bir sýnýrlama tablo satýrlar üzerine konulabilir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12080.htm 12.3. Bu tür bir amaca ulaþmak için PERSON tablosu þu þekilde yaratýlabilir.htm [24. Bu tür bir amaca NOT NULL sýnýrlamasý yardýmýya ulaþýlabilir. personel adý ve bölüm numarasý ile ilgili sütunlarýn mutlaka dolu olmasýný istiyoruz.1. Örnek PERSON tablosuna bilgi giriþlerinde.2006 21:28:00] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12080.1 NOT NULL Sýnýrlamasý Bir tablonun herhangi bir sütununun hiçbir zaman boþ kalmamasý istenebilir.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12085. Örnek BÖLÜM tablosunun BÖLÜM_NO isimli sütunu çift deðerlere izin vermeyecektir.htm 12.htm (1 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12085.2006 21:28:01] .2 UNIQUE Sýnýrlamasý Tablonun bir sütununa girilen bir deðerin. ayný sütun içinde tekrarlanmamasý istenilebilir.1. UNIQUE anahtar sýnýrlamasý böyle bir amaç için kullanýlýr. BÖLÜM_ADI VARCHAR2(14). Çünkü NULL deðerler herhangi bir deðerle eþleþmediði için.11. NULL deðerler içeren çok sayýda satýr eklenebillir. Söz konusu anahtara "tek anahtar" adý da verilmektedir. Bu durumda "birleþik tek anahtar" kavramýndan söz edilir. gerektiðinde birden fazla sütun bir araya getirilerek de oluþturulabilir. KONUM VARCHAR2(13). CONSTRAINT BL UNIQUE(BÖLÜM_ADI)). Bu tür bir anahtar tek bir sütun yardýmýyla oluþturulabileceði gibi. Eðer tanýmlanmaz ise. CREATE TABLE deyimi içinde UNIQUE sýnýrlamasý þu þekilde tanýmlanýr: CONSTRAINT UNIQUE anahtar adý UNIQUE( sütun adý ). UNIQUE anahtarýnýn tanýmlandýðý sütun için NOT NULL sýnýrlamasý da tanýmlanabilir. "tek olma" koþulunu bozmaz. Bu koþula uygun tablo þu þekilde yaratýlabilir: CREATE TABLE BÖLÜM (BÖLÜM_NO NUMBER(4).3.

BÖLÜM_ADI için UNIQUE sýnýrlamasý tanýmlanmýþ ve bu sýnýrlamaya BL adý verilmiþtir.htm (2 of 2) [24. Bu tabloya artýk bölüm adý ayný olan ikinci bir kayýt eklenemez.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12085.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12085.2006 21:28:01] .htm Burada BÖLÜM isimli tablo yaratýlýrken.

11. CREATE TABLE deyimi içinde birincil anahtar þu þekilde tanýmlanýr: CONSTRAINT birincil anahtar adý PRIMARY KEY ( sütun adý ).htm 12.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12090.3 PRIMARY KEY Sýnýrlamasý Bir tablo için birincil anahtarýn tanýmlanmasý söz konusu ise. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12090. BÖLÜM_ADI VARCHAR2(14). Birincil anahtarýn adý PR olacaktýr. Birincil anahtar olarak tanýmlanan bir sütun NULL deðerler veya tekrarlý deðerler içeremez. CONSTRAINT PR PRIMARY KEY(BÖLÜM_NO)). KONUM VARCHAR2(13). Bunun için aþaðýdaki tanýmý yapmak yeterlidir: CREATE TABLE BÖLÜM (BÖLÜM_NO NUMBER(4).htm (1 of 2) [24.2006 21:28:01] . PRIMARY KEY sýnýrlamasý kullanýlýr.3. Bir tablo için sadece bir adet birincil anahtar yaratýlabilir.1. Örnek BÖLÜM tablosunun BÖLÜM_NO isimli sütununu birincil anahtar olarak tanýmlamak istiyoruz. Ancak birden fazla sütun bir araya getirilerek de birincil anahtar oluþturulabilir.

BÖLÜM_ADI için. CONSTRAINT BL UNIQUE(BÖLÜM_ADI).htm Ayný anda birden fazla sýnýrlamayý da tanýmlayabilir. CONSTRAINT PR PRIMARY KEY(BÖLÜM_NO)). Örneðin.2006 21:28:01] .htm (2 of 2) [24. BÖLÜM_ADI VARCHAR2(14). birincil anahtar yanýsýra.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12090.11. KONUM VARCHAR2(13). BL adýný taþýyan UNIQUE anahtar tanýmý birlikte yapýlabilir: CREATE TABLE BÖLÜM (BÖLÜM_NO NUMBER(4). file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12090.

Bu sýnýrlamalar bir sütun olarak tasarlandýðý gibi. bu satýr ile iliþkili tüm kayýtlarýn silinmesini saðlar. bir baþka tablonun birincil anahtarý ile iliþkilendirilir.1. Bir tablo için tanýmlanan dýþ anahtar.4 FOREIGN KEY Sýnýrlamasý Ýki tablo arasýnda iliþkisel bütünlüðü (referential integrity) saðlamak amacýyla FOREIGN KEY. FOREIGN KEY sýnýrlamalarý ile ilgili tanýmlarda bazý özel sözcüklere yer vereceðiz.htm 12. CONSTRAINT dýþanahtarýn adý FOREIGN ( sütun adý ) REFERENCES tablo(sütun adý). Aþaðýda bu sözcükler hakkýnda kýsaca bilgi veriyoruz: FOREIGN KEY REFERENCES ON DELETE CASCADE Yaratýlacak tablonun dýþ anahtar olarak seçilen sütununu tanýmlar.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12095. bazý durumlarda birden fazla sütunun birleþimi olarak da düþünülebilir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12095.3. Bu tablonun iliþkili olduðu tablonun birincil anahtarýný belirtir. Ana tablodan bir satýr silindiðinde.2006 21:28:02] . yani dýþ anahtar sýnýrlamasý tanýmlanýr. CREATE TABLE deyimi içinde dýþ anahtar þu þekilde tanýmlanýr. iliþkili olduðu tabloda.11.htm (1 of 2) [24.

KOMÝSYON NUMBER(7. Bu anahtarýn adý FK olacaktýr. GÝRÝÞ_TAR DATE ÜCRET NUMBER(7.2). BÖLÜM tablosunun BÖLÜM_NO sütununa baðlý olarak bir dýþ anahtar tanýmlanacaktýr. Amacýmýza uygun PERS tablosu þu þekilde yaratýlabilir: CREATE TABLE PERS (PERSONEL_NO NUMBER(4). GÖREVÝ VARCHAR2(9).2006 21:28:02] . ADI VARCHAR2(10) NOT NULL. YÖNETÝCÝSÝ VARCHAR(9). O halde.2).11. BÖLÜM_NO NUMBER(2) NOT NULL). PERS tablosu içindeki ADI ve BÖLÜM_NO alanlarý NULL deðerler içermeyecektir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12095. Bu tablo BÖLÜM tablosu ile BÖLÜM_NO sütununa göre iliþkili olacaktýr.htm Örnek PERS isimli yeni bir tablo yaratýlacaktýr. CONSTRAINT FK FOREIGN KEY(BÖLÜM_NO) REFERENCES BÖLÜM(BÖLÜM_NO)).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12095.htm (2 of 2) [24.

htm [24. Bu tür bir koþulu þu þekilde tanýmlayabiliriz: CREATE TABLE BÖLÜM (BÖLÜM_NO NUMBER(4). Koþul tanýmlanýrken SQL koþul iþleçlerinden yararlanýlýr.2006 21:28:02] . CREATE TABLE deyimi içinde koþul tanýmlarý þu þekilde yapýlýr: CONSTRAINT koþul adý CHECK (koþul) Örnek BÖLÜM tablosunun BÖLÜM_NO sütununa girilecek deðerlerin 10 ile 99 arasýndaki bir deðer olmasýný istiyoruz. KONUM VARCHAR2(13).file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12100. CHECK sýnýrlamasý kullanýlýr.htm 12.11. BÖLÜM_ADI VARCHAR2(14).3. CONSTRAINT KÞ CHECK (BÖLÜM_NO BETWEEN 10 AND 99)).5 CHECK Sýnýrlamasý Tablonun herbir satýrý için bir koþul tanýmlanmasý söz konusu ise. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12100. Koþulun adý KÞ olsun.1.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12105. bunun yapýsýný deðiþtiremeyiz. mevcut bir tabloya þu þekilde ekleyebiliriz: ALTER TABLE PERS ADD CONSTRAINT TEST FOREIGN KEY(YÖNETÝCÝSÝ) REFERENCES (PERSONEL_NO). ayný zamanda bu tablonun PERSONEL_NO sütununda bulunan bir deðer olmalýdýr. kapatma veya açma iþlemleri yapýlabilir. NOT NULL sýnýrlamasýnýn eklenmesi söz konusu ise. silme.2. ALTER TABLE deyimi içinde MODIFY sözcüðü kullanýlýr. söz konusu tablonun hiç satýr içermemesi gerekiyor. Ancak bir sýnýrlama mevcut ise. Var Olan Tablo Ýçin Sýnýrlama Ekleme Tablolara konulacak sýnýrlamalar.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12105.htm 12. aþaðýda görüldüðü biçimde daha tablo yaratýlýrken belirlenebilir: ALTER TABLE tablo ADD [CONSTRINT sýnýrlama ].htm [24. Örnek PERS tablosunun YÖNETÝCÝSÝ sütununa girilen bir deðer.3.11.2006 21:28:03] . Ancak bu tür bir sýnýrlamanýn eklenebilmesi için. ALTER TABLE deyimi ile sýnýrlamalar için ekleme. Bu tür bir sýnýrlamayý.

2006 21:28:03] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12110. Örnek 2 Daha önce PERS tablosu için tanýmlanan TEST isimli sýnýrlamayý yok etmek istiyoruz.BÖLÜM_NO sütunu üzerindeki dýþ anahtar sýnýrlamalarýný da kaldýrýr. Sýnýrlamalarýn Kaldýrýlmasý Bir tabloya sýnýrlama konulduktan sonra.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12110.3.3. gerektiðinde bu sýnýrlama kaldýrýlabilir. Örnek 1 BÖLÜM tablosu üzerindeki PRIMARY KEY sýnýrlamasýný kaldýrmak için þöyle bir yol izlenebilir: ALTER TABLE BÖLÜM DROP PRIMARY KEY CASCADE. Sýnýrlamalarýn kaldýrýlmasý aþaðýda belirtildiði biçimde yapýlýr: ALTER TABLE tablo DROP PRIMARY KEY | INIQUE (sütun) | CONTRAINT sýnýrlama [CASCADE]. BÖLÜM tablosuyla iliþkili PERSONEL.htm [24. BÖLÜM tablosuyla iliþkili PERSONEL.11. Bu iþlem. Bunun için þöyle bir yol izlenebilir: ALTER TABLE PERS DROP CONSTRAINT TEST Bu iþlem.htm 12. Bunun için ALTER ve DROP sözcüklerinden yararlanýlýr.BÖLÜM_NO sütunu üzerindeki dýþ anahtar sýnýrlamalarýný da kaldýrýr.

Görünümler Bir ya da daha fazla tablonun mantýksal alt kümelerini oluþturmak için görünümlerden yararlanýlýr. b) c) Bir görünümün yaratýlabilmesi için CREATE VIEW deyimi kullanýlýr. Bazý kurallara file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12115. bu görünümün çalýþtýrýlmasý mümkündür. saklanmýþ (depolanmýþ) SELECT deyimi olarak deðerlendirilir.4.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12115.htm (1 of 2) [24. onu bir görünüm biçiminde tanýmlayarak. bir tabloya dayalý mantýksal bir tablo olarak deðerlendirilir. Görünümler aþaðýda sýralanan nedenlerle tercih edilir: a) Görünümler. Görünüm. tablolarýn sadece seçilen bir kýsmýný görüntüleyebilir. Görünümler.11. Bir SELECT deyiminin defalarca kullanýlmasý söz konusu ise. Görünümler. þöyle tanýmlanýyor: CREATE VIEW görünüm AS alt sorgu . tablolar gibi veriyi fiziksel olarak saklamaz. Karmaþýk sorgularýn kolayca yapýlmasýný saðlar.htm 12.2006 21:28:04] . Bir görünümün yaratýlmasý esnasýnda kullanýlacak alt sorgu içinde ORDER BY sözcüðü yer alamaz. Bu deyim en basit biçimiyle. Ayný veriyi kullanan çok sayýda görünüm tanýmlanabilmektedir. veri tabanýna eriþimi sýnýrlayan olanaklardýr çünkü görünüm.

Örnek 2 Alt sorgu içinde alan takma isimler de kullanýlabilir. Bu durumda görünümün alan isimleri. DROP VIEW görünüm .11. Aþaðýda sýralanan sorgu türleri DML iþlemlerinde kullanýlamaz. AS P_NO. CREATE VIEW PERGÖR1 AS SELECT PERSONEL_NO. Örnek 1 PERSONEL tablosunun PERSONEL_NO.htm uymak koþuluyla görünümler DML iþlemlerinin yerine getirilmesi amacýyla da kullanýlabilir. GÖREVÝ FROM PERSONEL. ÜCRET AS MAAÞ FROM PERSONEL WHERE BÖLÜM_NO=20. a) b) c) Grup fonksiyonlarýný içeren alt sorgular GROUP BY sözcüðünün yer aldýðý alt sorgular DISTINCT sözcüðünün yer aldýðý alt sorgular Var olan bir görünümü yok etmek amacýyla DROP VIEW deyimi kullanýlýr. ADI ve GÖREVÝ sütunlarýna baðlý olarak.2006 21:28:04] . söz konusu takma isimler olacaktýr. CREATE VIEW PERGÖR AS SELECT PERSONEL_NO.htm (2 of 2) [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12115. ADI AS ÝSÝM.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12115. PERGÖR isimli görünümü þu þekilde yaratabiliriz. ADI.

biçiminde bir taným yapmak yeterlidir. ADI ve GÖREVÝ isimli sütunlardan oluþmaktadýr.11. SELECT ADI.GÖREVÝ FROM PERS1. Bu görünüm çalýþtýrýldýðýnda. Görünümün Sorgulanmasý Görünümler aynen bir tabloya benzer.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12120.1. ADI ve GÖREVÝ sütunlarý görüntülenir. Bu görünümün çalýþtýrýlarak (sorgulanarak).htm 12. Bir görünümün içerdiði tüm sütunlar seçilebildiði gibi.2006 21:28:04] .4.htm (1 of 2) [24. sadece ADI ve GÖREVÝ isimli sütunlarýnýn seçilebilmesi için. Örnek PERS1 isimli görünümü PERSONEL_NO. gerektiðinde bazý sütunlarý da seçilebilir. PERSONEL tablosunun sadece. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12120. SELECT deyimi ile bir görünümü okumak mümkündür.

11.htm (2 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12120.2006 21:28:04] .htm file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12120.

2006 21:28:04] . CREATE OR REPLACE VIEW PERGÖR AS SELECT PERSONEL_NO. Görünümün Güncelleþtirilmesi Var olan herhangi bir görünümün güncelleþtirilmesi amacýyla.11.4. Bu deyim þu þekilde tanýmlanýr: CREATE OR REPLACE VIEW görünüm [(görünüm sütunlarý)] AS alt sorgu. GÖREVÝ. yani yeni bir görünümün ayný isimli bir baþka görünümün yerini almasý için.htm [24. CREATE OR REPLACE WITH deyimi kullanýlýr. BÖLÜM_NO FROM PERSONEL. Örnek Daha önce yaratýlmýþ PERGÖR isimli görünümü þu þekilde güncelleþtirebiliriz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12125.htm 12. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12125. ADI. ÜCRET.2.

htm 12. PRIMARY KEY ve UNIQUE anahtar sýnýrlamalarý sonunda yaratýlan indeksler. Ýndeksler tanýmlandýðýnda. Buna karþýlýk tek olmayan indeksler de yaratmak mümkündür. belirli bir sütun üzerinden daha hýzlý eriþimi saðlayan veri tabaný nesneleridir. disk için okuma/yazma miktarý azalýr. Bir tablo tanýmýnda PRIMARY KEY ya da UNIQUE sýnýrlamalarýna yer verilmiþ ise. Örneðin.2006 21:28:05] . Bir tablo için indeks tanýmlanmamýþ ise. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12130.11.htm [24. FOREIGN KEY alaný için indeks yaratarak. Ýndeksler bir deyim yardýmýyla kullanýcý tarafýndan yaratýlabileceði gibi otomatik olarak da yaratýlabilir. Böylece veriye daha hýzlý eriþilir. Indeksler Ýndeksler (dizinler) bir tablodaki satýrlara.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12130.5. bu alana baðlý sorgularýn hýzýný artýrabiliriz. bu anahtarlara baðlý olarak otomatik indeksler yaratýlýr. bu anahtarlarýn özelliðine baðlý olarak tek deðerli indeksler (unique index) ismiyle bilinir. Ýndeksler tablodan baðýmsýz olarak oluþturulur ve hem kullanýmý hem de bakýmý veri tabaný sunucusu tarafýndan otomatik olarak gerçekleþtirilir. okuma iþlemlerinde tüm tablo taranýr.

2006 21:28:05] . Bunun için aþaðýdaki deyim kullanýlabilir: CREATE INDEX index adý ON tablo( sütunlar ). file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12135. Bir Ýndeksin Yaratýlmasý Herhangi bir tablonun bir alanýna baðlý olarak indeks yaratýlabilir.htm [24.1.htm 12. Indeksin adý PERBÖL olacaktýr. Örnek PERSONEL tablosunun BÖLÜM_NO alanýna baðlý bir indeks oluþturacaðýz.5. CREATE INDEX PERBÖL ON PERSONEL(BÖLÜM_NO).11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12135.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12140.2006 21:28:06] .htm [24. Tablo çok büyük ve sorgudan elde edilecek sonuç tablonun % 2-4 'den daha az ise. Aksi takdirde indeksten beklenen yarar elde edilemez.htm 12. aþaðýda sýralanan koþullar ortaya çýktýðýnda tanýmlanýr.11. çok sayýda NULL deðer içeriyorsa.5. Alan. Bir Ýndeks Ne Zaman Yaratýlýr ? Bir indeksin yaratýlabilmesi için bazý koþullarýn gerçekleþtirilmiþ olmasý gerekmektedir. geniþ ardýþýk sayýlar içeriyorsa.2. Alan. a) b) c) d) e) Ayný alan birçok sorguda WHERE sözcüðü içinde ya da baðlantý koþulu (join condition) içinde sýk sýk kullanýlýyorsa. Bir indeks.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12140. Ýki ya da daha fazla alan birçok sorguda WHERE veya baðlantý koþulu içinde birlikte sýk sýk kullanýlýyorsa. Solda sýralanan durumlar geçerli ise indeks kullanýlmaz.

Bir tablonun herhangi bir indeksini yok etmek için DROP INDEX deyimi kullanýlmaktadýr.2006 21:28:06] . Amacýmýza uygun deyim þu þekilde düzenlenebilir: DROP INDEX PERBÖL. Bu deyim þu þekilde tanýmlanýyor.htm [24. DROP INDEX index adý . Ýndeksin Yok Edilmesi Bir tablo DROP TABLE deyimiyle yok edildiðinde bu tabloya baðlý indeksler de otomatik olarak silinir.htm 12. Örnek Daha önceki örnekte yarattýðýmýz PERBÖL indeksini yok etmek istiyoruz.3. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12145.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12145.5.

2006 21:28:06] .11. Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz.htm (1 of 2) [24. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12155.

htm (2 of 2) [24.Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT12155.11.2006 21:28:06] .

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13005. Bunun için.2006 21:28:07] . çoðu þirket ve kurum için büyük öneme sahip verileri içerir.htm [24. Veri tabanlarýný diðer kullanýcýlara açarken. Günümüzdeki birçok Veri Tabaný Yönetim Sistemi kullanýcý erþiminin denetlenmesi ile ilgili araçlarý ve yöntemleri içerir. veri tabanýna eriþimin dikkatle denetlenmesi gerekir. verilere ulaþma ve onlar üzerinde iþlem yapma gibi yetkilerin her kullanýcý için ayný olmamasýna dikkat etmek gerekir. Bu bölümde bu tür araçlarý nasýl kullanacaðýmýzý öðreneceðiz.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13005.htm Kullanýcý Eriþiminin Denetlenmesi Veri tabanlarý. Veri tabanlarýnýn çoðu zaman birden fazla kullanýcýnýn ayný anda hizmetinde olmalarý gerekir.

htm [24. Kullanýcýlara parola verilmesi iþlemini. öðreneceksiniz. ● ● ● ● ● ● ● ● Kullanýcýnýn veri tabanýna eriþimini denetlemeyi. Kullanýcýlara nesne yaratma yetkisinin verilmesini. Yetki gruplarýnýn belirlenmesini. Nesne yetkilerinin geri alýnmasýný.htm Bölüm Hedefi Bu bölümde.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13010.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13010. Parolanýn gerektiðinde deðiþtirilmesini. Nesnelere eriþim yetkilerinin atanmasýný. Veri tabaný kullanýcýsýnýn yaratýlmasýný.2006 21:28:07] .

1 Kullanýcý Eriþiminin Denetlenmesi Bir veri tabanýný doðal olarak çok sayýda kiþi kullanacaktýr. Bunun denetlenmesi gerekiyor. veri tabaný sistemine tanýtýlmasý ve eriþim yetkilerinin tanýmlanmasý söz konusudur.htm [24. Veri Tabaný Yöneticisi.2006 21:28:08] . veri tabaný üzerinde her türlü iþlemi yapmaya yetkisi olan bir kullanýcýdýr. Bu noktaya dikkat etmek gerekiyor. bu bölümde anlatýlan iþlemlerin çoðunu. sadece Veri Tabaný Yöneticisinin (VTY) yapabileceðini unutmamalýyýz. Bu kullanýcýlar farklý kullaným düzeyine sahip olacaktýr.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13015. Her kullanýcý sistemin tüm kaynaklarýna ulaþamayacaktýr.htm 13. Kullanýcýlarýn.11. Ayrýca. Ancak burada anlatýlan konular ORACLE veri tabaný sunucusu göz önüne alýnarak açýklanmýþtýr. veri tabaný yöneticisi tarafýndan yaratýlýr ve yetkileri yine onun tarafýndan atanýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13015. Bu bölümde kullanýcý eriþimi ile ilgili konularý ele alarak inceleyeceðiz. Diðer tüm kullanýcýlar.

Bu kullanýcýnýn parolasý KAPLAN olarak belirtilecektir. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13020. Bu deyim þu þekilde tanýmlanýr: CREATE USER kullanýcý IDENTIFIED BY (parola). Örnek BURAK isimli yeni bir kullanýcý sisteme aþaðýda belirtildiði biçimde tanýtýlýr.2006 21:28:08] . Veri tabanýný kullanacak kiþileri. Kullanýcýlarýn Yaratýlmasý Veri Tabaný Yöneticisi (VTY). CREATE USER BURAK IDENTIFIED BY KAPLAN. kullanýcýlarý veri tabaný sistemine tanýtýr.htm [24.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13020. CREATE USER deyimi kullanýlýr.2. sistemin kullanýcýsý olarak tanýtmak için.htm 13.

Kullanýcýlara veri tabanýna eriþim ve nesne yaratma yetkilerinin verilmesi amacýyla GRANT deyimi kullanýlýr.htm (1 of 2) [24. Amacýmýza þu þekilde ulaþabiliriz: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13025.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13025.2006 21:28:08] . Tablo yaratma yetkisi. Bu kullanýcýya tablo ve görünüm yaratma yetkisi vermek istiyoruz.11.3. Görünüm yaratma yetkisi. Örnek CREATE USER deyimini kullanarak BURAK isimli bir kullanýcý yaratmýþtýk. bu tür yetkilere ihtiyacý olacaktýr. Kullanýcýnýn bazý veri tabaný iþlemlerini yerine getirebilmesi için. Kullanýcýya verilebilecek bazý yetkiler aþaðýda sýralanmýþtýr: CREATE_SESSION CREATE_TABLE CREATE_VIEW Veri tabanýna baðlanma yetkisi. GRANT yetkiler TO kullanýcýlar .htm 13. kullanýcýya bazý yetkileri atamasý gerekmektedir. Kullanýcýlara Nesne Yaratma Yetkisinin Verilmesi Veri Tabaný Yöneticisinin kullanýcýyý sisteme tanýttýktan sonra.

2006 21:28:08] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13025.htm GRANT CREATE_TABLE.htm (2 of 2) [24.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13025. CREATE_VIEW TO BURAK.11.

htm 13. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13030. Bu deyim þu þekilde tanýmlanýr: ALTER USER kullanýcý IDENTIFIED BY parola .2006 21:28:09] . Bu parola. ALTER USER deyimi kullanýlýr.11. Veri Tabaný Yöneticisi tarafýndan deðiþtirilebileceði gibi.htm [24. Örnek BURAK isimli kullanýcýnýn eriþim parolasýný KAPLAN olarak belirlemiþtik. Böyle bir amaca ulaþabilmek için. doðal olarak Veri Tabaný Yöneticisi tarafýndan kullanýcýya verilmektedir.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13030. onu yaratan kullanýcý tarafýndan da deðiþtirilebilir. Parola deðiþtirme iþlemini þu þekilde yapabiliriz: ALTER USER BURAK IDENTIFIED BY EYLÜL. Bu parolayý EYLÜL olarak deðiþtirmek istiyoruz. Veri Tabaný Yöneticisi tarafýndan söz konusu kullanýcý için bir eriþim parolasý belirleniyordu. söz konusu kullanýcýnýn ALTER USER yetkisine sahip olmasý gerekmektedir.4. Bu yetki. Bu tür bir iþlemin yapýlabilmesi için. Parolanýn Deðiþtirilmesi Kullanýcý yaratýlýrken.

file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13035. Roller.2006 21:28:09] . Böyle bir amaca ulaþmak için þöyle bir yol izlenir : a) YÖNETÝCÝ isimli rol tanýmlanýr: file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13035. Bu yöntem. grup yetkisinin kaldýrýlabilmesi iþlemlerinde de rollerden yararlanýlabilir. bu rolün tablo ve görünüm yaratma yetkilerine sahip olmasýný istiyoruz.11.5. Roller. Ayrýca bu role BURAK ile BEGÜM isimli kullanýcýlar sahip olacaktýr. Veri Tabaný Yöneticisi tarafýndan yaratýlýr. Rolün belirli kullanýcýlara atanmasý iþlemi de yine. Benzer biçimde. Rol yaratýldýktan sonra. kullanýcýlara ayný yetkilerin verilmesi söz konusu olduðunda yararlý olmaktadýr. Örnek YÖNETÝCÝ isimli bir rol yaratmayý.htm 13. rolün içerdiði her bir yetki GRANT deyimi yardýmýyla belirlenir. GRANT deyimi yardýmýyla gerçekleþtirilir. CREATE ROLE deyimi yardýmýyla þu þekilde oluþturulur: CREATE ROLE rol adý.htm (1 of 2) [24. Yetki Gruplarýnýn Tanýmlanmasý Yetki gruplarýna rol adýný veriyoruz.

htm (2 of 2) [24.2006 21:28:09] . Bu rolün tablo yaratma ve görünüm yaratma yetkilerini içermesi için GRANT deyimi þu þekilde kullanýlýr: GRANT CREATE_TABLE.htm CREATE ROLE YÖNETÝCÝ. c) Bu yetkilere BURAK ve BEGÜM isimli kullanýcýlarýn topluca sahip olmasýný saðlamak için rolün bu kullanýcýlara atanmasý yeterlidir: GRANT YÖNETÝCÝ TO BURAK. CREATE_VIEW TO YÖNETÝCÝ.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13035.BEGÜM. b) YÖNETÝCÝ isimli rol tanýmlanmýþtýr. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13035.11.

INDEX. tablo ve görünümlere verilebilmektedir. GRANT deyimi böyle bir amaca yönelik olarak en basit þu þekilde kullanýlabilir: GRANT yetkiler [(rol adý)] ON nesneler TO kullanýcýlar [roller][PUBLIC].htm (1 of 2) [24.2006 21:28:10] . Bu yetkiler. UPDATE ve REFERENCES iþlemleri için yetki verilebilmektedir.6. DELETE.htm 13. SELECT. belirlenen nesneler üzerinde sahip olunan yetkilerin tüm kullanýcýlara verileceðini ifade eder. Bu deyimle. Veri tabaný içindeki nesnelerin hangi yetkilerle kullanýcýlara sunulacaðýný belirlemek üzere GRANT deyimi kullanýlýr. Bu kez kullanýcýlara nesne kullanma yetkisinin nasýl verilebileceði üzerinde duracaðýz. Veri Tabaný Yöneticisi tarafýndan yetkilerin nasýl atanabileceðini gördük. INSERT.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13040. Örnek 1 BURAK ve BEGÜM isimli kullanýcýlara PERSONEL tablosu üzerinde SELECT deyimini kullanma yetkisini þu þekilde verebiliriz: GRANT SELECT ON PERSONEL TO BURAK. Tanýmda sözü edilen PUBLIC sözcüðü.11. bir nesne üzerinde ALTER. Nesnelere Eriþim Yetkileri Kullanýcýlara. Örnek 2 file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13040. BEGÜM.

htm BÖLÜM tablosunun BÖLÜM_ADI ve KONUM sütunlarýnda güncelleþtirme yapma yetkisini SELÝN kullanýcýsýna ve YÖNETÝCÝ rolüne atamak istiyoruz.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13040. diðer tüm kullanýcýlara vermek gerekiyorsa þu þekilde bir taným yapýlýr: GRANT SELECT ON PERSONEL TO PUBLIC.11. Örnek 3 BURAK kullanýcýsýnýn PERSONEL tablosuna iliþkin olarak sahip olduðu SELECT yetkisini. YÖNETÝCÝ. GRANT deyimi þu þekilde olabilir: GRANT UPDATE (BÖLÜM_ADI.2006 21:28:10] . file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13040. KONUM) ON BÖLÜM TO SELÝN.htm (2 of 2) [24.

INSERT ON PERSONEL TO BURAK.11.file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13045. gerektiðinde geri alýnabilir. Örnek BURAK kullanýcýsýnýn PERSONEL tablosu üzerindeki SELECT ve INSERT iþlemleri yetkilerini iptal etmek istiyoruz. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13045.htm 13. Bunun için REVOKE deyiminden yararlanýlýr.7. Bu deyim þu þekilde tanýmlanýr: REVOKE yetkiler ON nesneler TO kullanýcýlar [roller] [PUBLIC] . Nesne Yetkilerinin Geri Alýnmasý GRANT deyimiyle verilen yetkiler.htm [24.2006 21:28:10] . Bu amaca ulaþmak için þu þekilde bir yol izlenir: REVOKE SELECT.

Aþaðýda verilen tablolarý göz önüne alarak sorularý yanýtlayýnýz.2006 21:28:11] .htm (1 of 2) [24.Untitled Document Testin nasýl cevaplanacaðýný görmek için buraya týklayýnýz.11. file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13055.

11.Untitled Document file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/VT13055.2006 21:28:11] .htm (2 of 2) [24.

. Bu çalışmamızın tüm öğrencilerimize faydalı olması dileğiyle. Sınavlarınızda başarılar.. Dr.htm [24.11.2006 21:28:11] .YM02225 DERS SONU Veri Tabanı Yönetim Sistemleri dersinin sonuna gelmiş bulunmaktayız.. Yalçın Özkan file:///D|/Belgeler/Universite/Donem_III/Dersler/TBIL_403/ders_sonu..

Sign up to vote on this title
UsefulNot useful