fırat üniversitesi bilgisayar mühendisliği bilgisayar sistemleri

advertisement
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çinSELECT * FROM Urun where Fiyati>500
Urun adi Bilgisayar olan ürünleri göstermek içinSELECT 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çinSELECT 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.
Download