FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR SİSTEMLERİ LABORATUVARIDENEY NO:3 CLIENT SERVER ORTAMINDA VERİTABANI KULLANIMI Arş. Gör. Ertan BÜTÜN ÖNEMLİ: Deney föyünde deneyle ilgili genel bilgiler verilmiştir. Deneye hazırlanırken deney föyü ile yetinilmemelidir. Son kısımda verilen uygulama konularına iyice hazırlanılmalıdır. DENEY SONLANDIRMA TARİHLERİ: I.Öğretim A ve B grubu 10 Kasım Pazar 9:00 II.Öğretim A ve B grubu 16 Kasım C.tesi 8:00 SQL (STRUCTURED QUERY LANGUAGE)’E GİRİŞ İlişkisel veritabanı modeli 1970’i yıllarda Dr. Edgar F. Codd tarafından geliştirilmiştir. IBM ve Dr. Codd çalışmaları sonucunda SQL (Structure Query Language – Yapısal Sorgulama Dili) ortaya çıkmıştır. SQL bugün ilişkisel veritabanı sistemlerinde bir standart haline gelmiştir. Bugün internet ortamında program geliştirmek için kullanacağınız ASP, JSP, PHP, ASP.NET ve Java gibi dillerle veritabanı işlemleri yapacak olursanız SQL kullanmanız gerekecektir. SQL veriye erişmenin ve sorgulamanın en hızlı yoludur. SQL geliştirildiği 1970’li yıllardan günümüze gelene kadar birçok değişikliğe uğramıştır. SQL dilinde bir standardizasyona gidilmesi için ISO ( International Standard Organization) çalışma başlatmış ve en son SQL-92, ANSI SQL veya SQL 2 diye adlandırılan standart kabul edilmiştir. ANSI SQL, C, Basic, Pascal gibi dillerde gördüğünüz döngü ifadelerine ve şart yapılarına sahip değildir. Bu yüzden SQL’ e bir programlama dili diyemeyiz. Fakat bazı firmalar ANSI SQL’e bağlı kalarak bir kısım eklemeler yapmış ve SQL’i kendilerine göre değiştirmişlerdir. Örneğin Microsoft SQL Server’in Transaction SQL (TSQL) dili döngü yapılarına ve şart ifadelerine de sahiptir. TSQL KOMUTLARI TSQL veritabanı ile ilgili tanımlamalarda bulunmak, verilere erişip onları yönetmek ve veriye erişimi kontrol etmek için ayarlamalarda bulunmak üzere ifadeler içerir. Bu ifadeler için aşağıdaki tablo göz önüne alınmıştır. URUN TABLOSU UrunID UrunAdi Fiyati Stok_adedi Eklenme_tarihi EC200 Klavye 100 10 01.10.2010 BE121 Buzdolabı 1.000 32 12.03.2009 EL358 Telefon 535 45 28.03.2010 TSQL deyimleri üç aşağıdaki üç grupta incelenebilir: 1 Veri Tanımlama Dili: Nesne oluşturma, silme ve nesneler üzerinde değişiklik yapma (CREATE, ALTER ve DROP). Nesne oluşturmak: CREATE CREATE deyimi ile veritabanındaki nesnelerden herhangi biri oluşturulabilir. Kullanımı: CREATE nesne_tipi nesne_adi [varsa_nesneye_ait_tanimlamalar] Veritabanı oluşturma Tablo oluşturma Create database bslab Use bslab; Create table urun( UrunID varchar(10) not null, UrunAdi varchar(20), Fiyati int, Stok_adedi int, Eklenme_tarihi Datetime, Primary key(UrunID)) Nesnelerde Değişiklik Yapma: ALTER Genel kullanımı: ALTER nesne_tipi nesne_adi degisiklik_ifadesi USE bslab Go ALTER TABLE urun ALTER COLUMN UrunAdi varchar(40) NOT NULL Nesne Silmek: DROP Genel Kullanımı: DROP nesne_tipi nesne_adi DROP TABLE urun Veri İşleme Dili: Veri ekleme, silme, seçim ve güncelleme işlemleri (INSERT, DELETE, SELECT ve UPDATE) Veri Eklemek: INSERT Genel Kullanımı: INSERT INTO tablo_adi(sutun1 [,sutun2,…]) VALUES(deger1 [, deger2,….]) Örnek: use bslab go insert into Urun(UrunID,UrunAdi,Fiyati,Stok_adedi,Eklenme_tarihi) values(‘BL300’,’Bilgisayar’,1250,10,’01.15.2010’) Veri Silmek:DELETE Genel Kullanımı: DELETE FROM tablo_adi WHERE şart_ifadesi Örnek: DELETE FROM Urun where UrunID=’BL300’ Veri Güncellemek: UPDATE Genel Kullanımı: UPDATE tablo_adi SET alan1=deger1, alan2=deger2 where şart_ifadesi Örnek: UPDATE Urun SET Fiyati=1500 WHERE UrunID=’BL300’ Veri Seçimi ve Filtreleme: SELECT sutun_adi1 [, sutun_adi2,…]|* FROM tablo_adi WHERE şart Tüm alanları seçmek için SELECT * FROM Urun Sadece Urunadi ve fiyatlarini göstermek için SELECT UrunAdi, Fiyati FROM Urun Fiyatı 500’den büyük olan ürünleri göstermek içinSELECT * FROM Urun where Fiyati>500 Urun adi Bilgisayar olan ürünleri göstermek içinSELECT UrunAdi, Stokadedi FROM Urun WHERE UrunAdi=’Bilgisayar’ Sonucu sıralı olarak göstermek için SELECT * FROM Urun WHERE Fiyati>50 ORDER BY Fiyati ASC Buradaki ASC sözcüğü Ascend yani artan şekilde harf için A’dan Z’ye rakam için küçükten büyüğe doğru sıralama anlamındadır. DESC sözcüğü ise bu işlemin tersini yapar. Eğer Fiyatı 1000 ile 2000 arasındaki ürünleri listelemek isteseydik BETWEEN sözcüğün kullanmamız gerekirdi. SELECT * FROM Urun WHERE Fiyati BETWEEN 1000 AND 2000 Gruplama fonksiyonları: SUM, AVG, MAX, MIN, COUNT Ürünlerin toplam fiyatını bulmak için SELECT SUM(Fiyati) FROM urun Kayıt sayısını bulmak içinSELECT count(*) FROM Urun Veri Kontrol Dili: Kullanıcılar ile ilgili yetki ve izinlerin kontrolü Yetki Verme: GRANT Genel Kullanımı: GRANT {ALL|izinler} ON {izinebaglanabilenler} TO {hesaplar} Örnek: GRANT CREATE TABLE TO Ahmet komutu ile Ahmet kullanıcısı için tablo oluşturma yetkisi verilir. Erişimi Engellemek: DENY Genel Kullanımı: DENY {ALL|izinler} TO {Kullanıcılar} Örnek: DENY SELECT ON bslab TO Ahmet komutu ile bslab tablosu üzerinde Ahmet kullanıcısının SELECT komutunu çalıştırmasını engelliyoruz. Erişim Tanımını Kaldırmak: REVOKE Genel Kullanımı: REVOKE {ALL|izinler} {TO|FROM} {hesaplar} Örnek: REVOKE ALL TO public örneği ile public rolüne verilen bütün yetkileri kaldırırız. TSQL’İN PROGRAMLAMA YETENEKLERİ Değişken Tanımlama: TSQL’de değişkenler tanımlanıp sorgulardan elde edilen sonuçlar bu değişkenlerde tutulabilir. Bir değişken aşağıdaki şekilde tanımlanabilir. DECLARE @degisken_adi veritipi [(boyut)] Örnek: DECLARE @pahaliurunadi VARCHAR(20); Değişkenlere değer atamak için SET veya SELECT ifadesi kullanılır. İki ifadenin kullanımı ile ilgili örnek aşağıda verilmiştir: Örnek: SET @pahaliurunadi=’LCD TV’ DECLARE @yuksekfiyat MONEY ------------------------------------------- SELECT @yuksekfiyat=MAX(Fiyat) FROM bslab SELECT @yuksekfiyat Print Komutu: TSQL ile kod yazarken bazen hata mesajları ve değişken değerlerini mesaj olarak göstermek için kullanılır. Örnek: DECLARE @sonuc MONEY SELECT @sonuc=SUM(Fiyat) from urun PRINT CAST(@sonuc as VARCHAR(10)) Akış Kontrolleri: TSQL’de akış kontrolleri BEGIN… END blokları arasına yazılır. IF karar yapısı, Case deyimi, While döngüsü ve break ile continue deyimleri TSQL’de kullanılmaktadır. IF Karar Yapısı: Kullanımı Örnekler IF … ELSE Karar yapısı IF(SELECT MAX(Fiyat) FROM Urun)>=20000 IF(şartlar) BEGIN BEGIN PRINT ‘pahallı ürünler var’ Kodlar END ……. ELSE END BEGIN ELSE PRINT ‘Pahallı ürün yok’ BEGIN END …… IF NOT EXISTS(SELECT * FROM urun) END PRINT ’Stokta ürün yok’ CASE Deyimi: Kısa kodlar ile birçok duruma dallanan akış yapılarını kodlamakta kullanılır. Kullanımı Örnek CASE SELECT Fiyat, urunAdi, Durum= WHEN şart THEN değer CASE [ELSE değer] WHEN Fiyat>100 THEN ‘PAHALLI’ END WHEN Fiyat<100 AND Fiyat>50 THEN ‘ORTA’ ELSE ‘UCUZ’ FROM Urun While Döngüsü ve Break Continue deyimleri: While ile bir işlemi istediğimiz kadar tekrarlatabiliriz. Break ve Continue deyimleri döngüyü kesme veya sonraki adımdan devam ettirmede kullanılır. Kullanımı Örnek WHILE şart DECLARE @sayac INT BEGIN SELECT @sayac=1 Tekrarlanacak kodlar WHILE(@sayac<15) END SELECT @sayac=@sayac+1 SELECT ‘sayac=’, @sayac İLİŞKİSEL VERİTABANI TASARIMI Herhangi bir veritabanı sistemi tasarlanırken veriler farklı ilişkisel tablolarda tutularak hem veritabanı boyutunun aşırı artması engellenir hem de veri bütünlüğü sağlanır. Tabloları birlikte sorgulamak, normalizasyon gibi ilişkisel veritabanının temelini oluşturur. TSQL’de üç çeşit birleştirmeden (JOIN) bahsedilebilir. Bunlar aşağıda verilmiştir. JOIN türü Açıklama INNER JOIN İki tablo birlikte sorgulanırken, her iki tabloda da sadece uyuşan kayıtlar sonuçta gösterilir. OUTER JOIN İki tablo birlikte sorgulanırken, tablolardan herhangi birinde veya sadece birinde yer alan kayıtları sorgulamak için kullanılır. LEFT, RIGHT ve FULL olmak üzere üç alt türden oluşur. CROSS JOIN İki tablonun Kartezyen çarpımını bulmak için kullanılır. Tablolar arasındaki ilişkileri belirlemek için diyagramlar kullanılır. Diyagramlar görsel ortamda tablolar arasında ilişki kullanmayı sağlar. Daha önce Microsoft Access ile tablolar arasında ilişkiler tanımladıysanız bu nesneyi rahatlıkla kullanabilirsiniz. Sonradan tablo alanları üzerinde yaptığınız değişiklikler otomatikman bu diyagramlara yansıtılır. Aşağıda örnek bir veritabanı diyagramı verilmiştir. Veritabanı diyagramı şu şekilde oluşturulur: 1. SQL Server Managament Studio ‘da ilgili veritabanı içerisinde Database diagrams’a sağ tıklanır. 2. New Database Diagram seçeneği seçilir. 3. İlişkili olacak tablolar Add Table penceresinden eklenir. 4. Hangi alanlar arasında ilişki kurulacaksa bir alan üzerinden diğerine doğru sol Mouse tuşu sürüklenerek bırakılır. 5. Birleştirme türü (Primary Key-Foreign Key) belirlenir ve diyagram kaydedilir. Diyagram oluşturmak ilişkisel veritabanlarında veri bütünlüğünü sağlar. Örneğin kullanıcı veritabanında olmayan bir ürün hakkında yorum yazamaz. INNER JOIN işlemi en çok kullanılan birleştirme işlemidir. İki tablo arasında birleştirme yaparken, tablolardan her ikisinde de yer alan değerler seçilir, tablolardan sadece birinde yer alan Genel kullanımı aşağıdaki gibidir. … FROM tablo1 [INNER] JOIN tablo2 ON tablo1.alan1 karsilastirma_isareti tablo2.alan2; Karşılaştırmadan kasıt genellikle “=” işaretidir. Örnek: SELECT U. UrunKod, U. UrunAd, U.Fiyat, M. Umarka from Urun U INNER JOIN marka M ON U.markakod=M.markakod Yukarıdaki sorgu ile Marka ve Urun tabloları markakod alanaları üzerinden birleştirilmiştir. OUTER JOIN işlemi, aynı anda her iki tabloda da yer almayan kayıtlardan tek tablodakileri veya her iki tablodakileri de diğer sütunları NULL olmak üzere sonuçta gösterebilmek için kullanılır. Genel kullanımı şu şekildedir: …. FROM tablo1 JOIN_TIPI OUTER JOIN tablo2 ON tablo1.alan1=tablo2.alan2 Burada JOIN_TIPI LEFT, RIGHT veya FULL olabilir. LEFT JOIN’de soldaki tabloda yer alan kayıtlar, sağdaki tabloda karşılıkları olmasa bile getirilirler. Tam tersi durum RIGHT JOIN’de geçerlidir. FULL JOIN’de ise her iki tabloda karşılıklı olarak eşit satırı olmayan kayıtlar da getirilir. FULL JOIN’de ise her iki tablodaki karşılıklı olarak eşit olmayan kayıtlar getirilir. Genel kullanımı aşağıdaki gibidir: ….. FROM tablo1 {LEFT|RIGHT|FULL} [OUTER] JOIN tablo2 ON tablo1.alan1=tablo2.alan2 Örneğin müşterilerden sipariş verenlerin fatura kodlarını ve isimlerini, sipariş vermeyenlerin ise sadece isimlerini göstermek için; SELECT faturakod, isim+’ ’+soyad as ad FROM Kullanici K LEFT JOIN siparis S ON K.kullanicikod=S.kullanicikod CROSS JOIN ise her iki tabloda yer alan kayıtları çaprazlamak için kullanılır. Genel kullanımı …. FROM tablo1 CROSS JOIN tablo2 Saklı Yordamlar (Stored Procedures) Veritabanında saklanabilen ön derlemesi yapılmış Transact SQL deyimlerdir. Stored Procedurlar daha önce derlendiği için hızlı çalışırlar. Uygulamalar tarafından stored procedurlara erişerek kullanabilirsiniz. Örneğin bir Stored Procedure oluşturup; Java ile bu Stored Procedure erişip kullanabilirsiniz. Java, C#, Visual Basic gibi diller ile yazılan çok kullanıcı veritabanı programları stored procedure’leri oldukça yoğun kullanmaktadır. Genel kullanım şekli aşağıdaki gibidir: CREATE PROC[EDURE] prosedur_adi( @parametre_adi veri_tipi [=varsayılan değeri] --Giriş parametreleri ... ) AS TSQL deyimleri GO Stored procedur’ü çalıştırmak için ise aşağıdaki şekilde yapılabilir. EXEC prosedur_ismi @parametre_ismi=deger [,…=….] veya EXEC prosedur_ismi parametre_degeri [,…] Aşağıda urun_ara isimli bir Stored Procedure oluşturulmaktadır. CREATE PROC urun_ara @urunID varchar(20) AS SELECT UrunAd, Fiyat, Adet FROM urun WHERE Urun.UrunKod=@urunID GO Bu procedure’nin çalıştırılması için EXEC urun_ara ‘BL300’ veya EXEC urun_ara @UrunID=‘BL300’ yazılmalıdır. Burada UrunUD’si parametre olarak geçirilmiş ve ürün bilgileri listelenmiştir. Tetiklemeler(Triggers) Tetiklemeler de bir store procedure’dir. Fakat bir farkı tetiklemeler otomatik çalışırlar. Ancak UPDATE, INSERT, ve DELETE deyimlerini kullanarak bir tetikleme otomatik olarak başlatabilirsiniz. Genel kullanımı aşağıdaki gibidir: CREATE TRIGGER tirger_adi ON tablo_adi {FOR|AFTER|INSTEAD OF} {INSERT|UPDATE|DELETE} AS Otomatik_çalışacak TSQL ifadeleri GO Örneğin stoktan çıkan bir malın, fatura tablosundan da düşülmesi işlemini bir tetikleme oluşturarak yapabilirsiniz. Tablodan bir stok kartı silinecekse ve bu stok kartının stok hareketleri varsa DELETE işlemi ile ilgili bir tetikleme oluşturarak hareket gören stoğun silinmesini önleyebilirsiniz. CREATE TRIGGER tetik01 dbo.STOK FOR DELETE AS Declare @ STOKKOD varchar(15), @STOKSAYI int SELECT @ STOKKOD=HRK.STOKKOD,@STOKSAYI=HRK.STOKSAYI from deleted HRK update FATURA set miktar=miktar+@STOKSAYI WHERE skod=@STOKKOD GO View (Görünüm) Oluşturmak Viewlerde tablolara erişmenin bir yoludur. Viewler sayesinde çok kolonlu bir tablonun sadece belli kolonları listelenebilir ve kolonlar üzerinde hesaplamalar yaptırabilirsiniz. Örneğin tablonuzda diğer iki kolonun çarpımı olan yeni bir kolonu view ile rahatlıkla oluşturabilirsiniz. Gerçek tabloyla hiç ilişkisi olmayan tablolar oluşturup kullanıcıların bu tablo üzerinde işlem yapmasını sağlayabilirsiniz. Birden fazla tabloyu bir view ile birleştirebilirsiniz. Bu özellikle ilişkisel bir yapı kurduğunuzda oldukça yararlı olmaktadır. Şimdi adı ‘Bilgisayar’ olan ürünlerin listesini veren bir view oluşturalım. create view deneme as SELECT TOP (100) PERCENT UrunKod, UrunAd FROM dbo.Urun WHERE (UrunAd = 'Bilgisdayar') ORDER BY UrunAd CREATE VVIEW deyiminin CHECK ve WITH ENCRYPTION adında iki parametresi daha vardır. CHECK ile veri değişikliklerini kontrol edebilir, WITH ENCRYTION ile oluşturulan görünüm metnini şifrelenmesi işlemini yapabilirsiniz. CREATE personel_zam_view WİTH ENCRYTION AS SELECT Adı, Kademesi, Gorevi, Maasi*1.2 FROM Personel WHERE Kademesi=2 Yukarıda Personel tablosunda yer alan ve kademesi 2 olan memurların maaşlarına %20 zam yaptık ve bu metni SQL serverin syscomment tablosuna şifrelenmiş olarak kaydetmiş olduk. Viewlerle güvenlik işlemini daha kolay sağlayabiliriz. Kullanıcılara view üzerinde izinler verdiğiniz zaman; onlara gerçek tablo üzerinde izin vermemiş oluyorsunuz. Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir view oluşturup, Öğrencilerin özel bilgilerini içermeyen bu tabloyu kullanıcılara açabilirsiniz SQL Server Uzak Bağlantı(Remote Connection) Uzaktan Bağlantı için Yapılması Gerekenler 1 - SQL Server Instance' ınızın ilgili protokolünün yapılandırılması, 2 - Eğer varsa ve etkinse, Windows Güvenlik Duvarının yapılandırılması 3 - SQL Server' ınıza bağlanabilmeniz için kullanacağınız Login. SQL Server Instance' ınız için hangi protokolü kullanacağınızı belirledikten sonra, bu protokolün yapılandırmasını gerçekleştirirsiniz. SQL Server protokollerinin yapılandırılması işlemleri için SQL Server ile birlikte gelen SQL Server Configuration Manager' ı kullanabilirsiniz. (Başlat\Programlar\Microsoft SQL Server (Sürüm)\Configuration Tools) TCP/IP protokolünü etkinleştirmek veya etkin olduğundan emin olmak için, Şekil' de de gösterildiği gibi Protocol Name alanındaki TCP/IP protokolünün Status değerine bakabilirsiniz. "Enabled" etkin olduğu anlamına gelir, "Disabled" ise etkin değil demektir. Bu değeri değiştirmek için TCP/IP protokolünün üzerinde fare ile çift tıklayın veya TCP/IP protokolünün üzerinde farenin sağ tuşuna tıklayarak, açılan menüden "Properties" seçeneğine tıklayarak "TCP/IP Properties" penceresini açın. "Protocol" sekmesindeki "Listen All", bilgisayara bağlı tüm Ağ Kartlarının (Örn: Ethernet) IP adreslerinin SQL Server tarafından dinlenip dinlenmeyeceğini belirler. Eğer bu seçeneğin değeri "No" yapılırsa, "IP Addresses" sekmesindeki her IP adresini tek tek yapılandırmanız gerekir ve tekrar aynı sekmede bulunan "IPAll" seçeneklerinin herhangi bir geçerliliği kalmaz. Eğer değeri "Yes" yaparsanız, o zaman gene "IP Addresses" sekmesindeki "IPAll" seçenekleri etkinleşir ve diğer tüm IP adreslerine uygulanır. TCP/IP protokolünün IP adresi veya Port ayarlarını yapılandırmak için, gene "TCP/IP Properties" penceresinde bulunan "IP Addresses" isimli sekmeye tıklayın. Bu listede her Ağ Adaptörünüz için bir IP ayar bölümü listelenecektir. Hangisinin etkinleştirilmesini istiyorsanız, onun "Active" ve "Enabled" ayarlarının karşısındaki değerleri "Yes" durumuna getirin. "Active", o IP adresinin dinleneceğini belirtir. "Enabled" ise o IP adresinin kullanılıp kullanılmayacağını. "IP Address" bölümde ise IPv4 veya IPv6 değeri yer alır. Eğer "TCP Dynamic Ports" etiketinin değeri "0" ise, bunun anlamı bu IP adresi için kullanılacak portun dinamik bir şekilde belirleneceğidir. Bu durumda SQL Server, bu IP adresi için müsait olan bir port numarası atayacaktır. Eğer Windows Xp SP2 ve daha üstü bir sürüm kullanıyorsanız Windows güvenlik duvarına SQL Server’ı eklemeniz gerekir. SQL Server' da Authentication Mode (Yetkilendirme Modu) olarak iki adet seçeneğimiz bulunuyor. Birisi Windows Authentication, diğeri ise SQL Authentication (veya Mixed Authentication).Windows Authentication' ı sadece güvenilir ortamlarda kullanabilirsiniz. SQL kullanıcısı olarak SQL Server’a bağlanabilmek için ise SQL Server Management Studio ortamında SQL Server’ınıza sağ tıklayıp Properties seçeneğinden Security sekmesini seçtiğinizde aşağıdaki ekran karşınız gelir. Security sekmesinden SQL Server and Windows Authentication Mode seçildiğinde SQL Server kullanıcısı olarak SQL server’a bağlanılabilir. Uygulama Sınavı İçin Tedarik Edilmesi Gerekenler Her grup Bilgisayar Sistem Laboratuvarında kendilerine belirlenmiş bilgisayarlara ya da her öğrenci kendi kişisel bilgisayarına görsel programlama dili için Microsoft Visual Studio 2012,2010 veya 2008 ya da Netbeans, SQL Server için MS SQL 2012 veya 2008 kuracak. http://northwinddatabase.codeplex.com/ adresindeki Northwind veritabanının yedeği indirilip SQL Server’de restore edilecek. (Sınavda bu veritabanındaki tablolarla ilgili sorgular olabilir.) Uygulama Konuları 1. SQL Server’e ASP.NET veya JSP dillerinden biri ile bağlanma. Veritabanından veri çekip gösterme, veri kaydetme, güncelleme ve silme işlemleri, Stored Procedure ve Trigger kullanımı Örnek Soru: SQL Server’da bir veritabanı oluşturarak içinde en az üç adet ilişkisel tablo oluşturunuz. Bu tablolar ile ilgili ilişkisel şemayı(diyagramı) SQL Server’de oluşturunuz. Bu tablolara kayıtlar ekleyip güncelleyen Stored Procedure’ler oluşturup ASP.NET veya JSP dilinde bunları çağırınız. Örnek Soru: ASP.Net veya JSP’de bir web sayfası oluşturun. Bu sayfaya başlangıç ve bitiş tarihlerinin girileceği iki alan ve bir buton yerleştirin. Northwind veritabanında verilen iki tarih arasında alış veriş yapan müşterilerin bilgilerini getiren stored procedure yazınız. Oluşturulan web sayfasında girilen tarihleri alıp stored procedure’yi çalıştırıp gelen verileri sayfada gösteriniz. Örnek Soru: ASP.Net veya JSP’de Northwind veritabanında Products tablosundaki ürünleri listeleyen bir web sayfası oluşturun.Ürüne tıklanıldığında üsürünün detaylarını gösteren ayrı bir sayfa oluşturun. Bu sayfaya adet bilgisini girildiği bir alan ve siparişi bitir diye bir button ekleyin. Butona tıklanıldığında adet ve satın alınan ürünü ilgili tablolara kaydedin. Örnek Soru: Northwind veritabanında bir alış veriş olduğu zaman alınan ürünün miktarı kadar ürün tablosundaki ilgili ürünün stok sayısını azaltan trigger’i yazınız. 2. Veritabanında karmaşık SELECT sorguları, içe içe (alt) SELECT sorguları (subqueries), Örnek Soru: Yukarıdaki tablolara göre Kemal Sunal’ın oynadığı filmleri getiren sorguyu yazınız. Türü komedi olan sinemaların adlarını ve IMDB Puanlarını listeleyen sorguyu yazınız. Örnek Soru: Northwind veritabanında Suppliers (Tedarikçi) tablosundan ‘Shelley Burke’ tedarikçisinin ürünlerinden alışveriş yapmış müşterileri listeleyiniz. 3. Group By, Having, Order By, Count, Sum, In, Exist, Between, Distinct, Inner Join, Left Outer Join, Right Outer Join IF, CASE, While, Cursor komutlarının kullanımı, Örnek Soru: Nortwind veritabanında USA’deki her bir müşterinin (customer) yapmış olduğu siparişlerin (order) toplam sayısı ve siparişlerde alınan ürünlerin toplam sayısını listeleyen sorguyu yazınız. Bu sorgu için kullanılacak tablolar: Customers, Orders, Order Details Yazdığnız sorgu şu listeyi getirmeli. Örnek Soru: Northwind veritabanında sipariş (orders) yapmayan müşterileri (customers) listeleyiniz. Yazdığınız sorgu şu listeyi getirmeli: Örnek Soru: Northwind veritabanında Products tablosundaki ürünlerin adlarını fiyatlarını ve stokta olanlar için stok sayısını olmayanlar için ‘Stokta yok’ ifadesini gösteren sorguyu yazınız. Yazdığınız sorgu şu tabloyu döndürmeli: Örnek Soru: Northwind veri tabanında tedarikçileri ve tedarikçilerin ürünlerini cursor kullanarak aşağıdaki gibi yazdırın: 4. SQL Management Studio kullanarak yedek (backup) alma ve restore etme, T-SQL komutları kullanarak backup alma ve restore etme, differential ve full backup alma, Örnek Soru: Hem SQL Management Studio hem de T-SQL komutları ile Northwind veritabanının yedeğini alıp bu veritabanını başka bir isimde restore ediniz. Örnek Soru: Northwind veritabanın yedeğini her hafta Pazar gece 2:00’da alan işlemi SQL Server’de yapınız. (Not: SQL’in Express sürümü yüklü ise bakcup alan bir script yazılır. Bu script’i sqlcmd komutu ile çağıran bir batch dosya oluşturulur. Windows’un görev zamanlayıcısından bu batch dosyası görev olarak eklenir, ne zaman çalıştırılacağı belirlenir.) 5. SQL Server’de güvenlik yönetimi, Windows Autentication, SQL Server Autentication, Login, User, Veritabanını farklı kullanıcılara farklı şekillerde yetkilendirme, Örnek Soru: SQL Server’de Windows Autentication, SQL Server Autentication, Login ve User nedir ne amaçla kullanılır. Örnek Soru: Nortwind veritabanı için iki kullanıcı oluşturun. Bu kullanıcılardan birinin yetkileri full olsun, diğerinin ise sadece veri okuma yetkisi olsun. Örnek Soru: Nortwind veritabanında Employee tablosundaki bilgileri çeken bir stored procedure oluşturun. Yeni bir user oluşturun bu user Nortwind veri tabanında sadece bu stored procedure’yi çalıştırabilsin bunu dışında veri tabanı ile ilgili hiçbir şey göremesin. 6. SQL Server’de coğrafik (GEOGRAPHY) ve geometrik (GEOMETRY) veri tipleri kullanımı, coğrafik sorgu kullanımı (coğrafik sorgular için coğrafik verilerle ilgili metotlar (STDistance, STIntersect, …) bilinmelidir. Bu metotlarla ilgili yardımcı doküman bulundurulabilir.) Örnek Soru: Bir kargo şirketinin şubeleri için şu şekilde bir tablo oluşturun Subeler(SubeId (int), SubeAd (nvarchar(30)), SubeKoordinat (geography)). Verilen bir noktaya en yakın şubeyi döndüren stored procedure’yi yazınız. (Not: STDistance metodu bir noktanın bir noktaya uzaklığını döndürmektedir.) 7. SQL Server’de Kilitlenmeyi izleme (Deadlock monitor), Kilitlenme yönetimi Örnek Soru: SQL Server’de bir kilitlenme(deadlock) örneği yapınız ve bu kilitlenme SQL Server’de nasıl izlenilir gösteriniz. 8. Rollback kullanımı Örnek Soru: Northwind veritabanında bir alışveriş için Orders ve Order Details tablosuna eklenen kayıtları geri alan rollback programını yazınız.