15
FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR SİSTEMLERİ LABORATUVARI- DENEY NO:3 1 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 Serverin 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:

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

  • Upload
    vominh

  • View
    222

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

FIRAT ÜNİVERSİTESİ

BİLGİSAYAR MÜHENDİSLİĞİ

BİLGİSAYAR SİSTEMLERİ LABORATUVARI-

DENEY NO:3

1

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:

Page 2: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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’

Page 3: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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

-------------------------------------------

Page 4: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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(şartlar)

BEGIN

Kodlar

…….

END

ELSE

BEGIN

……

END

IF(SELECT MAX(Fiyat) FROM Urun)>=20000

BEGIN

PRINT ‘pahallı ürünler var’

END

ELSE

BEGIN

PRINT ‘Pahallı ürün yok’

END

IF NOT EXISTS(SELECT * FROM urun)

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

WHEN şart THEN değer

[ELSE değer]

END

SELECT Fiyat, urunAdi, Durum=

CASE

WHEN Fiyat>100 THEN ‘PAHALLI’

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

BEGIN

Tekrarlanacak kodlar

END

DECLARE @sayac INT

SELECT @sayac=1

WHILE(@sayac<15)

SELECT @sayac=@sayac+1

Page 5: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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.

Page 6: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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)

Page 7: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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.

Page 8: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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ı

Page 9: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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.

Page 10: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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.

Page 11: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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ı

Page 12: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

Ö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.

Page 13: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

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:

Page 14: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

Ö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.

Page 15: FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ ...bil.muh.firat.edu.tr/sites/bil.muh.firat.edu.tr/files...Diyelim ki sadece Öğrenci Adı ve Soyadı bilgilerini içeren bir

Ö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.