Upload
others
View
14
Download
0
Embed Size (px)
Citation preview
Veri Tabanı
Yönetim Sistemleri I
Dr. Öğr. Üyesi Fırat YÜCEL
Akdeniz Üniversitesi
Enformatik Bölüm Başkanlığı
Ders Hakkında
Dersin Kodu ve Adı : YBS 201 Veri Tabanı Yönetim Sistemleri I (Zorunlu)
Kredisi : 3+0 Ulusal: 3 AKTS: 4
Sınav Ağırlıkları :
Ara Sınav (% 30)
Dönem Projesi (% 10)
Yarıyıl Sonu Sınavı (% 60)
Devam Koşulu : % 70 devam zorunlu
Yazılım : Microsoft SQL Server 17.x veya 18.x
Gerekli Malzemeler : Flash Bellek (>1 GB)
Derste not tutunuz.
I. Bölümİlişkisel Veri Tabanının Temelleri
Veri Tabanı
Veri tabanı (database), verilerin
belli bir kural ve sistematiğe göre
düzenlenmiş hallerine verilen
addır.
Örneğin;
Hasta veri tabanı
Dokümanlar veri tabanı
Kütüphane veri tabanı…
İlişkisel Veri Tabanı
Günümüzde en yaygın kullanılan
veri tabanı, ilişkisel veri tabanı
(relational database) yaklaşımında
olan veri tabanlarıdır.
İlişkisel veri tabanı, verileri tablo adı
verilen listelerde saklayarak, listeler
arasında ilişkiler tanımlar. İlişkisel
kavramı buradan gelmektedir.
İlişkisel Veri Tabanı Tarihçesi
İlişkisel veri tabanının kökeni, 1970’li yıllarda
IBM laboratuvarlarında E.F. Codd
tarafından yapılan çalışmalarda atılmıştır.
1983’te SQL (Structural Query Language)
standartları tanımlanmıştır.
1987’de önce ISO ardından da ANSI
tarafından standart olarak kabul edilmiştir.
ANSI SQL-92 standardı birçok veri tabanı
yönetim sisteminin kullandığı temel dildir.
İlişkisel Veri Tabanı
Veriler birbiri ile ilişkili tablolarda saklanır.
Verilerin ayrı tablolara ayrılması ve bunların arasında ilişki
kurulması sayesinde daha fazla veriyi, daha az alanda
ve daha fazla yönetilebilir olarak saklamak mümkün olur.
Veri Tabanı Yönetim Sistemi
Veri tabanı yönetim sistemi (Data Base Management
System, DBMS) ise, veri tabanlarının oluşturulması, verilerin
saklanması, içeriğinin düzenlenmesi, ilişkilendirilmesi,
güncellenmesi ve yetkili kişiler tarafından kullanılması için
araçlar sağlayan sistemlerdir.
DB DBMS
Kullanıcı
Veri Tabanı Yönetim Sistemleri
Oracle database
IBM DB/2
Adaptive Server Enterprise
Informix
Microsoft Access
Microsoft SQL Server
Microsoft Visual FoxPro
MySQL
PostgreSQL
Progress
SQLite
Teradata
CSQL
OpenLink Virtuoso
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
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. Veri tabanı tanımlamaları, bir katalog
formunda DBMS içerisinde tutulur. Bu verilere «meta-data» adı verilir.
Uygulama Programı, Sorgu, İşlem
Uygulama programı (application program), DBMS’ye sorgular ve istekler
göndererek veri tabanına erişim sağlar.
Sorgu (query), genellikle veri tabanından bazı verilerin dönmesini sağlayan
ifadelerdir.
İşlem (transaction), veri tabanından bazı verileri okumak veya veri tabanına bazıverileri yazmak için yapılan işlemlerdir.
Koruma (protection), DBMS’nin diğer bir işlevidir. Zararlı yazılımlara karşı
donanımsal veya yazılımsal sistem koruması önemlidir.
Zaman zaman verilerin kaybına karşı veri tabanındaki verilerden yedekler alınması
gerekmektedir. Bu işleme yedekleme (maintaining) denir.
Birincil Anahtar ve Yabancı Anahtar
Birincil Anahtar (Primary Key); bir tabloda her bir kayıt için verilen benzersiz
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 tabloda diğer
tablodaki kayıtlarla ilişki kurulan alanlardır. #
Örnek İlişkisel Veri Tabanı Tasarımı
İnternet üzerinden ticaret yapılan büyük bir mağaza için veri tabanı tasarımı
yapalım.
Ürünler listesi
Müşteriler listesi
Satış işlemleri listesi
BİRİNCİL VE YABANCI ANAHTARLAR (INDEKSLER) HARİÇ HER VERİ EN FAZLA
BİR KEZ TUTULACAK!
Bunun için ilişkileri doğru bir şekilde belirlemek gereklidir.
Ö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]
m
***** 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
# #
Başka Bir İlişkisel Veri Tabanı Örneği
Örnek olarak, UNIVERSITE adlı bir veri tabanı içerisinde yer alan OGRENCI,
DERS, DONEM, SINAV_SONUC, ONKOSUL adlı 5 dosyada tutulan aynı türdeki
verileri düşünelim.
Bu veri tabanını tanımlamak için, her bir dosyada tutulacak kayı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şkiler
belirlenmelidir.
Öğrenci İşleri 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ı
Veri tabanı yaklaşımında, tanımlamalar en başta bir defaya mahsus gerçekleştirilir
ve veri girişi tekrar yapılmaz. Bu veriler çok sayıda kullanı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ı uygulama programının
içerisinde tanımlanır. Değişiklik gerektiğinde hem dosyaları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 ya da parametreleri) de veritabanı tanımlamalarının bir parçası olarak tanımlayabilir.
DBMS’de, arayüz değişse de tanımlanan bu işlemlerdebir aksama söz konusu olmaz. Bu durum program-işlembağımsızlığı olarak adlandırılır.
Hem program-veri bağımsızlığı hem de program-işlembağı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ılar farklı
konularda verilerle ilgilenirler. Bu verilerden elde edilen raporlar (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ına erişimine
izin vermelidir.
Aynı anda veri güncelleme istemlerinin, veri işlem kontrol uygulamalarıyla
kontrol edilmesi gerekir. Bu uygulamalara, online transaction prosessing
(OLTP) uygulamaları denir.
Veriler üzerinde yapılan işlemlerin sonucu hakkında çıkarımda bulunan
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…
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ı 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
Veri Tabanı Sistemi Kavramları ve
MimarisiVeri 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 kavramlar bü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ünyada tanı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 ortak nokta
ve birleşmeyi ifade eder. Örneğin bir çalışan ile bir projeyi iliş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)
Ö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ılarp: 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 Urunler
ADD Fiyat DECIMAL(10,2);
Tablodan bir alanı silmek için;
ALTER TABLE Urunler
DROP COLUMN Fiyat;
Tablodaki bir alanı güncellemek için;
ALTER TABLE Urunler
ALTER 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 1:
SELECT Adi, Soyadi FROM Ogrenci WHERE OgrNo = ‘20121105015’;
Örnek 2:
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 S
WHERE 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 sorgular oluş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 İşlemleriKayı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.