verİtabani ders notlari
DESCRIPTION
VERİTABANI DERS NOTLARI. Yrd.Doç.Dr. Buket Doğan. Ders İçeriği. Veritabanı ve ilişkisel veritabanı kavramı, tasarımı ve yönetimini anlamak, veri tabanı sistemlerinin denetimi ve erişimi yöntemlerini ve araçlarını öğrenmek, (SQL komutlarının kullanımı) - PowerPoint PPT PresentationTRANSCRIPT
2
Ders İçeriği Veritabanı ve ilişkisel veritabanı kavramı,
tasarımı ve yönetimini anlamak, veri tabanı sistemlerinin denetimi ve erişimi
yöntemlerini ve araçlarını öğrenmek, (SQL komutlarının kullanımı)
verilecek teori bilgiler temelinde VTYS uygulamalarını (Microsoft Access) yapmaktır.
33
TEMEL KAVRAMLAR Veri Olguların, kavramların, veya talimatların, insan
tarafından veya otomatik yolla iletişim, yorumlama ve işleme amacına uygun bir biçimde ifadesidir.
Genellikle, biz veri veya veri birimleri üzerindeki işlemlerimizi varlık hakkında her hangi bilgi almak için gerçekleştiririz.
Veri kaydedilebilir bilinen gerçeklerdir. Örneğin bir kişinin ismi, adresi, telefon numarası gibi.
4
VERİTABANI NEDİR Veri tabanı
Düzenli bilgiler topluluğudur. Bilgisayar ortamında saklanan düzenli verilerdir. Bilgisayar terminolojisinde, sistematik erişim
imkanı olan, yönetilebilir, güncellenebilir , taşınabilir, birbirleri arasında tanımlı ilişkiler bulunabilen bilgiler kümesidir.
Bilgisayarda sistematik şekilde saklanmış, programlarca işlenebilecek veri yığınıdır
5
Veri Tabanı Yönetim Sistemi-VTYS
Veri tabanı tanımlamak, yaratmak, yaşatmak ve veri tabanına denetimli erişim sağlamak için kullanılan yazılım sistemidir.
6
TEMEL KAVRAMLAR
KLASİK DOSYA YAPILARI Veri saklama birimlerinde depolanan veri
topluluklarına “dosya” adı verilmektedir. Dosyalar ise kendi içersinden kayıtlara
bölünmüştür. Örneğin öğrencilerin bilgilerinin tutulduğu bir
dosyayı düşünelim:
7
TABLO
TEMEL KAVRAMLAR
ADI BABA ADI DOĞUM YERİ
Kayıtlar birbiri ile ilişkili alanlardan(field) oluşmaktadır.Her kayıt farklı bilgileri içermektedir.
KAYITALAN 1
ADI BABA ADI DOĞUM YERİ
ADI BABA ADI DOĞUM YERİ
ALAN 2 ALAN 3
8
DOSYA SİSTEMLERİNİN SAKINCALARI
Klasik dosya sistemleri kullanılmaya başlandıktan sonra bazı dezavantajları olduğu ortaya çıkmıştır. Bunlar şöyle sıralanabilir :
Veri tekrarı: Aynı veri çeşitli dosyalarda birden fazla yer alabilmektedir buda sistemin hantallaşmasına neden olur. Mesela bir stok dosyasında stok numarası verisinin malzeme dosyasında, fatura dosyasında ve ambar girişi dosyasında yer alması gibi.
Verinin birkaç dosyada güncellemesi: Veri birden fazla dosyada tekrar edilebildiği için, verinin bir dosyada güncellenip diğerlerinde güncellenmemesi Veri Bütünlüğünün (Data Integrity) bozulmasına neden olabilir. Buna bağlı olarak birbiri ile çelişen raporlar üretilebilir.
Belleğin tekrarlı bilgi nedeniyle israfı: Aynı verinin birden fazla dosya içinde bulunması nedeniyle kullanılan veri hard diskte fazla yer işgal edecek. Yani hard disk tekrarlı veriler için kullanılmış olacaktır.
Sadece belirli bir dilin kullanılması :Verilerin dosya sisteminde saklandığı ortamlar için değişik programlama dillerinden bir tanesi kullanılır. Kullanılan bu programlama dili ise SQL dili gibi esnek değildir.
9
VERİTABANI SİSTEMLERİ Veritabanı sistemleri, veri kümelerinin düzenli biçimde
tutulduğu ve bu verilerin yazılımlar aracılığı ile yönetildiği ortamlardır.
Veritabanı
Uygulama Programları
Veritabanı Yönetim Sistemi
10
VERİTABANI SİSTEMLERİ VYS’ler aşağıdaki bilgileri barındırmaktadır
İlişkili olan veriler (Collection of interrelated data) Veriye ulaşmak için gerekli olan yazılımlar kümesi
Veritabanı Uygulamaları (Database Applications) Bankalar: tüm işlemler / hareketler Havayolları:rezervasyonlar, zaman programları Üniversiteler:Kayıt, notlar Satış: müşteriler,ürünler, alımlar Çevrimiçi Perakendicileri:Sipariş Kayıtlar, Kişiselleştirilmiş
tavsiyeler. Üretim: imalat, stok, siparişler, tedarik ihtiyaçları İnsan Kaynakları:personel kayıtları,maaşlar, vergi kesintileri
Veritabanları hayatımızın her alanında kullanılmaktadır.
11
Veritabanı Sistemlerinin Üstünlükleri
Verinin tekrarlanmasını önler. Veritabanı sistemleri alt sistemler arasında ilişki kurulması ve birçok
uygulamada verilerin aynı veritabanı içersinde ortak olarak
tasarlanmasını öngörür. Verilerin tutarlı olmasını sağlar. Veri bütünlüğü(data integrity), verinin doğruluğunu ve tutarlığını
ifade etmektedir. Veri girişlerine kısıtlar konularak sadece istenilen
aralıkta değer girişi sağlanabilir.
12
Veritabanı Sistemlerinin Üstünlükleri
Aynı andaki erişimlerde tutarsızlıkların ortaya çıkmasını önler.
Veritabanı uygulamalarında, veritabanı nesneleri başka uygulamalar ve farklı kullanıcılar tarafından paylaşılabilir.
Verilerin güvenliğini sağlar. Her kullanıcının erişeceği veriler ayrı ayrı tanımlanabilir. Yetkiler ve
kısıtlamalar ile istenilen kullanıcı erişim ayarları gerçekleştirilir.
13
Varlık-İlişki Modeli (The Entity-Relationship Model)
Veri çözümleme ve modellemede ilişkilerin ortaya konması için kullanılan araçtır. Varlık (Entity): Bir alan içersinde diğer nesnelerden ayırt
edilebilen bir şey (“thing”) yada “nesne” (“object”) Niteliklerin kümesi (set of attributes) tarafından
tanımlanır. İlişki (Relationship): Birden fazla varlığın arasındaki bağıntı-ilişki.
Görsel olarak varlık-ilişki tablosu ile gösterilir:
14
Varlık-İlişki Modeli Varlık(Entity): Var olan ve diğer varlıklardan
ayırt edilebilen nesnedir. (Bir kitap, öğrenci, veritabanı dersi birer varlıktır.
Varlık Dizisi: Aynı türdeki varlıklar varlık kümesini oluştururlar. Bir okuldaki tüm öğrenciler “öğrenci” isimli varlık kümesi olarak değerlendirilir.
15
İlişki ve İlişki Kümeleri Varlıklar arasındaki bağlantıya ilişki adı
verilir.örneğin “Burak” varlığı ile “Dersler” varlığı arasından ilişki vardır.
İlişki kümesi, aynı türdeki ilişkilerin kümesidir, bu ilişki kümesi R ile gösterilir.
E1,E2,…En varlık kümeleri, R ise ilişkiyi tanımlamaktadır.
16
İlişki ve İlişki Kümeleri E1={Ayşe,Burak} E2={Elektronik, İngilizce} Bu iki küme arasındaki ilişki, öğrenciler ve
dersler arasındaki ilişkidir. Tüm öğrencilerle tüm dersler arasındaki ilişki kartezyen çarpımı yapılarak ifade edilir.
E1xE2={(Ayşe,Elektronik),(Ayşe,İngilizce), (Burak, Elektronik),(Burak,İngilizce)}
İki veri kümesi arasındaki geçerli tüm ilişkiler, R ilişki kümesinin bir alt kümesidir.
17
İlişki ve İlişki KümeleriMüşteri no Müşteri adı Hesaplar Bakiye
101 Ayşe 33344 1.000,00 YTL
203 Mehmet 33567 2.500,00 YTL
405 Derya 33790 45.000,00 YTL
607 Selin 34013 5.000,00 YTL
R1={(Ayşe,33567),(Mehmet,33344)}
R2={(Derya,33790)}
R3={(Selin,34013)}
18
Nitelikler Bir varlık çok sayıda nitelik yardımıyla
tanımlanabilir. Örneğin, personel varlığının nitelikleri şu şekilde olabilir: Personel No Adı ve Soyadı Adres SSK no Gelir
19
Etki Alanı Niteliğin aldığı değerlere etki alanı(domain)
adı verilir.
Adı ve SoyadıBurak ÖzkanDemet DemirAhmet ÖnderBegüm Özkan
Etki Alanı
Nitelik
20
Türetilen Nitelik Bir nitelik kullanılarak, bir başka varlık nitelik
elde edilebiliyorsa bu yeni niteliğe “türetilen nitelik” adı verilir.
Örneğin personel varlığının “doğum tarihi” niteliğinden yararlanılarak “yaş” niteliği elde edilebilir.
21
Çok Değere Sahip Nitelik Bir nitelik birden fazla değer ile eşleşebiliyor
ise, “çok değere sahip nitelik” adı verilir. Örneğin, öğretmen varlığının dersler niteliği
birden fazla değeri kapsar. Bir öğretmen birden fazla derse girmektedir.
Öğrenci varlığının okuduğu kitaplar niteliği birden fazla kitabı kapsayabilir.
22
Birleşik Nitelik Birden fazla nitelik birleştirilerek, yeni bir
nitelik oluşturulabilir. Bu tür niteliklere birleşik nitelik denir
Örneğin personelin “cadde” ve “şehir” nitelikleri birleştirilerek “ADRES” isimli yeni bir nitelik oluşturulabilir.
23
Varlıklar arası İlişkiler(Eşleme) Bir varlıkla ilişkiye girilebilecek varlıkların sayısına
eşleme sayısı adı verilir. Eşleme sayısı n>=2 varlık için söz konusudur ve ikili
ilişkilerin ortaya konulması açısından yararlıdır. A ve B gibi iki varlık kümesi arasındaki R ilişki
kümesi için eşleme durumları şu şekilde ifade edilir: Birden-bire (One to One) Birden-çoğa(One to Many) Çoktan-bire (Many to One) Çoktan-çoğa (Many to Many)
24
Birden-bire İlişki A varlık kümesi içindeki bir varlık, B kümesi
içindeki sadece bir varlık ile ilişkili ise birden-bire ilişki söz konusudur.
a1
a2
a3::
:an
b1
b2
b3::
:bn
25
Birden-bire İlişki
Müşteri no Müşteri adı Hesaplar Bakiye
101 Ayşe 33344 1.000,00 YTL
203 Mehmet 33567 2.500,00 YTL
405 Derya 33790 45.000,00 YTL
607 Selin 34013 5.000,00 YTL
Her müşterinin bir hesabı olabilir.
26
Birden-çoğa İlişki A kümesi içindeki bir varlık B kümesi içindeki birden fazla varlık
ile ilişkili ise, bu ilişkiye birden-çoğa ilişki adı verilir.B kümesindeki bir varlık, A kümesindeki sadece bir varlık ile eşleşebilir.
a1
a2
a3::
:an
b1
b2
b3::
:bn
27
Birden-çoğa İlişki
IDÖğretmen adı NO OGR_ID Girdiği DERS
101 Ayşe 1 101 Matematik
203 Ahmet 2 101 Geometri
405 Derya 3 405 Bilgisayar Prog.
607 Selin 4 405 Office Programları
Öğretmenler birden fazla derse girmektedir.
28
Çoktan-bire İlişki A varlık kümesindeki birden fazla varlık, B
kümesindeki bir varlık ile ilişkili ise bu eşleşmeye çoktan-bire ilişki adı verilir.
a1
a2
a3::
:an
b1
b2
b3::
:bn
29
Çoktan-bire İlişki
ID İsimDoğum.Tarihi
101 Ayşe 3.06.1990
203 Ahmet 12.04.1980
405 Derya 15.04.1983
607 Selin 5.07.1981
No Kişi_ID
DERS
1 101 Matematik2 101 Geometri3 405 Bilg. Prog.4 405 Office Prog
30
Çoktan-Çoğa İlişki A varlık kümesindeki birden fazla varlık, B
kümesindeki birden fazla varlık ile ilişkili ise bu eşleşmeye çoktan-çoğa ilişki adı verilir.
a1
a2
a3::
:an
b1
b2
b3::
:bn
31
Çoktan-Çoğa İlişki Çoktan-çoğa ilişki en genel ilişki biçimidir. Bu
ilişki herhangi bir sınırlamanın olduğu durumlar için geçerli olacaktır.
Müşteri-hesap ilişkilerinde aile üyelerinin ortak hesap açabilmesi durumunda çoktan-çoğa ilişki söz konusu olacaktır.
32
Varoluş Koşulu Eğer bir X varlığının bulunması Y varlığının
bulunmasına bağlı ise, X’in Y’ye bağlı olduğundan söz edilebilir.
Y silinirse, X’in bir anlamı kalmayacaktır. Bu durumda Y baskın varlık(dominant entity) X ise bağımlı varlık(subordinate entity) adı
verilir. Örneğin, bir müşterinin hesabı silineceğinde, bu
müşterinin hesap hareketlerinin de silinmesi gerekmektedir. Hesap hareketleri, hesap varolmadan var olamaz.
33
Anahtar Varlık kümesi içinde, varlıkları birbirinden ayırt etmek için
kullanılan bu tür niteliklere varlık kümesinin anahtarı adı verilir. İki tür anahtar vardır.
Süper anahtar (superkey):Varlık kümesinde yer alan bir varlığı kesin olarak tanımlamaya yarayan anahtara süper anahtar adı verilmketedir. Bu anahtar sadece bir nitelikten oluşabileceği gibi, birden fazla niteliğin birleşiminden de oluşabilir. Süper anahtarlar süper küme oluşturur. Bir süper anahtarın herhangi bir süper kümesi daima bir süper anahtar olarak kabul edilir.
Örneğin SSK no süper anahtardır. Fakat isim alanı süper anahtar olamaz. SSk no ve isim alanı birlikte süper anahtar olarak kabul edilebilir.
34
Anahtar Aday anahtar (candidate key) : Varlık
kümesinde bir varlığı tanımlamaya yarayan bir başka anahtar türü aday anahtar dır.
Bir varlık kümesinin süper anahtarı bir veya daha fazla niteliğin birleşiminden oluşabilmektedir.
Aday anahtar ise, süper anahtar özelliklerine sahip tek nitelikli anahtardır.
Aday anahtarlardan birisi birincil anahtar olarak seçilir.
35
Anahtar Eger bir üniversitede tüm ögrencilerin
numaraları birbirinden farklı ise ögrencileri belirlemek için ögrenci numarası yeterlidir.
Bu durumda ögrenci numarası ögrenci varlık kümesi için aday anahtardır.
İçinde ögrenci numarası bulunan her nitelik grubu ise(ögrenci numarası, adı, soyadı gibi) ise bu varlık kümesinin süper anahtarıdır.
36
Varlık-İlişki Şemaları (Entity-Relationship Model)
Varlık-ilişki modeli ; Veritabanı modelleri içerisinde , varlık ve bu varlıkların birbirleri arasındaki ilişkilere dayanarak herhangi bir ön-veri olmaksızın model oluşturmakta kullanılan modeldir.
Buradaki varlık; benzersiz bir şekilde tanımlanabilen ve bağımsız var olabilme yetisine sahip nesne ya da oluşum olarak tanımlanabilir.
Varlıklar , ev, araba gibi fiziksel nesneler olabileceği gibi müşteri ödemesi veya sipariş gibi soyut nesneleri de içerirler
Güçlü & Zayıf Varlık Kümeleri Her varlık kümesi için bir anahtar bulmak
mümkün olmayabilir. Eğer bir varlık kümesinin niteliklerinden en az bir
anahtar oluşturulabiliyorsa, bu varlık kümesine güçlü (strong) varlık kümesi denir.
Eğer bir varlık kümesinin niteliklerinin tümü alınsa bile bir anahtar oluşturmuyorsa bu varlık kümesine zayıf (weak) varlık kümesi denir.
Zayıf Varlığı Güçlendirmek Zayıf bir varlık kümesinde, niteliklerin değerleri ile
varlıkları birbirinden ayırdetmek mümkün değildir. Zayıf bir varlık kümesinin anlamlı olabilmesi için şu
özelliklere sahip olması gerekir: Bu varlık kümesi ile güçlü bir varlık kümesi arasında birden-bire
ya da (güçlüden-zayıfa) birden-çoğa bir ilişki bulunmalıdır. Zayıf varlıklar için bu ilişkinin var olma bağımlılığı oluşturmalıdır.
Böylece zayıf bir varlığın anahtarı, bağlı olduğu üstün varlığın anahtarına ayırıcı nitelikler eklenerek elde edilir.
Zayıf Varlığı Güçlendirme Örneği Türkiye'deki tüm lise öğrencilerinin bilgilerini
içeren ÖĞRENCİ varlık kümesi zayıf bir varlık kümesidir. Çünkü farklı liselerde öğrenci numarası, adı ve soyadı aynı olan öğrenciler bulunabilir.
ÖĞRENCİ varlık kümesi ile LİSE varlık kümesi arasında bir OKUYAN ilişkisi kurulursa, öğrencileri birbirinden ayırdetmek için kullanılan ÖĞR_NO niteliğine, LİSE varlık kümesinin anahtarı olan LİSE_KODU eklenir. Bu durumda ÖĞRENCİ varlık kümesinin anahtarı (LİSE_KODU, ÖĞR_NO) ikilisi olur.
Rol Aralarında ilişki kurulan varlıklardan her
birinin ilişkideki işlevine varlığın rolü denir. Farklı varlık kümeleri arasındaki ilişkilerde
roller dolaylı yoldan anlaşılabildiği için çoğunlukla açıkça belirtilmez Örneğin, öğrenci ve ders arasında kurulan “aldığı”
ilişkisinde varlıkların rolleri bellidir: öğrenci dersi alan, ders ise öğrenci tarafından alınandır.
42
Varlık-İlişki ŞemalarıVarlıkların aralarında kurulabilecek ilişki türleri aşağıdaki gibi tanımlanır ve model olarak ifade edilir
BÖLÜM-YÖNETİCİ
BÖLÜM- PROJE
44
İkili İlişkiler• İlişkinin büyüklüğü ile ilgilidir
OTOMOBİL1:1ÇALIŞANBire-bir:
ÖĞRENCİ1:NYURT
KULÜPM:NÖĞRENCİ
Bire-çoklu:
Çoka-çoklu:
OTO-TAHSİS
YURTTA-KALMA
ÖĞRENCİ-KULÜP
45
Varlık-İlişki Şemaları
Bir varlığı belirlemeye yarayan, o varlıkla etkileşim kurmak ya da o varlığı kullanmak için gerekli önemli özellikleri (yani varlıkların metadata’ları)
ÇALIŞAN
Soyadı
İkinci Adı
İlk Adı
Adı SSN
Yaşı
Doğ. tar
Projeler
İlişkilerde Nitelik İlişkilerde de tanımlayıcı nitelikler bulunabilir. Aşağıdaki “Miktar” niteliği “Sattığı” ilişkisi için
tanımlayıcı niteliktir.
Mağaza MalSattığı
Mağz. No Mağz. Adı Mal Kodu Mal Adı
Miktar
mn
47
Varlık-İlişki Şemaları
ÖĞRENCİ1:NYURT
OdaSayısı
YurtAdı
YerKirası
ÖğrenciAdı ÖğrenciSınıfı
ÖğrenciNoYURTTA-KALMAYurtAdı
Seçerken Dikkat ! Veri modellemede varlık kümelerinin,
niteliklerin ve ilişki kümelerinin seçimi çok önemlidir, Ancak bunların nasıl seçileceğine ilişkin kesin kurallar da yoktur.
Kuruluşun öncelikleri ve uygulamaların özellikleri yanında veri modellemeyi gerçekleştiren bilişim teknik personelinin anlayışı da düzenlemede etkili olmaktadır.
49
Varlık-İlişki Şemaları
Bir personel varlığının aşağıda belirtilen özelliklere sahip olduğu varsayılsın
Adı Cadde Sokak Apartman Doğum Tarihi Cadde, sokak ve apartman nitelikleri adres ile
birleştirilecektir. Yaş doğum tarihinden elde edilecektir.
51
Varlık-İlişki Şemaları
“Müşteri” ve “Hesap” isimli iki varlık kümesinin nitelikleri aşağıdaki gibidir:
Müşteri: Adı, SskNo, , Adres Hesap: Hesap No, Bakiye
Bu veriler ile varlık-ilişki şemasını oluşturunuz.
52
Varlık-İlişki Şemaları
Adres
Adı
Müşteri 1:1 Hesap
Hesap No Bakiye
MüşHes
Tarih
Adres
SSK NO
Adı
Müşteri 1:1 Hesap
Hesap No Bakiye
MüşHes
Tarih
53
Varlık-ilişki şemalarının tablo haline dönüştürülmesi Adı SSk No Adres
Hesap No Bakiye
Müşteri={SskNo, adı,adres}
Hesap={Hesap No, Bakiye}
Müşteri Hesap ilişkisi için={SSkNo, Hesap No, Tarih}
SSk No Hesap No Tarih
55
Varlık-İlişki Şemaları Bir müşteri birden fazla otomobile sahip olabilir ve her
otomobil modeline birden fazla müşteri sahip olabilir. Bu durumda otomobiller ve müşteriler arasındaki ilişki
çoktan-çoğa biçimindedir. Bu ilişkinin varlık-ilişki şemasını çiziniz.
56
Varlık-İlişki Şemaları
Müşteri M:N Otomobil
Bakiye Müşteri No
Adı
Müşteri
Oto plaka Renk
Sahip
Tarih
Müşteri ve otomobil varlıkları ve sahip ilişkisi için varlık-ilişki şeması
57
Varlık-İlişki Şemaları Müşteri={müşteri no, adı} Otomobil={oto model, renk} Sahip={müşteri no, oto plaka, tarih} Sahip isimli ilişkiye dayanarak aşağıdaki tablo oluşturulabilir.
Müşteri no oto plaka Tarih345 34 GF 67 12.12.2005346 45 HN 34 15.11.2002347 36 BN 67 12.12.2005348 34 AV 45 15.11.2002
Varlık-İlişki Çizelgelerinin Tablolara Dönüştürülmesi Varlık-ilişki modeli kullanılarak veri modelleme
yapıldığında, eğer veri tabanını gerçekleştirmek için ilişkisel bir VTYS kullanılacaksa, oluşturulan varlık-ilişki çizelgesinin ilişki şemalarına dönüştürülmesi gerekir.
Bu amaçla varlık-ilişki modelindeki her farklı kavramın (varlık kümesi, nitelik, ilişki kümesi, ilişki kümesinin tanımlayıcı niteliği, güçlü ve zayıf varlık kümeleri, ..vb) ilişkisel modelde nasıl gösterileceğinin bilinmesi gerekir.
Varlık Kümelerinin Dönüştürülmesi Varlık-ilişki modelindeki her varlık kümesi için
ilişkisel modelde bir ilişki şeması oluşturulur. İlişkinin nitelikleri olarak da varlık kümesinin
nitelikleri kullanılır.
Daha önce verilmiş bir örnek olan, ÖĞRENCİ ve DERS varlık kümelerine karşılık, ilişkisel modelde aşağıdaki ilişki şemaları oluşturulur. ÖĞRENCİ (ÖĞRNO, ADI, SOYADI, CİNSİYETİ,
DOĞTAR) DERS (DKODU, DERSADI, KREDİSİ)
Örnek
ÖĞRENCİ
ADI SOYADI CİNSİYETi
ÖĞRNO DOĞTARDERS
DERSADI
DKODU
KREDİSİ
Zayıf Varlık Kümelerinin Dönüştürülmesi Eğer varlık kümesi en az bir anahtarı bulunan
güçlü bir varlık kümesi ise, ilişki nitelikleri olarak varlık kümesinin niteliklerinin kullanılması yeterlidir.
Ancak eğer varlık kümesi, anahtarı olmayan zayıf bir varlık kümesi ise, ilişki nitelikleri olarak zayıf varlık kümesinin niteliklerinin kullanılması yeterli değildir.
Zayıf Varlık Kümelerinin Dönüştürülmesi Çünkü bu niteliklerin hepsi birlikte alındığında
bile bir anahtar oluşturmadığı ve anahtarı bulunmayan bir ilişkinin olamayacağı bilinmektedir.
Bu nedenle zayıf bir varlık kümesine karşı gelen ilişki şeması oluşturulurken, ilişki nitelikleri olarak zayıf varlık kümesinin niteliklerine ek olarak, bu varlık kümesinin var olma bağımlı olduğu güçlü varlık kümesinin anahtarında yer alan niteliklerde kullanılır.
Daha önce verdiğimiz yukarıdaki çizimdeki güçlü LİSE varlık kümesi ile zayıf ÖĞRENCİ varlık kümelerine karşılık, ilişkisel modelde aşağıdaki ilişki şemaları oluşturulur. LİSE (LİSENO, LİSEADI, KENT) ÖĞRENCİ (LİSENO, ÖĞRNO, ADI, SOYADI)
Örnek
ÖĞRENCİ
ADISOYADI
ÖĞRNO LİSE
LİSEADILİSENO
KENTOKUDUĞU
İlişki Kümelerinin Dönüştürülmesi Genel olarak varlık-ilişki modelindeki her ilişki
kümesi, ilişkisel modelde bir ilişki şemasına dönüştürülür.
Ancak kimi ilişki kümeleri için ilişkisel modelde ayrı bir ilişki şeması oluşturmaya gerek yoktur.
Bunun yerine varlık kümesi için oluşturulan ilişki şemalarından birine, diğer varlık kümesinin anahtarında yer alan nitelikleri eklemek yeterlidir.
Eğer bir ikili ilişki kümesinin türü çoktan-çoğa (ilişki hiçbir yönde işlevsel değil) ise ilişkisel modelde bu ilişki kümesi için ayrı bir şema oluşturulur.
İlişki kümesine karşılık gelen ilişki şemasında, her iki varlık kümesinin anahtarları ile, varsa ilişki tanımlayıcı niteliklerine yer verilir.
İkili Çoktan-Çoğa İlişki Kümelerinin Dönüştürülmesi
Örnek Örneğin SATTIĞI ilişkisi ilişkisel modelde
aşağıda şeması verilen ilişki ile gösterilir.SATTIĞI (MAĞNO, MALKODU, MİKTAR)
MAĞAZA MALSATTIĞI
MAĞNO MAĞADI MALKODU MALADI
MİKTAR
mn
İkiden Büyük Dereceli İlişki Kümelerinin Dönüştürülmesi Eğer bir ilişki kümesi ikiden çok varlık kümesi arasında
kurulmuşsa (ilişki üçlü, dörtlü,.. bir ilişki ise), ilişkisel modelde bu ilişki kümesine karşılık ayrı bir ilişki şeması oluşturulur.
Oluşturulan ilişki şemasında, aralarında ilişki kurulan tüm varlık kümelerinin anahtarlarına ek olarak, varsa ilişkinin tanımlayıcı niteliklerine yer verilir.
KONSER, ESER ve MÜZİSYEN varlık kümeleri arasındaki KATILIM adlı üçlü ilişki kümesini düşünelim.
Örnek
KONSER
TARİHSALON
GÖREVİ
KONSNO
MZSNO
ESER
ESTÜRÜ
ESNO
BESTECİKATILIM
MÜZİSYEN SOYADI
ESADI
ADI
Bu ilişki kümesi hangi konserde, hangi eser çalınırken orkestrada hangi müzisyenlerin yer aldığını ve görevlerinin ne olduğunu göstermektedir.
Örnek
KONSER
TARİHSALON
GÖREVİ
KONSNO
MZSNO
ESER
ESTÜRÜ
ESNO
BESTECİKATILIM
MÜZİSYEN SOYADI
ESADI
ADI
KONSER(KONSNO, TARİH, SALON)ESER(ESNO, ESADI, ESTÜRÜ, BESTECİ)MÜZİSYEN(MZSNO, ADI, SOYADI)
Örnek
KONSER
TARİHSALON
GÖREVİ
KONSNO
MZSNO
ESER
ESTÜRÜ
ESNO
BESTECİKATILIM
MÜZİSYEN SOYADI
ESADI
ADI
Örnek Üçlü KATILIM ilişkisi için, ilişkisel modelde
aşağıdaki ilişki şeması oluşturulur:KATILIM (KONSNO, ESNO, MZSNO, GÖREVİ)
Eğer varlık kümeleri arasındaki ikili eşlemelerin (konser-eser, konser-müzisyen ve eser-müzisyen) her üçü de çoktan-çoğa ise KATILIM ilişkisinin anahtarı, yukarıdaki ilişki şemasında görüldüğü gibi üç varlık kümesinin anahtarlarının birleşiminden oluşur.
73
İlişkisel Model İlişkisel model, günümüzde en yaygın
biçimde kullanılan bir modeldir. İlişkisel model varlıklar arasındaki bağlantının
içerdiği değerlere göre sıralanması esasına dayanır.
Bu yaklaşımda veri tabanındaki tüm ilişkiler tablolar biçiminde tanımlanmaktadır.
74
İlişkisel Veri Tabanı İlişkisel veri tabanı, her biri özel isimlere
sahip tablolardan oluşur. Burada her bir tablo bir varlığa veya bir
ilişkiye karşılık gelmektedir. Tablonun sütunları nitelikleri, satırları ise bu
niteliklerin değerlerini ifade eder. Her bir satır bir “kayıt” olarak da düşünülebilir. Anahtar alan tablonun tanımlayıcısıdır.
75
Tablonun özellikleri Tablolar sütunlardan oluşur. Her bir sütunun ayrı bir adı vardır. Her bir sütun aynı niteliğin tanımladığı aynı
etki alanının belirlediği değerleri içerir. Satırların ve sütunların sırası önemsizdir. Her bir satır birbirinden farklıdır.
76
Soyutsal Katmanlar (Levels of Abstraction
Fiziksel Katman (Physical level): Bir kayıdın nasıl saklanacağını tanımlar(Örneğin,müşteri).
Mantıksal Katman (Logical level): Bir verinin nasıl veritabanında saklanacağını ve veriler arasındaki ilişkileri tanımlar.
tip (type) musteri = kayıt (record) musteri_id : string; musteri_adi : string; musteri_sokak : string; musteri_il : integer;
bitiş (end) Görüntü Katmanı (View level): Tasarımı kullanıcıdan
saklar( Örneğin veri tipi veya hangi bilgilerin görüntüleneceği)
77
Nesneler ve Şemalar Programlama dillerindeki tip ve değişkenlere benzerler Şema (Schema) – Veritabanının mantıksal yapısı
Örnek: Veritabanı,Müşteri ve hesap bilgileri ile bunlar arasındaki ilişkiyi barındıran bir kümedir.
Fiziksel Şema (Physical schema): Fiziksel düzeyde veritabanı tasarımı(Dosyanın sabit dikteki yeri, büyüklüğü..)
Mantıksal Şema (Logical schema): Mantıksal düzeyde veritabanı tasarımı (veri alanları, ilişkiler)
Nesneler (Instance) – Zamandaki herhangi bir noktadaki veritabanı içersindeki içerik. Bir değişkenin değerine benzemektedir.
Fiziksel Veri Bağımsızlığı (Physical Data Independence) – Mantıksal şemayı değiştirmeden fiziksel şemayı değiştirme kabiliyeti Uygulamalar mantıksal şemaya bağlıdır. Genelde , değişik katmanlar ve bileşenler arasındaki arabirimler öyle
tanımlanmalıdırki bazı bölümlerin değiştirilmesi diğerlerini fazla etkilememeli.
78
VERİTABANI ÖRNEĞİ
FİZİKSEL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
ALT ŞEMAB
MANTIKSAL ŞEMA
Uygulama Programı 1
Uygulama Programı 2
Uygulama Programı 4
Uygulama Programı 3
VERİTABANI ŞEMALARI
FİZİKSEL ŞEMA
MANTIKSAL ŞEMA
FİZİKSEL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
FİZİKSEL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
FİZİKSEL VERİTABANI
VERİTABANI ŞEMALARI
FİZİKSEL ŞEMA
MANTIKSAL ŞEMA
FİZİKSEL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
MANTIKSAL ŞEMA
ALT ŞEMAA
KULLANICILAR
79
VERİ MODELLERİ Asağıdakilerini tanımlayan araç topluluğu
Veri (Data) Veri İlişkileri (Data relationships) Veri Kısıtlamaları (Data constraints)
İlişkisel Model (Relational model) Varlık-ilişki veri modeli (Entity-Relationship
data model) (Coğunlukla veri tabanı dizaynı için)
80
İlişkisel Veritabanı• İlişkisel veritabanı ilişkisel model bazlıdır.• Veri etrafındaki bilgi ve ilişkiler tablolar tarafından gösterilir
Öznitelikler (Attributes)
81
İlişki Gösterimi İlişkinin o anki değerleri (relation instance) bir tablo tarafından
gösterilir. r deki bir t elemanı bir değerdir ve tablodaki bir satır (row) ile
gösterilir. Değerlerin sırası önemli değildir. (Değerler keyfi sırada olabilir)
JonesSmithCurryLindsay
customer_name
MainNorthNorthPark
customer_street
HarrisonRyeRyePittsfield
customer_city
customer
Öznitellikler (veya sütunlar)attributes
(or columns)
Değerler (yada satırlar)
tuples(or rows)
82
Veritabanı Bir veritabanı birden fazla ilişkiye sahiptir. Bir şirketin bilgisi birden fazla parçaya bölünmüştür, her parça bilginin bazı
bölgelerini ilişkilendirir
account : hesaplar hakkındaki bilgiyi tutar. depositor : hangi müşterinin hangi hesabı tuttuğunu gösteren bilgiyi
saklar customer : müşteri hakkındaki bilgileri tutar
Bütün bilgilerin tek bir ilişkide saklanması örneğin bank(account_number, balance, customer_name, ..)aşağıdaki sonuçlara yol açabilir Bilginin tekrarlanması (repetition of information)
Örneğin iki müşteri tek hesaba sahip (ne tekrarlar?) Boş değerlerin ihtiyaçı
Örneğin hesabı olmayan müşterinin gösterimi Normalizasyon teorisi (Normalization theory) ilişkisel veri tabanının tasarımından
bahsetmektedir
83
TEMEL KAVRAMLAR Alan(Field) : Veritabanı tabloları içerisinde saklanacak verinin içeriğine
göre, fiziksel tipi belirlenen (Sayı,String vb.) ve isimlendirilen bölümlere denir.(Örnek : Bir field içerisinde bir iş yerindeki personele ait "isim" bilgisi saklanacak ise, programın kontrolü açısından alan(field) ismininde içerik ile ilgili seçilmesi tercih edilir yani "PersonelIsim" veya benzer bir alan(field) ismi seçilmelidir.
Tablo(Table) : İçeriklerine göre ayrıştırlımış alan(field) topluluklarına tablo denir, tablolar veri tabanlarını oluşturan bilgi depolarıdır.
84
BİRİNCİL VE YABANCI ANAHTAR Birincil Anahtar(Primary Key) : Üzerinde işlem yapılan tabloya ait kayıtları
benzersiz olarak tanımlayan alanlardır. Örneğin bir okulu ele alalım burda öğrencileri benzersiz biçimde tanımlayabilen
en önemli öge şüphesiz ki ögrenci numarasıdır.Bir okulda,isim,soyisim gibi kimilik bilgilerl aynı olabilecek bir çok öğrenci mevcut olabilir fakat,hiç bir öğrencinin, o öğrenciyi tanımlayan, öğrenci numarası aynı olamaz benzer bir mantık ile telefon numaraları da düşünülebilir.
Yabancı Anahtarlar(Foreign Keys) : Tablo içerisindeki verilerin birbirleri ile iletişim kurabilmeleri amacı ile kullanılan benzersiz olması gerekmeyen alanlardır.
Örneğin içerisinde "Ogrenci_No" birincil anahtarını barındıran "Ogrenciler" isimli tablonun var olduğunu varsayalım ayrıca "Notlar" isimli bir tablonun içerisinde, aynı "Ogrenci_No" alanını çesitli defalar yabancı anahtar olarak kullanmamız gerekebilir (Çünkü, genellikle bir öğrencinin birden fazla dersi ve dolayısıyla "Notlar" isimli tabloya işlenmesi gereken birden fazla sınav notu olacaktır.)
Bağımsız tablolarda bu şekilde organize edilmiş veriye "ilişkisel(Relational)" bu veriyi içeren veritabanına ise "ilişkisel veritabanı" ismi verilir.Veritabanlarındaki verinin okunması ve yönetilmesi için kullanılan ortak sorgulama diline Yapısal Sorgulama Dili (Structured Query Language (SQL) ) denir.
85
BİRİNCİL VE YABANCI ANAHTAR
B_ no isim1 muhasebe2 insan kaynakları3 IT
Calısan_ no B_ no isim1 2 Nora Edwards2 3 Ajay Patel3 2 Ben Smith4 1 Brian Burnett5 3 J ohn O'Leary6 3 J ulia Lenin
BÖLÜM
ÇALIŞANLAR
BİRİNCİL ANAHTAR
YABANCI ANAHTAR
86
Fonksiyonel Bağımlılık R’nin ilişkiyi(relation) ; A ve B’nin bir nitelik veya nitelik setini temsil
ettiğini düşünelim. Eğer R ilişkisinde her bir A değeri , tam
olarak bir B değerine işaret ediyorsa ; B, A ya fonksiyonel olarak bağımlıdır
diyebiliriz A -> B (A fonksiyonel olarak B’yi tanımlar.)
87
Fonksiyonel BağımlılıkID İSİM ŞEHİR123 Ahmet Ankara324 Derya Ankara574 Derya İstanbul Kişiler tablosu ile ilgili neler söyleyebiliriz? “Eğer ID numarasını biliyorsam, ismini de biliyorum” ID numarası ismi belirmektedir. İSİM niteliği, ID’ye fonksiyonel bağımlıdır.
88
Fonksiyonel Bağımlılık
Yukarıdaki ogrenci tablosunu ele aldığımız zaman aşağıdaki bağımlılıklardan söz edebiliriz.ogr_no -> ogr_name ogr_no - > ogr_name , bolum , sinif , kimlik_nokimlik_no - > ogr_no , ogr_name , bolum , sinif
A -> B A fonksiyonel olarak B’yi tanımlar.)
Fonksiyonel(İşlevsel) Bağımlılık R’nin ilişkiyi(relation) ; A ve B’nin bir attribute yada attribute setini
temsil ettiğini düşünelim. Eğer R ilişkisinde her bir A değeri , tam
olarak bir B değerine işaret ediyorsa ; B, A ya fonksiyonel olarak bağımlıdır
diyebiliriz A -> B (A fonksiyonel olarak B’yi tanımlar.)
90
Normalleştirme İlişkisel veritabanı oluşturmak için normalleştirmeyi
bilmek çok önemlidir. Normalleştirme veri kayıplarını engellemek, verinin
tekrarını azaltmak, silme, güncelleme eklemede çıkan zorlukları en aza indirmek icin yapılan operasyonlar toplamidir
Amac veritabanına etkinlik kazandırmaktır. Herhangi bir tablonun tekrarlı veriler içerdiği duruma
birinci normal form denir. Birinci normal formdaki bir tabloda tekrarlayan sütunlar
bulunmamalıdır. Normalizasyon (Ayrıştırma), bir tabloyu tekrarlardan
arındırmak için daha az satır ve sütun içeren alt kümelerine ayrıştırma işlemidir
91
Normalleştirme(Normalizasyon) Normalleştirilmemiş bir tabloda çok değerli nitelikler
ve tekrarlanan gruplar vardır.
Normal Forms: Review Unnormalized – Çok değerli nitelikler ve
tekrarlayan gruplar vardır 1 NF- Çok değerli nitelikler ve tekrarlayan
gruplar ortadan kaldırılır. 2 NF – 1 NF + kısmi bağımlılık ortadan
kaldırılır. 3 NF – 2 NF + Geçişken bağımlılık ortadan
kaldırılır.
Birinci Normal Form
Örneğin kitap tablosunda, birden fazla yazarı olan kitap için yazar1, yazar2, yazar3 diye alanlar açsaydık, bu kurala uymamış olurduk. Böyle bir durumda, ayrıca yazarlar tablosu da oluşturarak kuralı çiğnememiş oluruz.
Genellikle yapılan hata: Verileri virgül veya bir başka karakter ile ayırıp aynı alana girmek. Daha sonra program içerisinde split ile bu değerleri ayırmak. Ancak bu ilişkisel veritabanının doğasına terstir.
BİRİN Cİ NORMAL FORM
Veri tabanı için temel kuralları içerir. Tekrarlayan sütunların olması engellenir. İlişkili veri gruplarına ait ayrı tablolar
oluşturulmalı ve her satır birincil anahtar ile temsil edilmelidir.
Müşterilere ait telefon numaralarını içerecek bir veritabanı tasarlamak istediğimizde aşağıdaki tasarımlar Birinci Normal formda değildir.
97
İkinci Normal Form
Bir tablo için, anahtar alan dışındaki her alan, birincil anahtar olarak tanımlı tüm alan veya alanlara bağlı olmak zorundadır.
Kayıtlar bir tablonun birincil anahtarı dışında bir öğeye bağımlı olmamalıdır.
KISMİ BAĞIMLILIKLAR KALDIRILMALIDIR. Birden çok kayıt için geçerli olan değer
kümeleri için ayrı tablolar oluşturmalıdır. Bu tabloları bir yabancı anahtarla
ilişkilendirilmesi gerekir
Kısmi bağımlılık(Partial Dependency)
Anahtar olmayan alan, birleşik anahtarın sadece bir kısmı ile belirlenebiliyorsa, buna kısmi bağımlılık denir.
2NF’a Geçiş
STUDENT
Stud_ID Name Course_ID Credit
101 Lennon MSI 250 3,00
101 Lennon MSI 415 3,00
125 Johnson MSI 331 3,00
Nitelikler, birincil alanın tamamına bağımlı olmalıdır, bir kısmına değil.
Kısmi bağımlı olan olan ayrı bir tabloya alınmalıdır.
2NF’a GeçişCUSTOMER
Stud_ID Name Course_ID Credit
101 Lennon MSI 250 3,00
101 Lennon MSI 415 3,00
125 Johnson MSI 331 3,00
STUDENT_COURSE
Stud_ID Course_ID
101 MSI 250
101 MSI 415
125 MSI 331
COURSE
Course_ID Credit
MSI 250 3,00
MSI 415 3,00
MSI 331 3,00
STUDENT
Stud_ID Name
101 Lennon
101 Lennon
125 Johnson
101
Kısmi bağımlılık (Partial Dependency)
Ders No ve Bölüm no birlikte Ders Adını tanımlamaktadır
Bölüm No ise, bölüm adını tanımlamaktadır. Bölüm adının Ders no ile bir bağlantısı yoktur.
Bölüm No Ders No Ders Adı Bölüm Adı
2232
İKİNCİ NORMAL FORM
Tekrarlayan veriler tablodan kaldırılmalıdır.
Satırlarda tekrarlanan veri gruplarını engellemek için bu alanları ayrı bir tabloya taşımak gerekmektedir.
Oluşturulan tablolar arasındaki ilişkiler yabancı anahtar (foreign key) aracılığı ile oluşturulur.
105
A,B,C niteliklilerini içeren 3 nitelikli bir tabloda
A, B, ve C için A B B C fonksiyonel bağımlılıkları bulunmakta
ise, C kısmi olarak A’ya B aracılığı ile bağımlıdır.
Geçişken Bağımlılık( Transitive Dependency)
Üçüncü Normal Form Geçişken bağımlılıklar kaldırılmalıdır. Her sütun direkt olarak birincil anahtara bağımlı
olmalıdır Birincil anahtara bağlı olmayan alanlar ayrı bir
tabloya alınmalıdır. Üçüncü normal formda tablonun, Primary Key ile direk
ilişkisi bulunmayan, ancak diğer alanlara bağlı alanlar bulunur.
Geçişken Bağımlılık( Transitive Dependency) 3NF’ a geçiş
Manager alanı anahtar olmayan Dept. alanına bağlıdır.
Örnek ISBN Title ISBN Publisher Publisher Address
BOOK
ISBN Title Publisher Address
Her nitelik doğrudan veya dolaylı birincil anahtara bağlıdır. Tekrarlayan nitelik
yoktur.1NF özellikleri taşımaktadır.
Örnek ISBN Title ISBN Publisher Publisher Address
BOOK
ISBN Title Publisher Address
İlişki en azından1NF özelliklierini taşımaktadır. Birleşik birincil anahtar yoktur. Bu nedenle kısmi bağımlılık olamaz. Bu tablo 2NF’dedir.
Örnek ISBN Title ISBN Publisher Publisher Address
BOOK
ISBN Title Publisher Address
Publisher anahtar olmayan bir alandır ve diğer anahtar olmayan
bir alan olan adresi belirlemektedir. Geçişken
bağımlılık söz konusudur. İlişki 3NF’de değildir.
Örnek ISBN Title ISBN Publisher Publisher Address
BOOK
ISBN Title Publisher Address
Sonuç olarak bu tablo 2NF’dedir.
Öğrenci No, Öğrenci Adı, Ders Adı, Dersin Kredisi bilgilerini tutacak bir tablo için tasarım yapalım
113
120
3NF(TÜM TABLOLAR)
Müş.No Müş.AdıMüş.No İşlemNo KiraBaşl. KiraBitiş
İşlem No Adres Kira SahipNo
SahipNo SahipAdı
Birinci tablo 2NF’de Fakat ikinci tabloda bileşik anahtarın sadece bir kısmına
bağımlı alan alanlar var. Employee name, Department No and Department Name
alanları SADECE Employee No’ya bağlıdır. Bu ALANLARIN BAŞKA TABLOAYA ALINMASI GEREKİR.
Hourly Rate ise, Project Code ve Employee No alanlarının ikisine birden bağlıdır. Her çalışan farklı projeler için farklı ödemeler alabilir.
131
Anahtar olmayan alanlar arasında bir bağımlılık var mı?
Yani bir A alanındaki değere karşılık hep aynı B değeri mi karşılık gelmektedir?
Eğer böyle bir durum varsa bu alanlar ayrı bir tabloya taşınmalıdır.
134
139
VERİ TÜRLERİ TABLONUN ALAN İSİMLERİ
BELİRLENDİKTEN SONRA, HER BİR ALANIN İÇERDİĞİ VERİ TÜRÜNÜNÜ DE BELİRTİLMESİ GEREKİR.
VERİ TÜRÜ METİN, NOT, SAYI,TARİH/SAAT, PARA BİRİMİ, OTOMATİK SAYI, EVET/HAYIR, OLE NESNESİ VEYA KÖPRÜ OLABİLİR.
140
DÖRDÜNCÜ NORMAL FORM Tablolarda çok değerli
bağımlılık yer almamalıdır. Yandaki tabloda Öğretim Üyesi
dersle ilişkili durumdadır. Fakat dersler ve kitaplar
birbirinden bağımsızdır. ELC212 dersi için yeni bir kitap eklemek istersek, Öğretim üyesinin adını da yazmak zorunda kalırız.
Ders Kitap Öğretim Üyesi
ELC212 Silberschatz John D
ELC212 Nederpelt John D
ELC212 Silberschatz William M
ELC212 Nederpelt William M
ELC212 Silberschatz Christian G
ELC212 Nederpelt Christian G
EDC102 Silberschatz John D
EDC102 Silberschatz William M
141
DÖRDÜNCÜ NORMAL FORM Aynı şekilde öğretim üyesi eklemek istersek kitap adı yazmak zorunda kalırız. Bu alanları boş bırakırsak yine tabloda BOŞ alan soruna neden olmuş oluruz.
Bu problemi ayrı iki tablo ile çözebiliriz.
DERS KİTAP DERS ÖĞRETİM ÜYESİ
Ders Kitap Öğretim Üyesi
ELC212 Silberschatz John D
ELC212 Nederpelt John D
ELC212 Silberschatz William M
ELC212 Nederpelt William M
ELC212 Silberschatz Christian G
ELC212 Nederpelt Christian G
EDC102 Silberschatz John D
EDC102 Silberschatz William M
144
MÜŞTERİ NO ADI SOYADI ADRES
SİPARİŞ NO SİP TARİH
ÜRÜN NO Kategorisi MARKA ÜRÜN ADI FİYAT ADET
101AHMET DEMİRGÜNAY CAD. NO:15 SAKARYA 1210 12.10.2010 1230Bilgisayar CASPER CASPER CD.GLE6500S
565,00 TL 1
101AHMET DEMİRGÜNAY CAD. NO:15 SAKARYA 1215 13.10.2010 1323Yazılım MICROSOFT WINDOWS 7 HOME 240,00 TL 2
101AHMET DEMİRGÜNAY CAD. NO:15 SAKARYA 1218 14.10.2010 1235Telefon NOKIA
NOKIA 5800 RED 468,00 TL 1
102DEMET TAŞATATÜRK CAD.NO:16 KOZYATAĞI İSTANBUL 1245 12.10.2010 1230Bilgisayar CASPER CASPER CD.GLE6500S
565,00 TL 1
102DEMET TAŞATATÜRK CAD.NO:16 KOZYATAĞI İSTANBUL 1246 15.10.2010 1234Telefon APPLE IPHONE 3GS 8GB SİY
AH
1.256,00 TL 2
105MEHMET DOĞAN
ŞAİR NEDİM SOK. NİŞANTAŞI İSTANBUL 1252 12.10.2010 1234 TelefonAPPLE IPHONE 3GS 8GB SİY
AH
1.256,00 TL 2
145
METİN EN FAZLA 255 KARAKTERLİK
ALFASAYISAL KARAKTERLERDİR. ÖRNEĞİN PERSONEL ADI, SOYADI... BÖYLE ALANLAR ÜZERİNDE DOĞRUDAN
DOĞRUYA MATEMATİKSEL İŞLEMLER YAPILAMAZ.
146
NOT BAZEN TABLO İÇİNDE UZUN
AÇIKLAMALAR YAPMAK GEREKEBİLİR. BU TÜR ALANLARA 65.500 KARAKTER UZUNLUĞUNDA VERİ KAYDEDİLEBİLİR.
147
SAYI SAYISAL DEĞERLER İÇİN KULLANILIR. BYTE, TAMSAYI, UZUN TAMSAYI, ÇİFT VE
TEK DUYARLIKLI TANIMLARI YAPILABİLİR.
149
PARA BİRİMİ ÖZELLİKLE BÜYÜK PARASAL
GEĞERLERİN KULLANILDIĞI ALANLARDIR.
SAYININ TAMSAYI KISMI EN FAZLA 15, ONDALIKLI KISMI EN FAZLA 4 KARAKTER OLABİLİR.
150
OTOMATİK SAYI BÖYLE VERİ TÜRÜNE SAHİP ALANLAR,
TABLOYA YENİ BİR KAYIT EKLENDİĞİNDE, ACCESS TARAFINDAN OTOMATİK OLARAK ÜRETİLEN SIRALI YA DA RASTLANTISAL DEDEĞERE SAHİP OLURLAR.
BU ALANDA BELİRTİLEN SAYISAL DEĞER TEKTİR VE AYRI KAYITLARDA BİRBİRİNİN AYNI OLAMAZ.
151
BOLEAN (EVET/HAYIR ) 1 BYTE’LIK UZUNLUĞA SAHİP BU
ALANLAR EVET VEYA HAYIR BİÇİMİNDEKİ VERİLERİN SAKLANMASI İÇİN KULLANILIR.
152
OLE NESNESİ EĞER TABLO ALANLARINDA RESİM, SES
VEYA GRAFİK GİBİ OLE NESNELERİNİN SAKLANMASI SÖZKONUSU İSE BU TANIMLAMA YAPILIR.
BU ALANIN BÜYÜKLÜĞÜ EN FAZLA 1 GB OLABİLİR.
INTEGER (TAMSAYI)
2 BYTE’LIK İŞARETLİ TAMSAYI TİPİDİR. -32.768 İLE 32.767 ARASINDA BİR DEĞER
ALABİLİR.
LONG (UZUN TAMSAYI)
4 BYTE’LIK İŞARETLİ TAMSAYI TİPİDİR. -2.147.483.648 İLE 2.147.483.647
ARASINDA BİR DEĞER ALABİLİR.
DİKKAT !!!!
BYTE, INTEGER VE LONG TİPİNDEKİ DEĞİŞKENLERE ONDALIK SAYI ATANIRSA, SAYI EN YAKIN TAMSAYIYA YUVARLANIR. Dim i as integer i=4.3 ‘ i=4 olarak atanır i=4.5 ‘ i=5 olarak atanır i=4.6 ‘ i=5 olarak atanır.
SINGLE (TEK)
4 BYTE’LIK ONDALIK SAYI TİPİDİR. (+/-)3.402823E38 İLE (+/-)1.401298E-45
ARASINDA DEĞER ALABİLİR. ONDALIK OLARAK EN FAZLA 7 HANE
SAKLAYABİLİR.
DOUBLE (ÇİFT)
8 BYTE’LIK ONDALIK SAYI TİPİDİR. (+/-)1.79769313486232E308 İLE
(+/-)4.94065645841247E-324 ARASINDA DEĞER ALABİLİR.
ONDALIK OLARAK EN FAZLA 7 HANE SAKLAYABİLİR.
CURRENCY
8 BYTE’LIK ONDALIK SAYI TİPİDİR. ANCAK SAYININ ONDALIK KISMI 4
BASAMAKTAN FAZLA OLAMAZ. BU TİP, DAHA ÇOK PARA HESAPLARI VE
VİRGÜLDEN SONRAKİ HASSASİYETİ ÖNEMSİZ OLAN İŞLEMLER İÇİN KULLANILIR.
CURRENCY
922337203685477.5808 İLE 922337203685477.5808 ARASINDA DEĞER ALABİLİR. Dim i as currency i=4.30571 ‘i=4.3057 i=4.30575 ‘i=4.3058
OLARAK ATANIR.
DECIMAL (ONDALIK)
14 BYTE’LIK VERİ TİPİDİR. BU TİPİN EN ÖNEMLİ ÖZELLİĞİ,SAYIDAKİ
BÜTÜN BASAMAKLARIN TUTULMASIDIR. BU VERİ TÜRÜ 28 ONDALİK KARAKTER
SAKLAYABİLİR.
163
INPUT MASK (MASKE) VERİLERİN BELİRLİ KURALLARA
UYMASINI SAĞLAYAN KISITLAMALARDIR. ÖRNEĞİN BİR ALANA SADECE SAYISAL
DEĞERLERİN GİRİLMESİ ZORLANABİLİR.
164
INPUT MASK (MASKE)
MASKENİN OLUŞTURULMASINDA BAZI ÖZEL İŞERETLERDEN YARARLANILIR.
?:A-Z ARASI ALFABETİK KARAKTER. L: A-Z ARASI ALFABETİK KARAKTER.* #:0-9 ARASI RAKAM VEYA BOŞLUK. 0:0-9 ARASI RAKAM* 9: 0-9 ARASI RAKAM VEYA BOŞLUK.
*giriş zorunlu
Validation Rule Sadece a..z arası harf: Is Null OR Not Like "*[!a-z]*“ Sadece 0..9 arası rakam: Is Null OR Not Like "*[!0-9]*“ 8 karakter: Is Null OR Like "????????“ Is Null OR "M" Or "F" Sadece pozitif sayı Is Null OR >= 0 1000 ile 9999 sayıları arasında değer:Is Null OR Between 1000 And
9999
166
INPUT MASK (GİRİŞ MASKESİ)
MASKENİN OLUŞTURULMASINDA BAZI ÖZEL İŞERETLERDEN YARARLANILIR.
?:A-Z ARASI ALFABETİK KARAKTER. L: A-Z ARASI ALFABETİK KARAKTER.* #:0-9 ARASI RAKAM VEYA BOŞLUK + VE –
KULLANILABİLİR. 0:0-9 ARASI RAKAM* 9: 0-9 ARASI RAKAM VEYA BOŞLUK.
*giriş zorunlu
Geçerlik kuralı (Validation Rule) “E" Or “K" >= 0 1000 ile 9999 sayıları arasında değer: Between 1000 And 9999
171
SQL SQL Yapısal sorgulama dili (SQL - Structured Query Language)
ilişkisel veri tabanı dilidir. SQL veri tabanında yeni tablo oluşturma, veri ekleme, silme, düzeltme, güncelleme, sorgulama ve koruma ve daha çok sayıda işlemin bir anda yapılmasını sağlar.
SQL dili IBM tarafından 1979’da oluşturulduktan sonra SQL dilinin kullanımındaki farklılıkları ortadan kaldırmak ve bu konuda bir standart yakalamak için 1983 yılında ANSI ve ISO bir araya gelerek bir çalışma başlatmış ve 1987 yılında resmi olmayan ilk SQL standardı olan SQL1'i ortaya çıkarmıştır. Bu standardın yetersiz kalmasının ardından 1989 yılında SQL89 adında yine aynı kurumlar tarafından yeni bir standart geliştirilmiştir. Daha sonra 1992 yılında SQL2 diye bir standart çıkarılmıştır
172
Veri Tipi Kullanımı Örnek
Char,Character(n)
N tane karakterden oluşan karakter katarını gösterir.
Charakter(5);"Ahmet","mehme" Charakter(3); "Ali","Bab"
Int, integer; Kullanıldığı ortama göre değişen, genelde dört byte'tan oluşan bir tamsayı tipi. İnt; 5, 56, 2343455, 414444454
Smallint;Kullanıldığı ortama göre değişen, genelde iki
byte'tan oluşan daha küçük bir tamsayı tipi.
Smallint; 4, 45, 452, 64251
Float; Kayan noktalı bir sayı tipi. Float; 4.7 , 54.12 , 44.24
Double; Yüksek duyarlı bir kayan noktalı bir sayı tipi. Double; 477544.452154545452
Numeric(n); N adet rakamdan oluşan ölçekli bir kayan sayı tipi.
Numeric(4); 4541,12,1542,1111Numeric(3); 142,14,1,111,222
Date; Bir tarihi temsil eder. Date; 25.12.1977 , 25/12/2002
Blop; Büyük miktarda ikilik sayı tutabilir.
173
Yeni gelişmeler karşısında SQL diline bir çok yeni özellikler (özellikle nesneye yönelik olmak üzere) eklenmiş ve yeni uygulamaların ihtiyaçlarını karşılamak için yeni eklentiler yapılmıştır. Böylece resmi olmamakla beraber SQL3 ortaya çıkmış oldu.
SQL, isminin belirttiği gibi sadece bir veri tabanı sorgulamak ve onun verisini idare etmek için değil onu tanımlamak için de kullanılır. SQL aslında iki alandan meydana gelmiştir.
Veri tabanı ve tabloların oluşturulması için komutlar içeren kısmı
Sorgu komutları içeren kısmı
174
SQL KOMUT TÜRLERİ DDL (Data Definition Language): Veri tanımlama
deyimleri. (veritabanı üzerinde nesne yaratmak için kullanılırlar, CREATE ALTER,DROP)
) DML (Data Manuplation Language) : Veri düzenleme
dili. (Veritabanı içindeki verileri elde etmek ve değiştirmekle ilgili SQL deyimleridir,SELECT,INSERT, UPDATE) )
DCL (Data Control Language): Veri kontrol dili. (Veritabanındaki kullanıcı haklarını düzenlemek için kullanılan deyimlerdir, GRANT, DENY, REVOKE )
Tablo oluşturmak için:CREATE TABLE TabloADI (Alan_Adı Veri_türü(Boyutu), [NULL | NOT NULL][isteğe bağlı kısıtlar]);
176
Kısıt Kullanımı CREATE TABLE Toys(ToyID INTEGER CONSTRAINT ToyPk PRIMARY
KEY,ToyName CHAR (30) NOT NULL,Price MONEY NOT NULL,Description CHAR (40) NULL);
183
CREATE TABLE Toys ( ToyID INTEGER, ToyName CHAR (30) NOT NULL, Price MONEY NOT NULL, Description CHAR (40) NULL, CONSTRAINT ToyPk PRIMARY KEY
(ToyId,ToyName) );
184
Örnek NULL: Değer girilmeden boş bırakılabilir alan. NOT NULL: Boş bırakılamaz. Varsayılan olarak NULL özelliği verilir
ACCESS tarafından yeni oluşturulan alanlara.
PRIMARY KEY: Birincil anahtar özelliği verir. Aynı değer girilemez ve varsayılan özelliği NOT NULL’dur.
185
CREATE TABLE Manufacturers ( ManufacturerID INTEGER CONSTRAINT ManfID
PRIMARY KEY, ToyID2 INTEGER NOT NULL, CompanyName CHAR (50) NOT NULL, Address CHAR (50) NOT NULL, PhoneNumber CHAR (8) NOT NULL UNIQUE, CONSTRAINT ToyFk FOREIGN KEY (ToyID2)
REFERENCES Toys (ToyID)
);
186
UNIQUE : Girilen değerlerin her kayıt için farklı olmasını sağlar. Birincil anahtar gibidir fakat bir tabloda, birden fazla alana bu özellik verilebilir.
187
Tablo Tasarımında Güncelleme ALTER TABLE Tablename: ALTER TABLE komut ile var olan bir tabloya
alan ekleyebilir, alan silebilir, var olan alanların türünü ve adlarını düzenleyebilir.
ADD COLUMN ColumnName ColumnType (Size) ColumnConstraint |
DROP COLUMN ColumnName | ADD CONSTRAINT ColumnConstraint | DROP CONSTRAINT ColumnConstraint;
188
Tabloya Alan Ekleme:Var olan bir tabloya alan eklemek için kullanacağımız ALTER TABLE komutu aşağıdaki gibidir.ALTER TABLE tablo_adi ADD alan_adi alan_turu;ALTER TABLE Uyeler ADD Yer CHAR(50);
ALTER TABLE Toys ADD Renk char(15)
189
Tablodaki Alanları DüzenlemeTablodaki varolan alanları düzenlemek için kullanacağımız ALTER TABLE komutu aşağıdaki gibidir. ALTER TABLE Toys
ALTER COLUMN Renk CHAR(100);
192
Alan Silme
Tablodaki varolan bir alanı silmek için kullanacağımız ALTER TABLE komutu aşağıdaki gibidir.ALTER TABLE tablo_adi DROP COLUMN alan_adi;
ALTER TABLE Toys DROP COLUMN Renk ALTER TABLE Ürünler DROP COLUMN
Tanım 194
ALTER TABLE Toys ADD CONSTRAINT CheckAmount CHECK (Price > 3);
ALTER TABLE Toys DROP CONSTRAINT CheckAmount; ALTER TABLE toys DROP CONSTRAINT Toypk
195
Kısıt Eklemek ALTER TABLE Ürünler ADD CONSTRAINT Kısıt2 UNIQUE
(Üretim_Yeri); ALTER TABLE Ürünler ADD CONSTRAINT Kısıt1 UNIQUE (ID);Kısıt Silmek ALTER TABLE Ürünler DROP CONSTRAINT
kısıt2
196
Uygulama Örnek Araba kiralama şirketinin kullanacağı bir
veritabanını DML deyimlerini kullanarak oluşturunuz.
Arabalar: Arabanın plakası, markası, yakıt türü,Günlük Kirası
Müşteriler: Adı soyadı, tckimlik, adres, telefon Kiralama: Hangi Araba, Kim Kiraladı,
Başlangıç tarihi, Bitiş Tarihi
197
2NF - remove partial dependencies
CUSTOMER (CustNo,CustName, CustAddress)
ORDER (OrderNo ,CustNo,, ProdNo, ProdDesc, Qty, DateOrdered)
199
3NF - remove transitive dependencies CUSTOMER (CustName, CustAddress)
ORDER (OrderNo ,CustNo,, ProdNo, Qty, DateOrdered)
PRODUCT (ProdNo, ProdDesc)
200
SELECT SELECT (ALAN LİSTESİ) FROM Tablo_adı SELECT * FROM Tablo _adı
SELECT * FROM Ürünler
SELECT [Sağlayıcı No'ları], [Ürün Adı], [Liste Fiyatı] FROM Ürünler
214
SELECT…..ORDER BY SELECT [Sağlayıcı No'ları], [Ürün Adı], [Liste
Fiyatı] FROM Ürünler ORDER BY [Liste Fiyatı] Varsayılan olarak artan şekilde sıralar. Azalan şekilde sıralamak için DESC deyimi
kullanılır. SELECT [Sağlayıcı No'ları], [Ürün Adı], [Liste
Fiyatı] FROM Ürünler ORDER BY [Liste Fiyatı] DESC
215
SELECT [Sağlayıcı No'ları], [Ürün Adı], [Liste Fiyatı] FROM Ürünler ORDER BY [Liste Fiyatı] DESC, [Ürün Adı] ASC
ASC: Artan sıralama (Varsayılan değer) DESC: Azalan sıralama
216
SELECT Ad, Soyadı,Şirket FROM Müşteriler SELECT Ad, Soyadı,Şirket,[İş Unvanı] FROM
Müşteriler ORDER BY
SELECT Ad, Soyadı,Şirket,[İş Unvanı] FROM Müşteriler ORDER BY 4
4: sorguda yer alan 4.alana göre sıralama gerçekleştirir. (İş Unvanı alanı)
217
SELECT…AS AS: Sorguda yer alan alanların takma isim
vermek için kullanılır.
SELECT Ad AS [Müşterinin Adı], Soyadı AS [Müşterinin Soyadı],Şirket,[İş Unvanı] FROM Müşteriler ORDER BY 1
218
SELECT..AS SELECT [Sağlayıcı No'ları], [Ürün Adı], [Liste
Fiyatı], [Standart Maliyet], ([Liste Fiyatı]-[Standart Maliyet]) as KAR
FROM Ürünler ORDER BY [Liste Fiyatı]
219
SELECT…AS SELECT [Sağlayıcı No'ları], [Ürün Adı], [Liste
Fiyatı], [Standart Maliyet], ROUND(100*([Liste Fiyatı]-[Standart Maliyet])/[Standart Maliyet])AS KAR_ORANI FROM Ürünler ORDER BY 5
220
TOP, TOP PERCENT TOP: Sorgu sonucunda ilk kaç kaydın
görüntüleneceğini belirtir. TOP PERCENT.Satırların belli bir
yüzdesini veren Top n PERCENT yan tümcesi kullanılabilir.
SELECT Top 50 PERCENT * FROM TBLÖĞRENCİLER
ifadesi, TBLÖĞRENCİLER tablosundaki bütün satırların ilk yüzde ellisini görüntüler.
222
SELECT TOP 10 [Ürün Adı], [Liste Fiyatı], [Standart Maliyet], ROUND(100*([Liste Fiyatı]-[Standart Maliyet])/[Standart Maliyet])AS KAR_ORANI FROM Ürünler ORDER BY 4 DESC
223
DISTINCT DISTINCT kelimesi bir sütundaki benzersiz
kayıtları listeler. Bir sütunda belirli bir kelime iki veya daha fazla sayıda tekrarlanıyor olabilir. Distinct anahtar kelimesi ile her tekrarlanan kayıt sadece bir kez listelenir.
SELECT DISTINCT [İş Unvanı] FROM Müşteriler
WHERE yantümcesi görüntülemek istediğimiz verileri belirli bir kritere göre seçebilmemizi sağlar.
Where yantümcesinin kullanımı zorunlu değildir. Fakat bir koşula bağlı veri seçmek istediğimizde FROM yantümcesinden sonra eklenebilir.
SELECT <sütun adı> FROM <tablo adı> WHERE <koşul(lar)>
Koşula Bağlı Olarak Listeleme SELECT komutu ile bir tablonun satırları içinde sadece verilen bir
koşulu sağlayanlar da listelenebilir. Örneğin, maaşı 5000 ‘den fazla olan personel listelenmek istenirse, SELECT komutu aşağıdaki gibi yazılmalıdır:
SELECT *FROM Personel WHERE maas>5000; Burada WHERE sözcüğünü izleyen kısımda koşul belirtilmektedir.
Koşul belirtilirken iki veri birbiri ile karşılaştırılmaktadır.
Karşılaştırma ifadesinde karşılaştırılan verilerin türü aynı olmalıdır. Yani, bir karakter türü veri ile ancak karakter türünde başka bir veri, bir nümerik veri ile ancak nümerik olan başka bir veri karşılaştırılabilir.
227
SELECT… WHERE SELECT * FROM Ürünler WHERE [Liste
Fiyatı]>50 SELECT * FROM Ürünler WHERE [Liste
Fiyatı]=10
228
SELECT * FROM Ürünler WHERE [Liste Fiyatı]>20 and [Liste Fiyatı]<50 ORDER BY [Liste Fiyatı]
SELECT * FROM Ürünler WHERE [Liste Fiyatı] BETWEEN 20 and 50 ORDER BY [Liste Fiyatı]
229
SELECT * FROM Müşteriler WHERE Şehir="İstanbul“
SELECT * FROM Müşteriler WHERE Şehir="İstanbul" OR Şehir="İzmir"
230
SELECT * FROM Müşteriler WHERE ad LIKE 'T*‘
SELECT * FROM Müşteriler WHERE ad ='T*‘
SELECT * FROM Müşteriler WHERE ad LIKE '*ER*'
233
SELECT * FROM Müşteriler WHERE ad LIKE '[A-C]*' ORDER BY AD
SELECT * FROM Müşteriler WHERE ad LIKE '[!A-F]*' ORDER BY AD
SELECT * FROM Müşteriler WHERE şirket LIKE '*[a-k]' ORDER BY şirket
234
SELECT * FROM Müşteriler WHERE ad LIKE '?er*' ORDER BY ad
SELECT * FROM Müşteriler WHERE ad LIKE '??rk*' ORDER BY ad
236
WHERE…IN SELECT * FROM Müşteriler WHERE şehir IN
('istanbul','izmir')
SELECT * FROM Müşteriler WHERE şehir NOT IN ('istanbul','izmir')
237
SELECT * FROM Siparişler WHERE [Sipariş tarihi] > #05/01/2006#
SELECT *, FORMAT([Sipariş tarihi],'dddd/mmmm/yyyy') as tarihi FROM Siparişler
238
SORULAR 1.Northwind veritabanında Ürünler tablosunda Ürün
Kodunun son hanesi 1-5 aralığında olan ve liste fiyatı 25 den büyük olan kayıtları listeleyiniz, liste fiyatına göre artan sıralayınız.
Siparişler tablosunda Sevk tarihi boş olmayan ve Sipariş tarihi Mayıs 2006 ayı içerisinde olan kayıtları listeleyiniz.
Müşteriler tablosunda İŞ ÜNVANI alanı için DISTINCT deyimi ile müşterilerin iş ünvanlarını tekrarsız olarak listeleyiniz
241
SELECT * from Ürünler WHERE [Ürün kodu] LIKE '*[1-5]' AND [Liste Fiyatı]>=25;
SELECT * FROM Siparişler WHERE MONTH([Sipariş tarihi])=5 AND YEAR([Sipariş tarihi])=2006 and [sevk tarihi] IS NOT NULL
SELECT DISTINCT [İş Unvanı] FROM Müşteriler
242
243
SELECT…COUNT(*) COUNT fonksiyonu (*) ile kullanıldığında FROM ile belirtilen tablodaki
toplam satır sayısını verir.
SELECT COUNT(*) AS ÇALIŞANLAR FROM TBLKİŞİLER;
SELECT COUNT(ADI) AS ÇALIŞANLAR FROM TBLKİŞİLER;
SELECT COUNT(*) FROM TBLKİŞİLER
SELECT…COUNT() SELECT COUNT(AD) FROM Müşteriler SELECT COUNT(*) FROM Müşteriler
SELECT COUNT(*) FROM Müşteriler WHERE Şehir='İstanbul'
244
Group by SELECT Şehir,COUNT(*) FROM Müşteriler
GROUP BY Şehir ORDER BY COUNT(*)
SELECT Kategori, COUNT(*) FROM Ürünler GROUP BY Kategori ORDER BY COUNT(*) DESC
245
SELECT [Sevk Şehir], COUNT(*) FROM Siparişler WHERE [Sevk Şehir] LIKE '*R*' GROUP BY [Sevk Şehir]
246
SELECT ProductSubcategoryID,AVG(ListPrice)
FROM Production.Product GROUP BY ProductSubcategoryID
247
Ccm361 nolu dersin sınıf ortalamasını bulan deyimi yazınız
SELECT Ders,AVG(Ortalama) FROM DersOgrenci WHERE Ders='CCM361'
GROUP BY Ders
248
SELECT Ders,AVG(Vize)as vize,AVG(Final) as final,
AVG(Ortalama)as ort FROM DersOgrenci GROUP BY Ders
249
SELECT Ders,MAX(Vize)as vize,MAX(Final) as final,
MAX(Ortalama)as ort FROM DersOgrenci GROUP BY Ders
250
SELECT * FROM OgrBilgileri WHERE OgrenciNo=(SELECT Ogrenci FROM
DersOgrenci WHERE Vize= (SELECT MIN(vize) FROM
DersOgrenci ))
252
INSERTTablolara kayıt eklemek için kullanılır.
INSERT INTO OgBilgileri (adı,soyadı,bölümü) VALUES ('ayşe','taş',4)
UPDATE Tabloda bulunan kayıt yada kayıtların
değiştirilmesi için kullanılır. Değiştirilmesi istenen kolonların teker teker yazılıp değerlerin atanması gerekmekte.
UPDATE TabloAdi SET (Kolonlar = Değerleri ,...) [WHERE Kosul ]
254
UPDATE Tablo satırlarında güncelleme yapmak için
SQL’de UPDATE komutu kullanılır.
UPDATE Products SET UnitPrice=UnitPrice*1.2
UPDATE TblÜrünler SET Fiyat = Fiyat*1.2;
UPDATE
UPDATE komutunu da koşullu ya da koşulsuz olarak kullanmak mümkündür
UPDATE Products SET UnitPrice=100 WHERE CategoryID=1
UPDATE TblÜrünler SET Fiyat = Fiyat*1.2 WHERE kategori=2;
UPDATE TblÜrünler SET [Ürün Adı]= “Program” WHERE Kategori=3 UPDATE Ogrenci_Bilgileri SET Adı='Buket'
WHERE Numara=34
UPDATE Products SET Durum='URUN YOK' WHERE UnitsInStock=0
258
DELETE Bir tablonun satırlarını silmek için gerekli
komut DELETE komutudur. Satır silme koşullu ya da koşulsuz olarak gerçekleştirilebilir.
DELETE FROM TabloAdi [WHERE Koşul ] DELETE FROM TblÜrünler DELETE FROM [Order Details] WHERE
Discount=0
SELECT * FROM Customers WHERE EXISTS(SELECT * FROM Orders WHERE CustomerId=Customers.CustomerId AND
ShipVia=3)
263
Çocuğu olan Çalışanlara ait bilgiler
SELECT * FROM TblÇalışanlar WHERE EXISTS (SELECT * FROM TblÇocuklar where çalışan=tblçalışanlar.çalışanId)
264
İki veya daha fazla çocuğu olan çalışanlar: SELECT Çalışan,count(*) from TblÇocuklar
group by Çalışan having count(*)>=2
SELECT * FROM TblÇalışanlar where ÇalışanId IN (SELECT Çalışan from TblÇocuklar group by Çalışan having count(*)>=2)
265
266
EXISTS
İçteki sorgu en az bir kayıt döndürdüğünde dıştaki sorgu çalışır.
En az bir sipariş veren müşterileri bulmak için:
SELECT * FROM TblMüşteriler WHERE EXISTS (SELECT * FROM TblSiparişler where MüşteriId=Tblmüşteriler.MüşteriID)
SELECT * FROM Müşteriler WHERE NOT EXISTS (SELECT * FROM Siparişler where Müşteriler.No=Siparişler.[Müşteri No])
267
SELECT * FROM Customers WHERE EXISTS(SELECT * FROM Orders WHERE CustomerId=Customers.CustomerId)
268
SELECT * FROM Products WHERE NOT EXISTS (SELECT * FROM [Order Details] WHERE ProductID=Products.ProductID)
269
271
EXISTS
9 Numaralı ürüne ait en az bir sipariş veren müşterileri bulmak için:
SELECT * FROM TblMüşteriler WHERE EXISTS (SELECT * FROM TblSiparişler where MüşteriId=Tblmüşteriler.MüşteriID and ürünId=9)
272
NOT EXISTS SELECT * FROM TblMüşteriler WHERE NOT
EXISTS (SELECT * FROM TblSiparişler WHERE MüşteriId=Tblmüşteriler.MüşteriID) ORDER BY MüşteriId;
274
UNION Tabloları birleştirme için kullanılır. Birleştirilen tabloların alan sayıları ve
türlerinin aynı olması gerekir.
SELECT *FROM TblMüşteriler UNION SELECT *FROM tBLÇalışanlar;
275
UNION
SELECT 'Müşteri' as kim,*FROM TblMüşterilerUNION SELECT "Çalışan" as kim, *FROM tBLÇalışanlar;
(SELECT 'Çalışan' as kim,Çalışanlar.No,soyadı,ad FROM Çalışanlar
UNION SELECT 'Müşteri' as
kim,Müşteriler.No,soyadı,ad FROM Müşteriler)
276
UNIONSELECT 'Musteriler den' as kim,*FROM
MusterilerUNION SELECT 'Customers dan' as kim,*FROM
Customers;
277
ANY İç içe sorgularda, SOME, ANY deyimi ile dışarıdaki
SELECT ifadesinin seçeceği kayıtlar karşılaştırma kriterine göre kullanılabilir
ANY dışarıdaki SELECT ifadesi sonucunda çıkacak kayıtlar, içerideki SELECT ifadesi ile seçilen alan değerlerinden en az birine göre kıyası sağlıyorsa ( küçük,büyük, eşit, büyük eşit, küçük eşit) seçilir
ANY Kategori 5’deki herhangi bir üründen daha
yüksek fiyata sahip olan ürünlere ait tüm bilgileri listeleyen SQL deyimi:
SELECT * FROM TblÜrünler WHERE fiyat>any (select (fiyat) from
TBlürünler where kategori=5);
SELECT * FROM Ürünler where [Liste Fiyatı]<ANY(SELECT [Liste Fiyatı] FROM Ürünler WHERE Kategori='Tatlılar')
282
ALL ALL dışarıdaki SELECT ifadesi sonucunda
çıkacak kayıtlar, içerideki SELECT ifadesi ile seçilen alan değerlerinden TÜMÜNE göre kıyası sağlıyorsa ( küçük,büyük, eşit, büyük eşit, küçük eşit) seçilir.
SELECT * FROM TblÜrünler WHERE
fiyat>ALL(select fiyat from TBlürünler where kategori=3);
SELECT * FROM Ürünler where [Liste Fiyatı]<ALL (SELECT [Liste Fiyatı] FROM Ürünler WHERE Kategori='Tatlılar')
{13,6}
284
285
INNER JOIN İki tablonun ortak bir alanında aynı değerler
bulunan kayıtların bir araya getirilmesi. SELECT ALAN1, ALAN2, ALAN3 FROM TABLO1 INNER
JOIN TABLO2 ON TABLO1. YABANCI ANAHTAR= TABLO2.BİRİNCİL ANAHTAR
SELECT * FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID
SELECT * FROM Müşteriler INNER JOIN Siparişler ON Müşteriler.No=Siparişler.[Müşteri No]
SELECT ad, soyadı,[Sipariş No] FROM Müşteriler INNER JOIN Siparişler ON Müşteriler.No=Siparişler.[Müşteri No]
286
SELECT ad, soyadı,[Sipariş No] FROM Müşteriler as m INNER JOIN Siparişler as s ON m.No=s.[Müşteri No]
287
SELECT * from TblDoktorlar,TblBölümler WHERE TblDoktorlar.Bölüm=TblBölümler.BölümID
SELECT * from TblDoktorlar INNER JOIN TblBölümler ON TblDoktorlar.Bölüm=TblBölümler.BölümID
288
SELECT o.CustomerID,c.CompanyName, o.orderID FROM Orders AS o INNER JOIN
Customers AS c ONo.CustomerID=c.CustomerID
290
SELECT TblÜrünler.[ÜRÜN ADI], TblKategoriler.[Kategori ADI]
FROM Tblürünler INNER JOIN Tblkategoriler ON Tblürünler.kategori=TblKategoriler.KategoriId;
291
Her kategorideki ürün sayısını kategori adı ve numarası ile birlikte görüntüleyen SQL deyimini yazınız.
294