«BM364» Veritabanı Uygulamaları-2 Yaşar GÖZÜDELİ ygozudeli@verivizyon.com http://blog.verivizyon.com/ygozudeli
Konu Akışı İlişkisel Veritabanı Temelleri SQL Server Temel Bileşenleri T-SQL Bileşenleri 2
İlişkisel Veritabanının Temelleri SQL- Standartlar Veritabanı Veritabanı Nesneleri Temel Bazı Kavramlar 3
İlişkisel VTYS Temel Terimleri İlişkisel Veritabanın Temelleri 1970'li Yıllarda J.F. Codd(IBM)'de ilişkisel cebir teorisi 1983 SQL(Structural Query Language) ortaya atıldı 1987 ANSI ve ISO tarafından standart olarak yayınlandı ANSI-92 olgunluğa ulaştığı standart ANSI-99 ve ANSI-2003 standartları yayınlandı İlişkisel VTYS SQL Server 2000: Orta-küçük ölçekli firmalarda popüler Windows temelli(windows VTYS pazarının %45'i) 2005: Kurumsal seviye için geliştirilmiş bir ürün Oracle : Platform Bağımsız IBM-DB2 : " Sybase : " MySQL : "-Açık kaynak PostgreSQL : " " 4
Veritabanı Uygulamaların Neresinde? 5
Veritabanı Nesnesi Veritabanı Tablo Constraint Indeks View SP Trigger Kullanıcılar Roller Rule Default Kullanıcı Tanımlı Tipler Kullanıcı Tanımlı Fonksiyonlar 6
İlişkisel Veritabanı Yaklaşımının Temelleri Tablolardan oluşan yapıya veriler NF kurallarına göre dağıtılır Dağılmış veriler(tablolar) bir birincil anahtar ve bir yabancı anahtar ile ilişkilendirilir. (Sayı + harf 32 uzunluk) (En çok 250 karakter boş geçilmez) (Boş geçilmez ondalıklı olabilir 1. Kayıt Barkod Ürün Adı Ürün Fiyatı 1. Satır 1 Java 50 2. Kayıt 2. Satır 2 Delphi 2X2 Alanı 3.Sütun 120 3. Satır 3.Satır 3.Kayıt 3 Linux 1. Sütun 2. Sütun 3. Sütun 60 Alan Sütun Satır Kayıt Veri Tipi 7
Örnek İlişkisel Şema Tasarımı Ürün Listesi Barkod Ürün Adı Fiyatı 1 2 3 Java Delphi Linux 50 120 60 Sipariş Kodu 1 2 Sipariş Listesi Ürün Kodu 1 2 Kullanıcı Kodu 1 1 Kullanıcı Kod 1 2 3 Ali Ahmet Ayşe 4 XML 200 4 Fatma 5 Perl 70 6 C++ 80 Tablo İlişki Birincil Anahtar Yabancı Anahtar 8
VTYS'nin Temel İşlevleri (ilişkisel cebir) Üç temel İşleç(Operatör) İZ DÜŞÜRME (PROJECTION SEÇME(SELECTION) BİRLEŞTİRME (JOINING) Sorgu optimizasyonunda önemli. Hangi işlemler hangi işlemlere dönüşebilir vs. 9
Seçme Barkodu Adı Fiyatı 1 Java 50 Barkodu Adı Fiyatı 1 Java 50 2 Delphi 120 3 Linux 60 3 Linux 60 5 Perl 70 4 XML 200 6 C++ 80 5 Perl 70 7.Net 90 6 C++ 80 8 AutoCad 99 7.Net 90 8 AutoCad 99 10
İzdüşürme Barkodu Adı Fiyatı Markası KDV Barkodu Adı Fiyatı 1 Java 50 Seçkin 0.18 1 Java 50 2 3 4 Delphi Linux XML 120 60 200 Türkmen Açıkkod Arkadaş 0.18 0.18 0.18 2 3 4 Delphi Linux XML 120 60 200 5 Perl 70 Pusula 0.18 5 Perl 70 11
Birleştirme Ürün Kodu 1 2 3 4 Ürün Adı Java Delphi Linux XML Ürün Adı Ürün Kodu Adet Java 1 5 Java 1 3 Delphi 2 7 Ürün Kodu 1 1 Adet 5 3 Linux XML 3 4 2 5 2 7 3 2 4 5 12
Sorgu Ağacı SELECT adet FROM tblurun JOIN tbladet ON tblurun.ürünkod=tbladet.ürünkod WHERE tblurun.urunkod>3 AND adet>4 İlişkisel Cebir: operatörlerioperantları- işlem dönüşümleri adet ürünkod>3 adet > 4 ürünkod=ürünkod tblurun tbladet 13
Veritabanı Uygulamaları OLTP(Online Transactional Proccessing Proccessing) Online olarak veri üreten sistemler OLAP (Online Analiytical Proccessing) Raporlama ve veri analizi yapan sistemler 14
Veritabanın OLTP Uygulamalardaki Rolü Windows Ortamı, {ASP.NET, PHP,ASP,JSP}+Browser PHP Script,VBScript,JavaScript, VB6.0,C#, VB.NET,Java ile yazılmış veri erişim Class ları-kodları Text dosyası, MSAccess,MySQL, SQL Server, Oracle... 15
Haftalık Ödev NoSQL ne demektir? NoSQL veritabanı yönetim sistemleri nelerdir? BigTable MongoDB Hadoop-Hbase Sharding kelimesinin terim anlamı ne demektir? 16
Konu Akışı İlişkisel Veritabanı Temelleri SQL Server Temel Bileşenleri T-SQL Bileşenleri 17
SQL ServerAraçları SQL Server Configuration Manager Management Studio SqlCmd SQL Profiler Booksonline Wizards ve diğer Toolar Database Engine Tuning Advisor Server Integration Services (SSIS) Surface Area Configuration 18
SQL Server Configuration Manager Servislerin Yönetilmesi Port ve protokol ayarlamaları 19
Management Studio Kullanımı Sorgu çalıştırma Nesne Yöneticisi SQL Server solution ile çalışmak Server Registration Diagrams'ın Kullanımı Bir tablo nasıl düzenlenir-oluşturulur, açılır Diğer öğeler 20
Management Studio 21
SQLCMD 22
SAC(Surface Area Configurator) 23
SAC-2 Konfigurasyon Konfigurasyon aktarımı Politika oluşturma ve aktarma 24
SQL Profiler 25
Veritabanı Mimarisi Veri Dosyası ve Dosya Grubu Kavramları Master Data File (*.mdf) Secondary Data File(*.ndf) Transaction Log File (*.ldf) Standart Veritabanları Master Model Tempdb Msdb Distribution ReportsDB ReportsDBTemp Pubs Northwind AdventureWorks 26
Disk Yönetim Mimarisi Neden spesifik disk yönetimi? Page=8K Extend=ardışık 8 sayfa Mixed Extend: Nesne 8K'dan küçük ise Uniform Extend: Nesne 8 page'den büyük ise Geçiş Mümkün BLOB=2GB veri saklayabilen tipler BLOB'lar nerede saklanır? Indeksler Clustred-Nonclustred Heap B+ Tree yapılarda saklanır Bu Ölçüler ne zaman işe yarar? Tabloda bir satır 8060byte ı aşmamalıdır. LOB lar 16Byte Sayılır! 8 K 8 K 8 K 8 K 8 K 8 K 8 K 8 K 64 K 27
Konu Akışı İlişkisel Veritabanı Temelleri SQL Server Temel Bileşenleri T-SQL Bileşenleri 28
Ders:T-SQL'e Genel Bakış DDL DML Fonksiyonlar DCL ve SQL Server Yönetimi 29
DDL(Data Defination Language) Verinin kılıfı ile ilgili tanımlamaların yapıldığı SQL alt dili Enterprise Manager ile yönetmek daha kolay Tablo, Indeks, veritabanı, SP, View, Kullanıcı, Sütun... Gibi veritabanı nesneleri tanımlar veya değiştirir. 3 Temel ifade var: CREATE: Oluşturur ALTER:Değiştirir DROP:Siler <DDL> <veritabanı nesnesi tipi> <nesneye özgü ifadeler> CREATE TABLE deneme( kod INT, isim VARCHAR(20), soyad VARCHAR(20), telefon VARCHAR(11) ) 30
Tanımlayıcı İsimlendirme Kuralları Tanımlayıcı:Tablo adı, veritabanı adı, sütun adı, indeks adı vs... Harf ile başlamak zorundadır (*a-z]veya[a-z]). Değişken isimlerinde Türkçe deki noktalı harfler (İ, ı, Ğ, ğ, Ü, ü, Ş, ş, Ç, ç, Ö, ö) ve boşluk yer almamalıdır. Farklı Kurallar: Tanımlayıcı en fazla 128 Karakter olmalıdır. Harf, rakamlar ve _ her tanımlayıcının yapısında yer alabilir. Ancak diğer #, %, @ işaretlerinin özel anlamları vardır. Yerel değişkenler @ile başlayan bir tanımlayıcı ile adlandırılır. Global değişkenler(ortam parametre fonksiyonları) @@ ile başlayan bir tanımlayıcı ile adlandırılır. Geçici nesneler # ile başlayan bir tanımlayıcı ile adlandırılır. Kurallara uyulmayacaksa [ ] içerisine yazarak kullanmak gerekir. SELECT * FROM [1 nulu şube] ; SELECT * FROM [NOT] 31
ALTER ifadesi Veri kılıfları ile ilgili değişiklikler yapar. Veri kaybına neden olabilir ama doğrudan veriye müdahele edemez! ALTER nesne_tipi nesne_ismi degisiklik_ifadesi USE pubs ALTER TABLE deneme ALTER telefon VARCHAR(11) NOT NULL ALTER TABLE deneme DROP telefon ALTER TABLE deneme ADD tel VARCHAR(11) 32
SQL Server Temel Veri Tipleri(2000) Metin Tipler ASCII CHAR(n), VARCHAR(), VARCHAR(MAX) UNICODE NCHAR(), NVARCHAR(),NVACHAR(MAX) Tam Sayı Tipler TINYINT,SMALLINT,INT,BIGINT Kesirli Tipler Bool Tarih Parasal FLOAT, DECIMAL LOGICAL veya BIT DATETIME, SMALLDATETIME MONEY, SMALLMONEY UniqueIdentifier ve TimeStamp Tablo Tipi Değişkenler(Geçici Tablo üstüne kurulu) Variant Kullanıcı Tanımlı Tipler 33
DROP ifadesi Nesneleri Silmek için Kullanılır USE dukkan CREATE TABLE test (isim VARCHAR(20),soyad VARCHAR(20)) GO sp_help test DROP TABLE test 34
DML(Data Manuplation Language) Veri ile ilgili İşlemler INSERT SELECT UPDATE DELETE Fonksiyonlar 35
Veri Eklemek: INSERT Yeni veri eklerken kullanılır. Her bir satır için tek tek INSERT INTO veya Hazır bir tablodan veri alınabilir INSERT INTO tablo_adi(sutun1[,sutun2,...]) VALUES(deger1[,deger2,...]) INSERT INTO deneme(isim, soyad, telefon) VALUES('Ali', 'HAVUÇCU', '02123333333') INSERT INTO deneme(isim,soyad,telefon) VALUES('Ahmet', 'HANÇER', '0312000000') INSERT INTO deneme(isim, soyad, telefon) VALUES('Ali', 'HAVUÇCU', '02123333333'), ('Ahmet', 'HANÇER', '0312000000') 36
Verileri Seçmek ve Filtrelemek İz düşürme Seçme Ve Birleştirme işlemleri SELECT sutun_ismi1[,sutun_ismi2,...] * FROM tablo_adi WHERE sutun_ismi = deger SELECT * FROM deneme USE pubs SELECT * FROM deneme WHERE isim='ali' 37
Kayıtları Sıralamak Kayıtları bir veya daha fazla sütuna göre Artan(ASC) Azalan(DESC) Sıralamak mümkündür. SELECT sutun_ismi1[,sutun_ismi2,...] * FROM tablo_ismi ORDER BY sutun sutun_no [ASC DESC,sutun2 ASC DESC]... SELECT isim, soyad, telefon FROM deneme ORDER BY isim, soyad Artan mı azalan mı? 38
Kayıtları Güncellemek: UPDATE Verileri güncellemek için UPDATE ifadesi kullanılır Aynı anda bir UPDATE ifadesi ile sadece bir tablodaki kayıtlar güncellenebilir! Bir satırın bütün alanları veya sadece bir alanı veya bazı alanları güncellenebilir! WHERE şartı olmazsa, bütün satırlardaki veriler değiştirileceğinden, veri kaybı olabilir!! UPDATE tablo_ismi SET alan=deger [,alan2=deger2] WHERE şart tanımları UPDATE deneme SET isim='veli' WHERE isim='ali' 39
Verileri Silmek Tek DELETE ifadesi ile sadece bir tek tablodaki kayıtlar silinebilir İzdüşürme yok! Yani aynı anda bir satırın bazı alaları silinemez! Satır tüm olarak silinebilir! WHERE şartı olmazsa, bütün satırlardaki veriler değiştirileceğinden, veri kaybı olabilir!! DELETE FROM tablo_ismi WHERE şart tanımları DELETE FROM deneme WHERE isim='ali' 40
Fonksiyonlar Grupsal Fonksiyonlar Verileri gruplara ayırdıktan sonra her gruba ait istatistikleri almak için kullanılır min,max,sum,count,avg use pubs go SELECT SUM(price) FROM titles SELECT SUM(price)/COUNT(*) as 'fiyat/toplamkitap', AVG(price) as 'ORTALAMA', SUM(price)/COUNT(price) as 'ortalama' FROM titles? 41
Rowset Fonksiyonlar Bir tablo gibi davranan fonksiyonlardır İleride göreceğimiz OPENROWSET() fonksiyonu SELECT FROM <ROWSET FONKSIYON> Şeklinde FROM'dan sonra kullanılırlar SELECT tablomsu.* FROM OPENROWSET('SQLOLEDB','uzak_sunucu';'sa';'sifrem', 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS tablomsu GO 42
Skaler Fonksiyonlar Skaler bir değeri veya bir sütuna ait verileri işleyen fonksiyonlardır. SELECT <skaler fonksiyon> FROM tablo WHERE <skaler fonksiyon> = <skaler fonksiyon> SELECT GETDATE() Dönüştürme Fonksiyonları CAST(<veri veya sütun> AS <veri tipi>) CONVERT(<veri tipi>,<veri veya sütun>, <çevirme tür kodu>) SELECT CONVERT(VARCHAR(16), GETDATE(),104) SELECT 'bugün ' + CAST(GETDATE AS VARCHAR(16)) + ' ' + ' tarihidir' 43
Başlıca Skaler Fonksiyonlar Alan Fonksiyon Açıklama Konfigürasyon Fonksiyonları @@SERVERNAME @@VERSION @@CONNECTION SQL Server'n çalıştığı sunucunun ağ adı SQL Server'in motorunun sürümü SQL Server açıldıktan sonra kaç bağlantı kurulmudur Matematiksel Metadata Metin Zaman ABS EXP LOG COL_LENGHT isindexable LEFT RIGHT SUBSTRING UPPER LOWER LTRIM RTRIM REPLACE GETDATE() YEAR (tarih) MONTH (tarih) DAY (tarih) Mutlak değer bulur Üs alır Logaritma alır. Sütunun ne kadar uzunlukla tanımlandığını gösterir. Bir view'in üstünde indeks tanımlanabilip tanımlanamayacağını döndürür. Metnin solundan n tane harf almak için kullanılır Metnin sağından n tane harf almak için kullanılır. Metnin içinden belli sayıda harf almak için kullanılır. Metni büyük harfe çevirir Metni küçük harfe çevirir Metnin başındaki beyaz karakterleri atar Metnin sonundaki beyaz karakterleri atar. Belli bir ifadeyi başka bir ifade ile değiştirmek için kullanılır. Sistemin şu anki saat ve tarihi Verilen tarihin yılını bulur. Verilen tarihin ayını bulur Verilen tarihin gününü bulur 44
Deterministik NonDeterministik Herhangi bir fonksiyonu aynı şartlarda çağırsak, aynı neticeyi verir mi? SELECT LEN('aaaa'), GETDATE() GO SELECT LEN('aaaa'), GETDATE() 45
Veri Kontrol Dili Veri kontrolü=yetki verme ve erişime kısıtlama koyma GRANT: Yetki vermek DENY: Erişime kısıtlama koymak REVOKE: Konulmuş kısıtlamayı veya verilmiş yetkiyi kaldırmak İki şey için yetki verilebilir Statement permeation= ifade çalıştırma hakları Object permeation = nesne izinleri sp_helprotect <nesne ismi> :nesne hakkında kimlere izin verilmiş? Üç şeye yetki verilebilir Kullanıcı Role Schema 46
Kullanıcı Yönetim Mimarisi 47
Yetkilendirme Modları Windows Only Sadece Windows kullanıcıları yetkilendirilebilir! Mixed Mode SQL Server kendi kullanıcılarını yetkilendirebilir Nasıl Değiştirilir? Soru: SQL Server'daki server kullanıcıları, Windows only iken SQL Server'e erişebilir mi? 48
Sonuç Veritabanı Kavramları SQL Server'in Bileşenleri, Mimarisi, Başlıca araçlarının kullanımı 50
51