SQL SERVER NEDİR SQL Server genel olarak iki tip veritanını yönetmek için kurulur. 1.OLTP (Online Transaction Processing) Bu yapı içinde veriler tutulur. Bu verilere kullanıcılar aynı anda değiştirebilir, güncelleyebilir, sorgulama yapabilir, silebilir, (Bilinen tüm database işlemleri yapılabilir.) 2.OLAP (Online Analitical Processing) Genellikle büyük veritabanları hakkında özet bilgilerin oluşturulduğu, veritabanlarıdır. Bu bilgiler analiz ve raporlamada kullanılır. Sql Server ilişkisel veritabanı yöntemlerini kullanır yani RDBMS (Relational Database Management System) olarak adlandırılır. RDBMS YAPISI 1. Tablolar içerisinde veri oluşturma ve tutma. 2. Veriler ve tablolar arasında ilişki kurma. 3. Veriler arasındaki ilişkiler için gerekli olan kuralları belirleme. (Örn: Primary Key, Foreign Key) 4. Sistem problemlerinde verileri kurtarma.(Örn: recover,backup,restore) 5. Client uygulamalarından gelen istekleri cevaplama.(Yazılımlar aracılığı ile veri yönetimi) 6. Transaction ve analiz için veri kaynaklarını yönetme. Kullanıcı Uygulamaları 1- Transact Sql : Bu bir sorgulama dilidir. SQL (Transact Structure Query Language-Yapısal Sorgulama Dili işlemleri) dilinin kullanılmasıyla yapılan işlemlerdir. (Örn: İnsert, update, delete sorgusu) 2- XML : (Extansible Markup Language) Html kodları içerisinde XML tagleri ile veritabanı işlemleri yapılması yöntemi. Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 1 3- OLEDB ve ODBC Uygulama Arayüzleri : Uygulamalar OLEDB ve ODBC kullanarak veritabanı işlemleri yaptırmaktır. Burada kullanılan komutlar yine TSQL diline ait komutlardır. 4- Active X Data Object (ADO) : ADO.NET bir programlama dilinde OLEDB’yi kullanarak veritabanına erişim sağlar. Bu programlama dilleri Visual Basic, C#, J# gibi… 5- English Query : Bilinen TSQL yerine basit İngilizce kelimeler kullanarak yapılan sorgulamadır. (Örn: how much rows are there on maas table?) VERİTABANI TİPLERİ İlk kurulduğunda otomatik olarak bazı veritabanları gelir. Bunlar “System Database” linkinin altında; -Master: Kullanıcı hesapları ve sistem hata mesajlarını izler. -Model : Yeni oluşturulacak veritabanları için temel kalıp oluşturur. -Tempdb : Geçici tablo bilgileri ve diğer geçici bilgilerin tutulduğu yerdir. -Msdb : Zamanlama ile yapılan iş bilgilerini tutar. (Örn: Zamanlanmış görevler) VERİTABANI NESNELERİ - Tables : Kayıtların tutulduğu objelerdir. Column ve rowlardan oluşur. - View: Birden fazla tabloyu ilişkilendirerek Kayıtların görüntülenmesi için oluşturulmuş sorgular. - Database Diagram : Tablo ilişkilerini izlemek için kullanılır. - Storage: Veri tabanı ya da tabloların depolama yöntemlerinin belirlendiği bölümdür. - Synonyms (eş anlamlılar): Yerel veya uzak bilgisayarlarda bulunan veri tabanı nesnelerine farklı bir ad vermek veri tabanı nesnelerinin konum değişikliğinde uygulamalarının korunmasını sağlar Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 2 - Programmability: procedure, functionlar, triggerlar vb. gibi program parçacıklarının database üzerinde yazıldığı bölümleri içeren nesnedir. - Service Broker: farklı veritabanları arasında iletişim için bileşenleri oluşturmak için kullanılan alt yapıdır - Security: O veri tabanı üzerinde yetkili kullanıcıların tanımlandığı, bu kullanıcıların hangi tablolalar üzerinde hangi yetkilere sahip olduğunun belirlendiği bölümdür MsSql server için tam isim tanımlaması (Fully Qualified Names) : Herhangi bir veri tabanı nesnesi için isim tanumlaması dört bölümden oluşur. -Server adı -Database adı -Sahip adı -Obje adı Örn : Create table (veri tabanı adı)KURS.dbo.(yeni oluşturulacak tablo adı)DENEME(sn int, ad varchar(50)) Veritabanı Oluşturma Adımları 1. Sql Server’a bağlanılır. 2. Database üzerinde new database seçeneği seçilir. 3. Gelen ileti kutusu üzerinde General Sekmesindeki name kısmından database bir ad verilir. 4. Sql serverda verilen adla artık bir veritabanı oluşmuştur. Tablo Oluşturma SQL İLE: Create table veri tabanı adı.dbo.Tablo adı(alanadı1 tipi1, alanadı2 tipi2…) Örnek: Create table OGRENCI.dbo.KURS(sn int, ad varchar(50)); Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 3 Veri Tipleri (Data Type) Alfasayısallar: Char: İçerdiği veriler, alfanümeric olup, hep aynı karakter sayısına sahip veri tipleridir (örnek:telefon numaraları) Varchar: İçerdiği veriler, alfanümeric olup, verilerin karakter uzunluklarında eşitlik yoktur. Nchar: İçerdiği veriler, alfanümeric olup, hep aynı karakter sayısına sahip veri tipleridir (örnek:telefon numaraları) NVarchar: İçerdiği veriler, alfanümeric olup, verilerin karakter uzunluklarında eşitlik yoktur. Char-Varchar veri tipleriyle, Nchar-Nvarchar veri tipleri arasındaki fark : Nchar-Nvarchar tipler Unicode içerirler. Unicode'nin avantajı,uluslararası karakter setini kullanmasından dolayı,dünyada tanımlı olan her alfabeyi içermesidir.Bu verilerin bozulmadan taşınabilirliğini sağlar. Tarih tipleri: Time: Saat verisini tutar Date: Tarih verisini tutar DateTime: Tarih ve saati birlikte tutar Smalldatetime : Tarih ve saati birlikte tutar. DateTime ile farkı: datetime,1 Ocak 1753 ve 31 Aralık 9999 arası tarihleri saklayabilen veri tipidir. smalldatetime,1 Ocak 1900 ve 6 Haziran 2079 arası tarihleri saklayabilen veri tipidir. DateTime tipi verileri formatlamak: SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), 0) 1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 4 : : : : : : : : : : : : Jul 17 2009 07/17/09 09.07.17 17/07/09 17.07.09 17-07-09 17 Jul 09 Jul 17, 09 16:43:05 Jul 17 2009 07-17-09 09/07/17 4:43PM 4:43:05:573PM SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), 12) 13) 14) 20) 21) 22) 23) 24) 25) 100) 101) 102) --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç : : : : : : : : : : : : SELECT CONVERT(VARCHAR, GETDATE(), 103) SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT SELECT CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, CONVERT(VARCHAR, GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), GETDATE(), 104) 105) 106) 107) 108) 109) 110) 111) 112) 113) 114) 120) 121) 126) 127) --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç --Sonuç : : : : : : : : : : : : : : : 090717 17 Jul 2009 16:43:05:590 16:43:05:590 2009-07-17 16:43:05 2009-07-17 16:43:05.590 07/17/09 4:43:05 PM 2009-07-17 16:43:05 2009-07-17 16:43:05.590 Jul 17 2009 4:43PM 07/17/2009 2009.07.17 --Sonuç : 17/07/2009 17.07.2009 17-07-2009 17 Jul 2009 Jul 17, 2009 16:43:05 Jul 17 2009 4:43:05:607PM 07-17-2009 2009/07/17 20090717 17 Jul 2009 16:43:05:607 16:43:05:620 2009-07-17 16:43:05 2009-07-17 16:43:05.620 2009-07-17T16:43:05.620 2009-07-17T16:43:05.620 Parasal Veri tipleri: Sql Server parasal türde veri saklamak için money ve smallmoney tiplerini sunmaktadır.Bu veriler,virgülden sonra 4 basamağa kadar duyarlı ondalık tipli verilerdir. money, 99999999999999,9999,yaklaşık 99 Trilyon ile ,-99999999999999,9999 arası veriler için kullanılır. smallmoney,214,748.3648,yaklaşık 214 bin ile ,-214,748.3648 arası veriler için kullanılır. Sayısal Veri tipleri: binary -> sabit uzunluklu ikili(0,1) veriler için. varbinary -> değişken uzunluklu ikili(0,1) veriler için. Tinyint 1 byte büyüklüğüne sahip,0-255 arasındaki tam sayı veriler için kullanılır. Smallint 2 byte büyüklüğüne sahip,+- 32 bin arasındaki tam sayı veriler için kullanılır. int 4 byte büyüklüğüne sahip,+- 2 milyar arasındaki tam sayı veriler için kullanılır. Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 5 Bigint 8 byte büyüklüğüne sahip,+ 2u63 ile -2u63 arasındaki tam sayı veriler için kullanılır. Sql server kayan nokta aritmetiği için kullanılan veri tipleri Float 7 basamağa kadar çıkmaktadır. Real 15 basamağa kadar çıkmaktadır Decimal(precision,scale) ondalık ve tamsayı verileri saklayabilen türlerdir. Numeric ondalık ve tamsayı verileri saklayabilen türlerdir. Diğer Veri Tipleri bit,adı üzerinde 1 bitlik veri hücresidir.Bir takım verilerin işaret bilgisi için kullanılır sql_variant,text,ntext,image,timestamp ve kendi türünden(sql_variant) veriler haricindeki farklı tüm tipleri saklayabilen değişken yapılı bir veri türüdür. timestamp,bir tablo güncellendikçe değeri otomatik olarak 1 artan veri türüdür.Hex formatında yazılır,başlangıç değeri 0x00000000000007D1 gibi rasgele olarak verilir. uniqueidentifier,benzersiz 16 byte hex değerindeki bir veri türüdür.Genellikle kayıt sayısının 4 milyarı geçeceği durumlarda veya çeşitli güvenlik sebeblerinden ötürü kullanılmaktadır. image veri türünün ise bir çok veritabanında performans kaybına neden olduğu göz önüne alındığında BLOB(Binary Large Object) verileri artık terkedilmeye başlamıştır. xml -> XML türünde,alt veriler içerebilecek bir veri. Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 6 Sql Server DateTime(Tarih Saat) Fonksiyonları Fonksiyon Açıklama GETDATE() DATEDIFF() DATEADD() Sistemin o anki tarih ve saatini verir ÖRNEK: SELECT GETDATE() İki tarih arasındaki farkı gösterir ÖRNEK: SELECT ADI,SOYADI,DATEDIFF(DAY,DOGUM_TARIHI,GETDATE()) FROM KIMLIK Parametre olarak geçeceğimiz tarih’e gün, ay, yıl eklemek için kullanırız. ÖRNEK: SELECT DATEADD(DAY,20,GETDATE()) DATEPART() Parametre olarak geçtiğimiz tarihin sadece gün, ay, yıl şeklinde parçalayıp alabiliriz. CONVERT() Tarih ve saat veri türlerini farklı formatlarda göstermek için kullanabiliriz. DAY() Parametre olarak geçtiğimiz tarihin gün kısmını verir. MONTH() Parametre olarak geçtiğimiz tarihin ay kısmını verir. YEAR() Parametre olarak geçtiğimiz tarihin yıl kısmını verir. MsSql Server Araçları ile Bu bölümümüzde ise databasemi tablolarımızı ekleyeceğiz.Öncelikle Object Explorer'a geri dönüyoruz ve databasemizi buluyoruz ve sol tarafında bulunan + ya tıklıyoruz.Database Diagrams,Tables,Wiews dosyalarını görüyorsunuz. Tablo oluşturmak için burada sadece Tables dosyasını kullanacağız. Tables >New > Table Tıklıyoruz. Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 7 Tablonun Sütunlarını Oluşturmak Karşımıza çıkan pencerede tablomuzun sütunlarını(Column) yazıyoruz. İlk olarak Id sütunumuzu yazıyoruz ve yazdığınız satırın üstüne sağ tıklayıp Set Primary Key seçeneğine tıklıyoruz. Peki set primary key ne işe yarıyor derseniz eğer bir kaç madde ile tanımlayalım. Primary Key Özellikleri Nelerdir ? 1) Bir tabloda en falza 1 primary key olabilir. 2) Primary key olan sütunda veri tekrarı olmaz. Unique Index özelliği vardır yani benzersiz değerler farklı değerler,veriler olması gerekiyor. 3) Primary key olan sütunlar "NULL" değeri taşıyamaz. Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 8 Kısacası primary key 1 tane değerden bir tane daha eklenmemesini sağlıyor. Örnek olarak verirsek "ahmet" adlı veriyi ikinci kez kayıt etmiyor. İlerleyen zamanlarda bu çok işinize yarayacak.Devam edicek olursak, Id adlı sütunumuzu primary key olarak ayarladıktan sonra properties veya column properties penceremizden (eğer açık değilse Wiew menüsünden Properties Window yada F4'e basarak açabilirsiniz.) Identity Specification seçeneğini yes yapıyoruz.Peki Identity seçeneği bize ne işimize yarıyor ? Identity Specification Özellikleri Nelerdir? 1) Identity Specification özelliği sadece "Int" data type olarak seçilen sütunlar için kullanabilirsiniz. 2) Identity Specification özelliği "Yes" yapıldığı taktirde 1 den başlayıp kayıt eklendiği sürece otomatik artacaktır. 3) Bu özellik genellikle no yada id vermede kolaylık sağlamaktadır. Indentity özelliğimizi ekledikten sonra diğer sütunlarımızı oluşturabiliriz. İkinci sütun adı olarak "Ad" yazıyoruz.Bu sütunumuzun data type olarak "nvarchar(50) " kullanıyoruz.Bir diğer sütunumuz ise "Soyad" sütunu, bu sütunumuzda da aynı data type kullanıyoruz.(Resim 5) Şimdi tablomuzun penceresini kapatıyoruz . "Choose Name" başlıklı küçük bir kutucuk açılıyor ve burada tablomuzun ismini istiyor. Türkçe karakter kullanımına dikkat ederek tablomuzun ismini "Kullanicilar" yazıyoruz ve Ok diyoruz Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 9 Resim 6 Tablomuzu kurduk eğer databasenize sağ tık yapıp Refresh yaparsanız tablonuz Tables dosyasının içine gelecektir Tabloya Veri Ekleme Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 10 En son işlemimiz olan tabloya veri eklemeye geldik. Bu alanda query kullanacağız. SQL kodlarını kullanarak veritabanlarında işlemler yapacağız. İlk olarak New Query yapıyoruz.(Resim 8) Artık kodlamaya başlayabiliriz.Açılan penceremizde şu kodları kullanacağız. insert into Kullanicilar (Ad,Soyad) Values ('Eren','Akpınar') select * from Kullanicilar Kodlarımızı yazdıktan sonra Execute(F5) e basıp işlemlerimizi gerçekleştiriyoruz. Burdaki kodlarımızı biraz açarsak; Insert komutu yeni bir değer ekleme yaparken kullanılacak komuttur. Kullanicilar yazan kısım ise tablomuzun adı.insert into nun hemen altındaki (Ad,Soyad) kısmı içine veri eklenecek sütunların adıdır ve values değerleri gösterir. Yani burada veritabanımızın Ad bölümüne Eren Soyad Bölümüne Akpınar verisini yolladık. Gördüğünüz gibi bir de select komutu var.Select komutu ile veri tabanımızdaki bilgileri getirebiliyoruz.Kodumuzu biraz açarsak eğer * yazan kısım o tablonun verileri gelirken tüm sütunların içindeki verileri getiriyor.Eğer biz sadece adını istiyorsak yıldız yerine Ad yazmamız yeterli olacaktır. from Kullanicilar komutu yine tablomuzu belirlemek amacı ile kullanılır. Bu komutlarımızın kısa anlatımı olarak öncelikle insert ile ekleme işlemi yaptırıyoruz ve ekleme işlemi yapılmış mı diye select komutu ile kontrollerini yapıyoruz. NOT: Tablo tasarımı üzerinde değişiklik yapıp yeniden kaydetmek için “tools”-options seçeneği seçilir.”Designers” bölümünden “Prevent Saving Changes that require table re-creation (Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle)” işareti kaldırılır Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 11 Tablo silmek 1- Tablo üzerindeysek “delete” seçeneği seçilir 2- drop table veri tabanı adı.dbo.tablo adı yazılarak sql query modunda çalıştırılır. Örnek: drop table OGRENCI.dbo.KIMLIK Dışarıdan Tablo Almak-Dışarıya tablo vermek 1- Veri tabanı üzerinde sağ Mouse menüden “tasks” seçeneği seçilir 2- Eğer dışarıdan tablo alınacaksa; import data seçilir, 3- Data source listesinden; hangi tip veri tabanından tablo alınacaksa o seçilir (örnek:Microsoft Access Database Engine) 4- File name bölümünden veri tabanınızın olduğu yer ve veri tabanı seçilir (örnek: OGRENCI.mdb) 5- Sonra gelen ileti kutusunda “Destination” listesinden sizin mssql server database seçilir (not: eğer sa kullanıcısı ile veri tabanı oluşturduysanız “use SQL Server Authentication” seçeneği işaretlenir 6- User name:sa, password:? Girilir, Database bölümünde tablonun alınacağı veri tabanınızın seçili olduğuna dikkat edin 7- Gelen ileti kutusundan 1. Seçenek “Copy Data from….” Seçenei işaretli olmalıdır 8- Artık data kaynağındaki tablolar listelenir. Hangi tablo ya da tablolar alınacaksa onlar işaretlenip seçilir ve next denir 9- En son olarak “Finish” seçilip tablo alma işlemi bitirilir. Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 12 10Alınan tabloyu “object Explorer” içinde veri tabanınızın altındaki tablolar içinde görmek için araç çubuğu üzerindeki Refresh butonu ya da F5 tıklanır Tablolar Arası ilişki oluşturmak (Database Diagrams) 123456- İlgili veri tabanı altında “Database Diagrams” üzerinde sağ Mouse basılır New Database Diagrams seçilir İlişki kurulacak tablolar seçilir 1’den sonsuza (PK dan FK ya) sürüklenir Ok tuşlanır ve save all seçeneği ile kayıt yapılır İlişki properties den INSERT and UPDATE açılır ve listeden “Delete Rule” ve “Update Rule” seçeneklerinden “Cascade” seçilerek yaniden save seçeneği ile ilişki kaydedilir Kullanıcı Oluşturma işlemleri Sql Server’da kullanıcı oluşturmak için ; 1. security den new-login ya da alt seçeneklerinden logins-new login bölümü seçilir 2. New login gelen ileti kutusunda login name kısmına veritabanına login olacak kullanıcının adı yazılır. Authentication kısmından da veritabanının açılış şekli seçilir. Eğer Windows authentication seçilirse name kısmındaki ad aynı zamanda Windows kullanıcısı da olması gerekir. Sql server authentication seçilirse bu kullanıcının sadece sql server database kullanıcısı olması sağlanır ve password belirtilir. 3. Database bölümünde ise istenilen database seçilir. Eğer seçilmezse default master veritabanıdır. 4. Language bölümünden dil seçilir. 5. Server Roles linkinden bu kullanıcı için veri tabanı üzerinde haklar seçilir. (public default seçilidir. Veri tabanı üzerinde tüm haklara sahip olunsun isteniyorsa; sysadmin seçeneği de seçilmeldir) Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 13 6. User Mapping bölümünde isteğe göre seçilen veri tabanı değiştirilebilir, yeni veri tabanları eklenebilir. 7. Yapılan bu işlemler onaylanır 8. Refresh ya da F5 le yenilendiğinde Security-Logins bölümünde yeni kullanıcıyı görebilirsiniz. İsterseniz disconnect yaparak yeniden bu kullanıcınızla connect olabilirsiniz. Veri tabanı üzerinde SQL oluşturma 1- Veri tabanı üzerinde New Query seçilir 2- Gelen ekranda, sql modunda seçili veri tabanı içindeki tablolardan sorgular oluşturulabilir. 3- Bu sorgu kaydet denildiğinde disk üzerine sql uzantısı olarak save edilir 4- Aynı sql sayfası üzerinde birden fazla sql cümlesi çalıştırılabilir. Sorguların sonuna ; konulur, tüm sorgu seçilir ve execute simgasi tıklanarak seçili sql çalıştırılır. 1234567- View oluşturma İlgili veri tabanı üzerindeyken view sekmesi açılır View üzerinde Mouse sağ menüden “new view” seçilir Gelen ileti kutusu kapatılır Sql yazılır Execute (çalıştırılır) edilir Save edilirken bir view adı verilir Refrehs yapıldığında yeni viewi görebilirsiniz YA DA sql ile oluşturabilirsiniz. Örnek: Karadeniz illerini veren view(view adı: karadeniz_illeri) CREATE VIEW karadeniz_illeri AS SELECT IL_KODU,IL_ADI FROM dbo.ILLER WHERE BOLGESI=5; Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 14 TRIGGER (TETİKLEYİCİ) OLUŞTURMAK Tablolardan herhangi biri üzerinde, ister veri tabanında isterse ara yüzlerde yapılacak veri değişikliğinde, bir başka tablonun(tabloların) etkilenmesi için yazılan veri tabanı nesnesidir. 1- Oluşturulacak tablonun solundaki (+) işareti açılır 2- Gelen işlemlerden trigger üzerinde sağ Mouse menüden “new trigger” seçilir 3- Ya da “new query” ile sorgu ekranı açılır 4- oluşturulacak trigger scripti bu ekranda yazılır. 5- Execute edilir. 6- Böylece tetikleyen tabloda yapılacak değişiklikler tetiklenen tabloda da gerçekleşir. Örnek triggerler: 1- ILLER tablosuna yapılacak kayıt ekleme Y_ILLER tablosuna da eklensin. create TRIGGER [dbo].[trg_il] ON [dbo].[ILLER] FOR INSERT AS SET NOCOUNT ON; BEGIN DECLARE @KODU numeric(4) SET @KODU = (SELECT IL_KODU FROM inserted) DECLARE @ADI nvarchar(30) SET @ADI = (SELECT IL_ADI FROM inserted) DECLARE @BOL numeric(4) SET @BOL = (SELECT BOLGESI FROM inserted) insert into [dbo].[Y_ILLER](YIL_KODU,YIL_ADI,YBOLGESI) Values (@KODU,@ADI,@BOL); END; 2- ILLER tablosunda bir kayıt silindiğinde Y_ILLER tablosunda da aynı kayıt silinsin CREATE TRIGGER [trg_il_sil] ON [dbo].[ILLER] AFTER DELETE AS SET NOCOUNT ON; BEGIN DECLARE @ILKO numeric(4) SET @ILKO = (SELECT IL_KODU FROM deleted) DECLARE @ILAD nvarchar(30) Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 15 SET @ILAD = (SELECT IL_ADI FROM deleted) DECLARE @BOL numeric(4) SET @BOL = (SELECT BOLGESI FROM deleted) DELETE FROM [dbo].[Y_ILLER] WHERE YIL_KODU= @ILKO END; MSSQL SERVER’DA TÜRKÇE KARAKTER PROBLEMİNİ ÇÖZMEK Özellikle dışarıdan alınan tablolarda zaman zaman Türkçe karakterlerinin bozuk geldiği görülebilir. Bu karakterleri kalıcı olarak (veri tabanı üzerinde) düzeltmek için aşağıdaki adımlar izlenmelidir. 1- İlgili veri tabanı üzerindeyken “new query” penceresi açılır ve aşağıdaki function (alt program) past edilir. CREATE FUNCTION Turkceye (@girdi NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @sonuc NVARCHAR(MAX) SET @sonuc = @girdi SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'ğ'); SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'Ğ'); SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN, N'Ð', N'Ğ'); SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ý', N'ı'); SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Ý', N'İ'); SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'þ', N'ş'); SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Þ', N'Ş'); RETURN @sonuc COLLATE Turkish_CI_AS ; END Execute edilir ve veri tabanı refresh edilir 2- Veri tabanı içindeki nesnelerden, Programmability-Fuctions-Scalar Valued Funtion seçeneği altında bu function ı görmeniz gerekiyor. 3- Son işlem olarak artık veri bozukluğu olan alanları bu function la update edebilirsiniz. Örnek: UPDATE SAYISTAY_YEVMIYE2 SET hes_ad=dbo.Turkceye(SAYISTAY_YEVMIYE2.hes_ad) Gülcay KORKMAZ Yazılım Uzmanı & BT Eğitmeni Web : http://www.egitimde-bilisim.com 16