Upload
votuyen
View
239
Download
2
Embed Size (px)
Citation preview
VERİ TABANI YÖNETİM SİSTEMLERİ
Yrd. Doç. Dr. Fırat YÜCEL
Akdeniz Üniversitesi
Enformatik Bölümü
Ders Hakkında
• Dersin Kredisi : Veri Tabanı I : 3+1
Veri Tabanı Yönetim Sistemleri : 3+0
• Dersin Yarıyılı : Güz
• Derse Devam : %70 zorunlu
• Kullanılan Yazılım: Ms SQL Server Management 2014
• Değerlendirme : Mutlak değerlendirme (Ortalama >= 60)• Ara sınav (Vize)……………… %30
• Ödev/Proje……………………. %10
• Yarıyıl Sonu Sınavı…………. %60
Ders İçeriği
o 1. Hafta: Veri Tabanlarına Giriş
o 2. Hafta: Veri Tabanı Sistemi Temel Kavramları ve Mimarisi
o 3. Hafta: İlişkisel Veri Modeli ve İlişkisel Veri Tabanı Kurulumu
o 4. Hafta: Veri Tabanı Tasarımı ve Normalizasyonu
o 5. Hafta: SQL (Yapısal Sorgulama Dili)
o 6. Hafta: SQL (Yapısal Sorgulama Dili)
o 7. Hafta: Aritmetiksel Operatörler ve İşleçler
o 8. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular)
o 9. Hafta: Karmaşık Sorgular (Birden Fazla Tablo Üzerinde Sorgular)
o 10. Hafta: Tetikleyiciler (Triggers)
o 11. Hafta: Görünümler (Views)
o 12. Hafta: Şema Düzenlemeleri (Schema Modification)
o 13. Hafta: ER Modeli ile Veri Modelleme
o 14. Hafta: XML: Genişletilebilir İşaretleme Dili
Başarılı Olabilmek için Bazı Öneriler
• Derslere düzenli bir şekilde devam etmek
• Verilen proje ve ödev çalışmalarını zamanında ve eksiksiz şekilde teslimetmek
• Derste notlar almak, daha sonradan bu notları incelemek, üzerindedüşünüp anlamak, yeni fikirler üretmek
• Derste uygulamalara katılmak, varsa ders dışında bilgisayar ortamındailgili program üzerinde uygulamaları tekrar etmek
• Ders öğretim üyesi ile sağlıklı bir iletişim ortamı kurmak• Ofis : Akdeniz Üniversitesi Enformatik Bölümü• E-Posta : [email protected]• Sosyal ağ• Web sitesi : firatyucel.com
Veri Tabanı Sistemlerine Giriş
Veri Tabanları ve Veri Tabanı Kullanıcıları
Veri Tabanı (Database)
• Veri tabanı, birbiriyle ilişkili verilerin bir koleksiyonudur.
• Modern dünyada hayatımızın birçok alanında kullanılmaktadır. Örneğin;• Bir otel ya da uçak/otobüs rezervasyonunda,
• Banka hesap işlemlerinde,
• Kütüphane katalog taramasında,
• Hastane randevu ve protokol işlemlerinde,
• Elektronik olarak bir ürün sipariş ederken veya satın alırken,
• Marketlerde alışveriş yaptıktan sonra kasada,
• E-devlet işlemlerinde,…
Tarım Sanayi Bilgi
Toplumların Gelişimi
Bir soru
• Aşağıdaki iki cümle anlam bakımından aynı mıdır, farklı mıdır?
1. «Hava durumu ile ilgili verileri aldım.»
2. «Hava durumu hakkında bilgileri aldım.»
10
Bilgi
Veri (Data)
• Veri, kendi başına bir anlam ifade etmeyen işlenmemiş (ham) bilgi parçacığıdır.
• Bilgi, verilerin işlenerek anlamlı bir şekilde bir araya getirilmesiyle oluşur.
bilgisayar
Veri
Geleneksel Veri TabanlarındanModern Veri Tabanlarına…
• Geleneksel veri tabanlarında sayısal ve metinşeklinde veriler tutuluyordu.
• Günümüz modern veri tabanlarında(multimedya veri tabanları) bunlara ilavetenmultimedya öğeleri de yer almaktadır.• Resim
• Video
• Konum (Coğrafi Bilgi Sistemleri)
• Modern veri tabanı sistemlerinde ayrıca çokmiktardaki verilerden (big data) çıkarımlaryapan «karar destek sistemleri» yeralmaktadır.
Veri Tabanının Temel Nitelikleri
• Veri tabanı, gerçek dünyanın birparçasıdır. Çoğu zaman «mini dünya»(miniworld) veya «söylem evreni»(universe of discourse, UoD) olarakadlandırılır.
• Veri tabanı, verilerin mantıksal olarakorganize edilmiş halidir. Rastgele biraraya getirilmiş veriler, veri tabanıkavramı dışındadır.
• Veri tabanı, özel amaçlarla tasarlanan,oluşturulan ve üretilen verilerdenoluşur.
Veri Tabanı Yönetim Sistemi (DBMS)
• Veri tabanı yönetim sistemi (database management system, DBMS)veri tabanını oluşturmak ve işlemek için kullanıcıları yetkilendirenbir program koleksiyonudur.
DB DBMS
Kullanıcı
DBMS’nin İşlevleri
Tanımlama (Defining)
• Veri tabanında saklanan veriler için veri tiplerinin, mimarinin ve veri kurucuların tanımlanması ile ilgili işlemleri içerir.Buradaki tanımlamalar meta-data olarak adlandırılır.
Oluşturma (Constructing)
• DBMS tarafından kontrol edilen bazı saklama medyaları içerisinde verinin saklanması işlemleridir.
Düzenleme (Manipulating)
• Özel verileri geri döndürmek için hazırlanan sorgulamalar, veri tabanının güncellenmesi ve verilerden raporlar oluşturulması işlemleridir.
Paylaşım (Sharing)
• Veri tabanına çok sayıda kullanıcının veya programın eş zamanlı erişimine izin vermektir.
DBMS, değişik kullanıcılar ve uygulamalar tarafından veri tabanı
üzerinde tanımlama, oluşturma, değiştirme ve paylaşma işlemlerini
yöneten genel amaçlı bir yazılım sistemidir.
Meta-Data
• Veri tabanı oluşturma süreci, verilerin saklanması için veri tipleri,yapıları ve veri kurucularının tanımlanması işlemlerini içerir. Veritabanı tanımlamaları, bir katalog formunda DBMS içerisindetutulur. Bu verilere «meta-data» adı verilir.
Uygulama Programı, Sorgu, İşlem
• Uygulama programı (application program), DBMS’ye sorgular ve isteklergöndererek veri tabanına erişim sağlar.
• Sorgu (query), genellikle veri tabanından bazı verilerin dönmesinisağlayan ifadelerdir.
• İşlem (transaction), veri tabanından bazı verileri okumak veya veritabanına bazı verileri yazmak için yapılan işlemlerdir.
• Koruma (protection), DBMS’nin diğer bir işlevidir. Zararlı yazılımlarakarşı donanımsal veya yazılımsal sistem koruması önemlidir.
• Zaman zaman verilerin kaybına karşı veri tabanındaki verilerdenyedekler alınması gerekmektedir. Bu işleme yedekleme (maintaining)denir.
Basitleştirilmiş Veri Tabanı Sistemi
Uygulama Programları/Sorguları
İşlem Yazılımı
Sorgular/Programlar
Erişim Yazılımı
Saklanan Veri
Veri Tabanı
Tanımlamaları
(Meta-Data)
Veri Tabanı
Veri
Tabanı
Sistemi
DBMS
Yazılımı
Kullanıcılar/Programcılar
Bir Veri Tabanı Örneği
• Örnek olarak, UNIVERSITE adlı bir veri tabanı içerisinde yer alanOGRENCI, DERS, DONEM, SINAV_SONUC, ONKOSUL adlı 5 dosyadatutulan aynı türdeki verileri düşünelim.
• Bu veri tabanını tanımlamak için, her bir dosyada tutulacakkayıtların hangi alanlardan oluşacağını belirlemek gerekmektedir.
• Her bir alanın veri türü (string, integer, char,…) belirlenmelidir.
• Orta düzey ve büyük veri tabanları için veriler arasındaki ilişkilerbelirlenmelidir.
Örnek Veri Tabanının Yapısı
Ad Ogrenci_No Sinif Bolum
Mehmet 17 1 YBS
Ayşe 5 2 YBS
Ders_Ad Ders_Kodu Kredi Bolum
Bilgi Teknolojileri Kullanımı ENF101 4 ENF
Veri Tabanı I MBIL103 5 MBIL
Veri Tabanı Yönetim Sistemleri YBS201 4 YBS
Programlama Dilleri I BIL203 3 MAT
Donem_ID Ders_Kodu Donem Yil Ogr_Elemani
85 ENF101 Güz 16 Ahmet
92 YBS201 Güz 16 Sezgin
102 BIL203 Bahar 16 Kamil
112 ENF101 Bahar 16 Ahmet
119 YBS201 Güz 17 Fırat
135 MBIL103 Güz 17 Fırat
Ogrenci_No Donem_ID Not
17 85 AA
17 119 BB
5 85 AA
5 102 BA
5 119 CC
Ders_Kodu Onkosul_Kodu
YBS201 ENF101
BIL203 ENF101
OGRENCI
DERS
DONEM
SINAV_SONUC
ONKOSUL
Örnek Veri Tabanı Üzerinde Bazı Uygulamalar
• Veri tabanı üzerinde yapılabilen bazı işlemlere örnekler;• Transkript alınması
• 2017 yılında alınan Veri Tabanı Yönetim Sistemleri dersini alan tüm öğrencilerin sınav notları
• Önkoşul durumlarının listesi
• Güncelleme işlemlerine örnekler;• Mehmet isimli öğrencinin sınıfının değiştirilmesi
• Yeni yarıyıl için yeni dersler açılması
• Ayşe adlı öğrencinin Veri Tabanı Yönetim Sistemleri dersi notunun CC olarak girilmesi
Veri Tabanı Yaklaşımının Karakteristikleri
• Geleneksel dosya-tabanlı sistemlerde, her kullanıcı kendisi ile ilgiliverileri tanımlayıp bağımsız bir dosyada saklar. Ancak aynıverilerin bir kısmı başka bir kullanıcı tarafından yine tanımlanmakzorundadır. Bu verilerin birbiriyle ilişkilendirilmesi için ise ayrı biruygulama gereklidir.
• Problemler;• Gereksiz yinelenen veriler
• Tutarsızlık
• Güvenlik sorunları
• Veri kaybı
• Veriye erişim zorluğu
• Uygulama geliştirmedeki güçlükler
Veri Tabanı Yaklaşımı
• Veri tabanı yaklaşımında, tanımlamalar en başta bir defaya mahsusgerçekleştirilir ve veri girişi tekrar yapılmaz. Bu veriler çok sayıdakullanıcı ile paylaşılarak ortak kullanılabilir.
Veri tabanı yaklaşımının temel karakteristikleri
Veri tabanı sisteminin kendiliğinden tanımlı doğası
Programlar, veri ve veri tanımlamaları arasında yalıtım
Verilere çoklu rapor desteği
Verilerin paylaşımı ve çok kullanıcılı işlemlerin gerçekleştirilmesi
Veri Tabanı Sistemlerinin Kendinden Tanımlı Doğası
• Veri tabanı yaklaşımının temel karakteristiği, veri tabanı sisteminin yalnızca kendi veri tabanını değil, aynı zamanda veri tabanı yapısının ve kurucularının da tanımlama ve açıklamalarını da içeriyor olmasıdır. Bunlara meta-data denir.
• Dosya tabanlı sistemlerde bu tanımlamalar spesifik olarak program kodları ile tanımlanır.
Veri Tabanı
Tanımlamaları
(Meta-Data)
Veri Tabanı
DBMS Yazılımı
Veri Tabanı Katalog Bilgilerine Bir Örnek
Relation_Name No_of_columns
OGRENCI 4
DONEM 5
DERS 4
SINAV_SONUC 3
ONKOSUL 2
İLİŞKİLER
Column_Name Data_type Belongs_to_relation
Ad Char(150) OGRENCI
Ogrenci_No Char(11) OGRENCI
Sinif Integer(1) OGRENCI
Bolum Char(100) OGRENCI
Donem_ID Integer DONEM
Ders_Kodu XXXXNNNN DONEM
Donem Char(5) DONEM
… … …
Ders_Kodu XXXXNNNN ONKOSUL
Onkosul_Kodu XXXXNNNN ONKOSUL
XXXXNNNN: 4 alfakarakter, 4
sayıdan oluşan biçim.
ALANLAR (SÜTUNLAR)
Programlar, Veri ve Veri Tanımlamaları Arasında Yalıtım
• Geleneksel sistemlerde, veri dosyalarının yapısı uygulamaprogramının içerisinde tanımlanır. Değişiklik gerektiğinde hemdosyaların hem de program yapısının değiştirilmesi gerekir.
• DBMS erişim programlarında tüm durumlarda değişiklik gerekmez.Veri dosyalarının yapısı DBMS kataloğunda yer alır. Bu durum,program-veri bağımsızlığı olarak adlandırılır.
Veri Alan Adı Kaydın Başlama Yeri Karakter Uzunluğu (byte)
Ad 150 150
Ogrenci_No 151 11
Sinif 162 1
Bolum 163 100
Dosya sisteminde
verilerin
tutulmasına
OGRENCI
tablosundan bir
örnek
Programlar, Veri ve Veri Tanımlamaları Arasında Yalıtım
• Bazı nesne yönelimli veya nesne ilişkili veri tabanı sistemlerinde,kullanıcılar veri üzerindeki işlemleri (fonksiyonları, yöntemleri yada parametreleri) de veri tabanı tanımlamalarının bir parçasıolarak tanımlayabilir.
• DBMS’de, arayüz değişse de tanımlanan bu işlemlerde bir aksamasöz konusu olmaz. Bu durum program-işlem bağımsızlığı olarakadlandırılır.
• Hem program-veri bağımsızlığı hem de program-işlem bağımsızlığıözelliğini içeren karakteristik veri yalıtımı (data abstraction)olarak tanımlanır.
Verilere Çoklu Rapor Desteği
• Bir veri tabanı sisteminin birçok kullanıcısı vardır ve bu kullanıcılarfarklı konularda verilerle ilgilenirler. Bu verilerden elde edilenraporlar (views) DBMS’de her kullanıcı için oluşturulabilir.
Ad Ders_Kodu Not Donem Yil Donem_ID
MehmetENF101 AA Güz 16 85
YBS201 BB Güz 17 119
Ayşe
ENF101 AA Güz 16 85
BIL203 BA Bahar 16 102
YBS201 CC Güz 17 119
TRANSKRİPT (RAPOR ÖRNEĞİ)
Verilerin Paylaşımı ve Çok Kullanıcılı İşlemlerin Gerçekleştirilmesi
• Bir DBMS, eş zamanlı olarak çok sayıda kullanıcının veri tabanınaerişimine izin vermelidir.
• Aynı anda veri güncelleme istemlerinin, veri işlem kontroluygulamalarıyla kontrol edilmesi gerekir. Bu uygulamalara, onlinetransaction prosessing (OLTP) uygulamaları denir.
• Veriler üzerinde yapılan işlemlerin sonucu hakkında çıkarımdabulunan sistemlere ise online analytical processing (OLAP)uygulamaları denir.
Sahnedeki Aktörler
Veri Tabanı Yöneticileri (Database Administrators, DBA)
•Veri tabanı kaynaklarını yöneten ve kontrol eden tüm yetkilere sahip kullanıcılardır.
Veri Tabanı Tasarımcıları (Database Designers)
•Verilerin saklanabilmesi için tanımlamaları yapmak, bu verilerin gösterimi ve saklanması için uygun yapıları seçmek ile sorumludurlar.
Son Kullanıcılar (End Users)
•Veri tabanına çeşitli işlemleri gerçekleştirmek üzere erişim sağlayan kullanıcılardır.
Sistem Analistleri ve Uygulama Programcıları (Yazılım Mühendisleri)
•Sistem analistleri, son kullanıcıların gereksinimlerini belirleyen, gereksinimleri bulan kullanıcılardır. Uygulama programcıları, gereksinimlere uygun yazılımı kodlayan, daha sonra test eden derleyen, dokümantasyonunu hazırlayan ve veri işlemlerinin bakımını gerçekleştiren kullanıcılardır.
Sahne Gerisinde Çalışanlar
DBMS sistem tasarımcıları ve geliştiricileri
• DBMS modüllerini ve yazılım paketi arayüzlerini tasarlayan ve geliştiren kişilerdir.
Araç geliştiricileri
• Araç (tool) adı verilen veri tabanı modelleme ve tasarım, veri tabanı sistem tasarım ve performansı yükseltmek için hazırlanan yazılımları geliştiren kişilerdir.
Operatörler ve bakım personeli
• Veri tabanının yer aldığı donanımın çalışması ve bakımı ile yazılım için gereken çevresel gereksinimlerden sorumludur.
DBMS Yaklaşımını Kullanmanın Üstün Yönleri
• Gereksiz verilerin kontrolü
• Yetkisiz erişimlerin engellenmesi
• Program nesneleri için kalıcı saklama
• Etkin sorgulama işlemleri için saklama yapıları ve arama teknikleri
• Yedekleme ve geri yükleme
• Çok kullanıcı erişimi
• Veri üzerindeki karmaşık ilişkilerin tanımlanması
• Bütünlük kısıtlamalarını uygulayabilme
• Kurallara uygun işlemlere ve sonuç çıkarmaya izin verme
• İlave faydalar• Kullanıcılar arasında iş dağılımı, azalan uygulama geliştirme süresi, esneklik, günlük
bilgilerin kullanılabilmesi, ölçeklenmiş ekonomi…
Veri Tabanı Uygulamalarının Kısa Tarihçesi
Hiyerarşik ve Ağ Sistemleri
Tabanlı Veri Tabanı
Uygulamaları
İlişkisel Veri Tabanı Yönetim Sistemi (RDBMS)
XML (eXtended
MarkupLanguage)
Yeni Veri Tabanı Uygulamaları
Bilgi Çıkarım (Information Retrieval, IR)
1970’ler 1980’ler 1990’lar 2000’ler Günümüz
• Bilimsel uygulamalar
• Resim ve video tabanlı veri
tabanları
• Veri madenciliği (data mining)
• Uzay uygulamaları
• Zaman serileri
DBMS’nin Zayıf Yönleri
• Donanım, yazılım ve öğrenme açısından gereksinimler
• Verilerin tanımlanması ve işlenmesi için DBMS’ye gereksinim duyulması
• Güvenlik, eşzamanlı erişim kontrolü, kurtarma ve ileri düzey fonksiyonlara hakim olunması gereksinimi
Veri Tabanı Sistemi Kavramları ve Mimarisi
Veri Modelleri, Şemalar ve Olaylar
Üç Şema Mimarisi
İlişkisel Veri Tabanı
Veri Tabanı Mimarisi
• İlk Veri Tabanı Mimarileri Tek bir bilgisayar (mainframe) üzerine kurulu
• Günümüz Veri Tabanı Mimarileri Sunucu-istemci yapısında
İstemci 1
İstemci 2 İstemci n
Sunucu (DBMS)
Veri TabanıDöndürülen
veri
Veri isteği
LAN veya
WAN
Veri Modeli
• Veri tabanının mimarisini tanımlamak için kullanılan kavramlarbütünüdür. Veri tabanı mimarisi; veri tipleri, ilişkiler ve veri girişkısıtlamalarını ifade eder.
• Varlık (Entity): Bir gerçek dünya nesnesini veya kavramını ifade eder.Örneğin; bir çalışan veya veri tabanı içerisindeki mini dünyadatanımlanan bir proje gibi.
• Nitelik (Attribute): Bir varlığı tanımlayan özelliktir. Örneğin; çalışan adıveya ücreti gibi.
• İlişki (Relationship): İki veya daha fazla varlık (entity) arasındaki ortaknokta ve birleşmeyi ifade eder. Örneğin bir çalışan ile bir projeyiilişkilendirme gibi.
Varlık
Nitelik
İlişki
İlişkisel Veri Modeli (Relational Data Model)
Ad Ogrenci_No Sinif Bolum
Mehmet 17 1 YBS
Ayşe 5 2 YBS
OGRENCİTablo (Table)
Nitelik (Attribute)
Alanlar (Fields, Columns)
Kayıtlar (Records)
Varlık (Entity)
İlişkisel Veri Tabanı Modeli (Relational Database Model)
İlişkisel model, bir veri tabanı üzerinde tanımlanan ilişkilerin koleksiyonudur.
SQL: Structural Query Language
• MS SQL Server
• Oracle
• PostrgreSQL
• MySQL
• Sybase SQL Server
• Informix
Birincil Anahtar ve Yabancı Anahtar
• Birincil Anahtar (Primary Key); bir tabloda her bir kayıt için verilenbenzersiz alandır. Kayıtların birbirinden ayırt edilmesini sağlar.
• Bir tabloda birincil anahtar alanında tanımlanan veriler aynıolamaz.
• Yabancı Anahtar (Foreign Key, Secondary Key, Index); bir tablodadiğer tablodaki kayıtlarla ilişki kurulan alanlardır.
#
Örnek İlişkisel Veri Tabanı Tasarımı
• Bir işletmenin ürünlerini internet üzerinden satmak üzere bir veri tabanı tasarımı• Ürünler; Barkod, Ürün Adı, Marka, Özellikleri, KDV Oranı, Alış Fiyatı, Satış
Fiyatı, Ürün Adedi
• Müşteriler; Müşteri Kodu, Müşteri Adı, Müşteri Soyadı, e-posta, Parola, Adres, Şehir, Telefon
• Siparişler; Sipariş Kodu, Müşteri, Ürün, Sipariş Tarihi, Sipariş Durumu, Sipariş Adedi
Örnek İlişkisel Veri Tabanı Tasarımı
ÜRÜNLERBarkod
Ürün Adı
Marka
Özellikler
KDV Oranı
Alış Fiyatı
Satış Fiyatı
Ürün Adedi
MÜŞTERİLER
Müşteri Kodu
Adı Soyadı
E-Posta
Parola
AdresŞehir
Telefon
SİPARİŞLER
Sipariş Kodu Müşteri Kodu
Ürün Barkodu
Sipariş TarihiSipariş Durumu
Sipariş Adedi
SatışN 1
N
Birincil Anahtar
# Yabancı Anahtar
#
#
Örnek İlişkisel Veri Tabanı Tasarımı
Barkod Ürün Adı Marka Özellikler KDV Oranı Alış Fiyatı Satış Fiyatı Ürün Adedi
35126 Sabit Disk Seagate 500 GB %18 80,12 96,15 21
12525 Anakart Gigabyte GA-Z170X-Gaming 3-EU %18 201,15 250,83 12
18121 RAM OEM 4 GB DDR %18 50,22 75,91 30
ÜRÜNLER
Müşteri Kodu Adı Soyadı E-posta Parola Adres Şehir Telefon
1 Ahmet Akcan [email protected] ****** Ak. Ün. Kampus Antalya 02423212212
2 Hatice Özay [email protected] ******* KYK Yurdu Kampus Antalya 05333333333
3 Salih Zafer [email protected] ***** Dumlupınar Bulvarı Antalya 02423221112
MÜŞTERİLER
Sipariş Kodu Müşteri Kodu Ürün Barkodu Sipariş Tarihi Sipariş Durumu Sipariş Adedi
121 2 35126 22/09/2017 Teslim edildi 3
122 1 12525 30/09/2017 Kargoda 1
SİPARİŞLER
Birincil Anahtar
# Yabancı Anahtar
# #
UNIVERSITE Veri Tabanı için İlişkisel Model
OGRENCİ
Ad Ogrenci_No
SinifBolum
ONKOSUL
Ders_Kodu Onkosul_Kodu
DONEM
DERS
Donem_ID
Ders_Kodu
Ogr_Elemani
Donem
Yil
Ders_Ad
Ders_Kodu
Kredi
Bolum
açılırseçer
1
N
N 1
N
SINAV_SONUC
Ogrenci_No
Donem_ID
Not
Değerlendirme1 N
N
belirlenirN 1
# ##
#
#Birincil Anahtar
# Yabancı Anahtar
Veri Tabanı Şema Diyagramı (Database Schema Diagram)
• Veri tabanındaki varlıkları, nitelikleri ve bunların birbiriyle ilişkisini gösteren şekillerdir.
Üç Şema Mimarisi (Üç Katman Mimarisi)
• Veri tabanının fiziksel saklama yapısını tanımlar.
İç Katman (İç Şema)
• Veri tabanının veri modelini tanımlar, kullanıcı ile iç katman arasında iletişimi sağlar.
Kavramsal Katman (Kavramsal Şema)
• Veri tabanının kullanıcı grubunun erişimi için hazırlanan arayüzüdür.
Harici (Dış) Katman (Dış Şema)
Örnek Veri Tabanı Tasarımı
• Bir kütüphane kitap ödünç verme/sorgulama işlemleri için veri tabanı
• Bir eczane ilaç satışı için veri tabanı
• Bir şehirlerarası otobüs firması bilet satışı için veri tabanı
Temel SQL
SQL
• SQL (Structured Query Language): İlişkisel veri tabanlarında kullanılan Yapısal Sorgulama Dili’dir.
• İlk adı SEQUEL’dir. Daha sonra 1986 yılında ANSI tarafından ilk SQL versiyonu yayınlanmıştır.
• SQL en yaygın kullanılan veri tabanı dilidir. Veri tanımlama, sorgulama ve güncelleme işlemleri için ifadeler içerir.
SQL’de Veri Tanımlama
• SQL’de veri tabanı ve içerisindeki nesneler CREATE ifadesi ile tanımlanır.• CREATE SCHEMA
• CREATE DATABASE
• CREATE TABLE
• CREATE VIEW
• …
Şema ve Katalog Kavramları
• SQL şeması, şema elemanları için yetki tanımı yapmaya yarayan ifadedir. Şema elemanları; tablolar, sınırlamalar, raporlar, alan adları ve diğer kısıtlamalar vb. kavramlarını içerir.
CREATE SCHEMA COMPANY AUTHORIZATION ‘FYucel’;
• Katalog ise şemaların bir koleksiyonudur.
Yeni SQL Veri Tabanı Oluşturma
• Yeni bir SQL veri tabanı oluşturmak için;
CREATE DATABASE Deneme;
• Açılan veri tabanını kullanmaya başlamak için;
USE Deneme;
Yeni SQL Tablosu Oluşturma
• Veri tabanına yeni bir varlık ve bu varlığa ait nitelikleri tanımlamak için, SQL’de tablo oluşturmak gereklidir.
CREATE TABLE Siparisler
( SiparisKodu VARCHAR(10) NOT NULL,
MusteriKodu VARCHAR(10) NOT NULL,
UrunBarkodu VARCHAR(15) NOT NULL,
Tarih DATETIME NOT NULL,
Durum CHAR,
Adet INT,
PRIMARY KEY (SiparisKodu, MusteriKodu, UrunBarkodu),
FOREIGN KEY (MusteriKodu) REFERENCES Musteriler(MusteriKodu),
FOREIGN KEY (UrunBarkodu) REFERENCES Urunler(Barkod)
);
MS SQL Veri Tipleri
Veri Tipi Açıklama Maksimum Uzunluk Saklama
char(n) Sabit uzunluklu karakter dizisi 8,000 karakter Tanımlı uzunluk
varchar(n) Değişken uzunluklu karakter dizisi 8,000 karakter 2 bayt + karakter sayısı
varchar(max) Değişken uzunluklu karakter dizisi 1,073,741,824 karakter 2 bayt + karakter sayısı
text Değişken uzunluklu metin 2GB metin verisi 4 bayt + karakter sayısı
nchar Sabit uzunluklu Unicode karakter dizisi 4,000 karakter Tanımlanan uzunluk x 2
nvarchar Değişken uzunluklu Unicode karakter dizisi 4,000 karakter
nvarchar(max) Değişken uzunluklu Unicode karakter dizisi 536,870,912 karakter
ntext Değişken uzunluklu Unicode metin 2GB metin verisi
binary(n) Sabit uzunluklu binary karakter dizisi 8,000 bayt
varbinary Değişken uzunluklu binary karakter dizisi 8,000 bayt
varbinary(max) Değişken uzunluklu binary karakter dizisi 2GB
image Değişken uzunluklu binary karakter dizisi 2GB
MS SQL Veri Tipleri
Veri Tipi Açıklama Saklama
bit 0, 1 ya da NULL olabilen INTEGER
tinyint 0 ile 255 arasındaki sayılar 1 bayt
smallint -32,768 ile 32,767 arasındaki sayılar 2 bayt
int -2,147,483,648 ile 2,147,483,647 arasındaki sayılar 4 bayt
bigint -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındaki sayılar 8 bayt
decimal(p,s)
Sabit hassasiyetli ve ondalıklı sayı. -10^38 +1 ile 10^38 –1 arasındaki sayılar
p: maksimum hane sayısı, 1 ile 38 arasında bir değer olup, varsayılan 18’dir.
s: maksimum virgülün sağındaki hane sayısı. 0 ile p arasında bir değer olup, varsayılan 0’dır.
5-17 bayt
numeric(p,s)
Sabit hassasiyetli ve ondalıklı sayı. -10^38 +1 ile 10^38 –1 arasındaki sayılar.
p: maksimum hane sayısı, 1 ile 38 arasında bir değer olup, varsayılan 18’dir.
s: maksimum virgülün sağındaki hane sayısı. 0 ile p arasında bir değer olup, varsayılan 0’dır.
5-17 bayt
smallmoney -214,748.3648 ile 214,748.3647 arasında parasal veri 4 bayt
money -922,337,203,685,477.5808 ile 922,337,203,685,477.5807 arasında parasal veri 8 bayt
float(n)-1.79E + 308 ile 1.79E + 308 arasında ondalıklı sayı. n parametresi, 4 ya da 8 bayt tutulacağını belirler. float(24)’e
kadar 4 byte, bundan sonra float(53)’e kadar ise 8 byte veri tutulur. Varsayılan n değeri 53’tür.
4 veya 8 bayt
real -3.40E + 38 ile 3.40E + 38 arasında ondalıklı sayı. 4 bayt
MS SQL Veri Tipleri
Veri Tipi Açıklama Saklama
datetime 1 Ocak 1753 ile 31 Aralık 9999 arasında 3.33 ms hassasiyet 8 bytes
datetime2 1 Ocak 0001 ile 31 Aralık 9999 arasında 100 ns hassasiyet 6-8 bytes
smalldatetime 1 Ocak 1900 ile 6 Haziran 2079 arasında 1 dakika hassasiyet 4 bytes
date Yalnızca tarih verisi saklar. 1 Ocak 0001 ile 31 Aralık 9999 arasında 3 bytes
time Sadece zaman verisi saklar. 100 ns hassasiyet 3-5 bytes
datetimeoffset Datetime2 ile aynı olup sadece zaman dilimi içerir. 8-10 bytes
timestamp Zamana göre benzersiz bir tarih damgası değeri üretir.
SQL Alan Adı Tanımlama
• SQL’de yeni Alan Adı (Domain) tanımlamak için;
CREATE DOMAIN PARA AS DECIMAL(10,2)
CHECK (PARA > 0,00 AND PARA < 500000,00);
SQL Veri Tabanı / Tablosu Silmek
• SQL veri tabanı silmek için;
DROP DATABASE DENEME
• SQL tablosunu silmek için;
DROP TABLE Urunler
• SQL tablosunun içindeki verileri silmek için;
TRUNCATE TABLE Urunler
Alan Değişiklikleri
• Tabloya yeni bir alan eklemek için;
ALTER TABLE UrunlerADD Fiyat DECIMAL(10,2);
• Tablodan bir alanı silmek için;
ALTER TABLE UrunlerDROP COLUMN Fiyat;
• Tablodaki bir alanı güncellemek için;
ALTER TABLE UrunlerALTER COLUMN Fiyat MONEY;
Select-From-Where Yapısı
• Veri tabanından verileri getirmek amacıyla kullanılan sorgu deyimidir.
SELECT <Nitelik Listesi>
FROM <Tablo Listesi>
WHERE <Koşullar>;
Örnek:
SELECT Adi, Soyadi FROM Ogrenci WHERE OgrNo = ‘20121105015’;
SELECT OgrNo FROM Ogrenci WHERE Adi = ‘Mehmet’ AND Soyadi = ‘Aslan’;
İlişkisel Cebir Operatörleri
• Karşılaştırmalarda kullanılan operatörler;• = Eşittir
• < Küçüktür
• > Büyüktür
• <= Küçük Eşit
• >= Büyük Eşit
• <> Eşit Değil
• Mantıksal koşulları birleştirirken;• AND: Ve
• OR: Veya
• NOT: Değil
Çoklu Tablo İlişkileri Kurarak Sorgulama
• Birden fazla tablo arasında ilişkiler kurularak bu tablolardan istenen veriler tek bir sorgu ifadesiyle getirilebilir.
SELECT Ogrenciler.Adi, Ogrenciler.Soyadi, Sinavlar.Notu
FROM Ogrenciler, Sinavlar
WHERE Ogrenciler.OgrNo = Sinavlar.OgrNo;
Çoklu Tablo İlişkileri Kurarak Sorgulama
• Bir başka örnek;
SELECT Ogrenciler.Adi, Ogrenciler.Soyadi,
Dersler.DersAdi, Sinavlar.Notu
FROM Ogrenciler, Dersler, Sinavlar
WHERE Ogrenciler.OgrNo = Sinavlar.OgrNo AND
Sinavlar.DersKodu = Dersler.DersKodu;
OgrNo Adi Soyadi OgrNo DersKodu Notu DonemDersKodu DersAdi
OGRENCILER DERSLER SINAVLAR
Adlandırmalar (Alias)
• Sorgularda alan adları ve tablo adları, AS deyimi kullanılarak yeniden adlandırılabilir.
SELECT M.MusteriNo, S.Tutar
FROM Musteriler AS M, Satislar AS SWHERE M.MusteriNo = S.MusteriNo;
• Başka bir örnek;SELECT M.MusteriNo AS ‘Müşteri Numarası’, S.Tutar AS ‘Satış Tutarı’
FROM Musteriler AS M, Satislar AS S
WHERE M.MusteriNo = S.MusteriNo;
Belirsiz WHERE Deyimi ve Asteriks Kullanımı
• WHERE kullanılmadığı takdirde tablodaki belirtilen alanlarda bulunan tüm veriler döndürülür.
SELECT Adi, Soyadi FROM Musteriler
• Asteriks kullanımı ile tablodaki tüm alanlar döndürülür.SELECT * FROM Musteriler
Başka bir örnek;
SELECT * FROM Musteriler WHERE MusteriAdi = ‘Ahmet’;
Başka bir örnek;
SELECT * FROM Musteriler, Birimler;
ALL ve DISTINCT Deyimleri
• Tablodaki tekrarlı verilerin birden fazla kez gözükmesi için;
SELECT ALL Adi FROM Musteriler;
• ALL deyimi kullanmak isteğe bağlıdır.
• Tablodaki tekrarlı verilerin yalnızca bir kez gözükmesi için;
SELECT DISTINCT Adi FROM Musteriler;
Metin İçinde Arama
• LIKE karşılaştırma operatörü kullanılarak, metnin başından,sonundan ve içinden belli bir kısmına göre arama yapan sorgularoluşturmak mümkündür.• LIKE ‘ABC%’ Metnin başında ABC yazan kayıtları bulur.
• LIKE ‘%ABC’ Metnin sonunda ABC yazan kayıtları bulur.
• LIKE ‘%ABC%’ Metnin içinde ABC yazan kayıtları bulur.
• Bir örnek;SELECT * FROM Musteriler WHERE Adi LIKE ‘%AL%’;
Aritmetik İşlemler
• Sorgular içerisinde +, -, *, / operatörleri kullanılarak aritmetiksel işlemler yapılabilir.
SELECT UrunAdi AS ‘Ürün Adı’,
Adet – 1 AS ‘Kalan’,
Fiyat * 1.18 AS ‘KDV Dahil Fiyat’
FROM Urunler;
BETWEEN Operatörü
• Bir aralık tanımı gerçekleştirmek için kullanılır.
SELECT * FROM Satislar
WHERE (Tutar BETWEEN 3000 AND 4000) AND UrunAdi = ‘HDD’
Tutarı 3000 ile 4000 arasında
Sonuçları Sıralama
• ORDER BY deyimi ile gerçekleştirilir. İki seçenek vardır:• ASC: Artan Sıralama
• DESC: Azalan Sıralama
SELECT * FROM Musteriler ORDER BY Adi ASC, Soyadi DESC;
Adına göre artan, soyadına göre azalan sırada
Kayıt Sayısını, Verilerin Ortalamasını ve Verilerin Toplamını Bulma
• Kayıt sayısını bulmak için COUNT() fonksiyonu kullanılabilir.
SELECT COUNT(OgrenciNo) FROM Ogrenciler WHERE Bolumu = ‘YBS’;
• Kayıt ortalamasını bulmak için AVG() fonksiyonu kullanılabilir.
SELECT AVG(Notu) FROM Notlar WHERE DersKodu = ‘ENF101’;
• Kayıt toplamını bulmak için SUM() fonksiyonu kullanılabilir.
SELECT SUM(Tutari) FROM Satislar WHERE Kategori = ‘1’;
Kayıt İşlemleri
Kayıt Ekleme, Silme ve Güncelleme
Kayıt Ekleme
• Veri tabanındaki bir tabloya kayıt eklemek için;
INSERT INTO <Tablo Adı> <(Alan1, Alan2,…)>
VALUES <(‘Değer1’, ‘Değer2’,…)>
Örneğin;
INSERT INTO Musteriler (MusteriNo, Adi, Soyadi, Yasi)
VALUES (‘112’, ‘Metin’, ‘Kaya’, 23);
Kayıt Silme
• Veri tabanındaki bir tablodan kayıt silmek için;
DELETE FROM <Tablo Adı>
WHERE <Koşullar>;
Örneğin;
DELETE FROM Musteriler
WHERE Adi = ‘Metin’ AND Soyadi = ‘Kaya’;
Kayıt Güncelleme
• Veri tabanındaki bir tabloda kayıt güncelleme işlemi için;
UPDATE <Tablo Adı>
SET <Güncellenecek Alan = ‘Yeni Değer’,…>
WHERE <Koşullar>;
Örneğin;
UPDATE Musteriler
SET Adi = ‘Mete’, Soyadi = ‘Kayacan’
WHERE MusteriNo = ‘112’;
Kaynakça
• Fundamentals of database systems / Ramez Elmasri, Shamkant B. Navathe.—6th ed., 2010.