555
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
-->
</style>
</head>
<body>
<p class="style1">--CONSTRAINT LER(KISITLAYICILAR)<br />
--Veri üzerindeki mantıksal sınırlamalara kısıt denir. Eğer tablolarda sütunlar üzerinde kısıtlama uygulanacaksa gerekli constraint türü kullanılarak işlem gerçekleştirilir.</p>
<p class="style1">-- Constraint Türleri<br />
--1. Primary Key Constraint<br />
--Birincil anahtar kısıtlamasıdır. Aynı olmayan değerler girilmesini sağlar. Her tablonun en fazla 1 adet Primary Key Constraint tanımlanabilir.</p>
<p class="style1">--Tablo tasarım aşamasında birincil anahtar tanımlanmış olması gerekir. <br />
Örnek:<br />
CREATE TABLE OKUL(<br />
OgrNo int,<br />
Adi varchar(15),<br />
Soyadi varchar(20),<br />
Sinifi varchar(10),<br />
TcKimlikNo varchar(11),<br />
CONSTRAINT PKC_OgrNo PRIMARY KEY (OgrNo)<br />
)<br />
--Eğer tablo oluşturulması esnasında Primary Key oluşturulmamışsa daha sonra Primary Key Constraint şu şekilde oluşturulur. <br />
ALTER TABLE OKUL<br />
ADD CONSTRAINT PKC_OgrNo PRIMARY KEY(OgrNo)</p>
<p class="style1">--2. Unique Constraint<br />
--Alan içerisine aynı bilginin birden fazla girilmesini engelleyen kısıtlayıcıdır. Daha önce oluşturulmuş bir tabloya unique constraint şu şekilde eklenir:<br />
ALTER TABLE Okul<br />
ADD CONSTRAINT UC_TcKimlik UNIQUE (TcKimlikNo)</p>
<p class="style1">--3. Default Constraint<br />
--Bir tabloya veri girişi esnasında alan için varsayılan bir değer atamayı sağlar.<br />
--Daha önce oluşturulmuş bir tabloya Default Constraint şu şekilde eklenir.<br />
ALTER TABLE Okul<br />
ADD CONSTRAINT DC_Sinif Default 11 For Sinifi</p>
<p class="style1">--4.Check Constraint<br />
--Belirtilen alana istenilen şarta göre değer girilmesini sağlar.<br />
--Örneğin, Okul tablosundaki OgrNo alanına 0 dan büyük bir değer girilmesi şartı uygulayalım.</p>
<p class="style1">ALTER TABLE Okul<br />
ADD CONSTRAINT CK_OgrNo CHECK(OgrNo>0)</p>
<p class="style1">--Örnek: Urunler tablosunda CikisTarihi alanına girilen tarih değeri ya boş olmalı ya da GirisTarihi alanına girilen değerden sonra olmalı.<br />
CREATE TABLE Urunler(<br />
UrunNo int,<br />
UrunAdi varchar(10),<br />
GirisTarihi datetime,<br />
CikisTarihi datetime,<br />
CONSTRAINT chk CHECK(CikisTarihi is null or CikisTarihi>=GirisTarihi)<br />
)</p>
<p class="style1">--5. Foreign Key Constraint<br />
--Foreign Key : Bir tablodaki bir alan başka bir tabloda birincil anahtar ise bu alan Foreign Key olarak tanımlanır.<br />
--Tablodaki bir alan Foreign Key olarak tanımlanmışsa, bu, verisini birincil anahtar olduğu diğer tablodan alıyor demektir. Birincil anahtar olarak tanımlandığı tablodaki kaydın silinebilmesi için ona bağlı olan diğer tablodaki kaydının silinmesi gerekir.</p>
<p class="style1">Örnek:</p>
<p class="style1">CREATE TABLE SinifBilgi(<br />
OgrNo int,<br />
AnneAdi varchar(10),<br />
BabaAdi varchar(10),<br />
CONSTRAINT FK_Sinif Foreign Key(OgrNo)<br />
References Okul(OgrNo)<br />
)<br />
</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"><strong>CONSTRAINTLER(KISITLAYICILAR)</strong></p>
<p class="style1">Veri üzerindeki mantıksal sınırlamalara <strong>kısıt </strong>adı verilir.</p>
<p class="style1"><strong>Constraint Türleri</strong></p>
<p class="style1"><strong>1. Primary Key Constraint</strong><br />
Birincil anahtar kısıtlayıcı anlamındadır. Aynı olmayan değerler girilmesini sağlar. Bu da her kaydın farklı olması demektir. Her tablonun en fazla 1 adet Primary Key Constraint’i olabilir.</p>
<p class="style1">Tablo tasarım aşamasında bir birincil anahtarınız tanımlanmış olması gerekir. Bir tabloda sadece 1 adet Primary Key Constraint tanımlanabilir.</p>
<p class="style1">CREATE TABLE Okul (<br />
OgrNo int,<br />
Adi VARCHAR (15),<br />
Soyadi VARCHAR (20),<br />
Sinifi VARCHAR(10),<br />
TcKimlikNo VARCHAR (11),<br />
CONSTRAINT PKC_OgrNo PRIMARY KEY (OgrNo)<br />
)</p>
<p class="style1"><strong>2. Unique Constraint</strong><br />
Tekil alan kısıtlayıcı anlamındadır. Birincil anahtar olan ve tablodaki diğer alanlar içinde aynı içeriğe sahip verilerin olmaması için Unique Constraint tanımlanır. T.C.Kimlik Nu. primary key ve Okul Nu. Unique şeklinde bir tanımlama Unique Constraint’e bir örnektir.</p>
<p class="style1">Daha önceden oluşturulmuş bir tablo için Unique Key Constraint tanımı şöyledir.</p>
<p class="style1">ALTER TABLE Okul<br />
ADD CONSTRAINT UC_TcKimlikNo UNIQUE (TcKimlikNo)</p>
<p class="style1"><strong>3. Default Constraint</strong><br />
Bir tabloya veri girişi esnasında o alanın alacağı varsayılan bir değerin tanımlanması için kullanılan kısıtlayıcıdır. </p>
<p class="style1">Tablonun ilk oluşturulması esnasında genel kullanımı şöyledir.</p>
<p class="style1">CREATE TABLE Tabloadi (<br />
Sütunadi,<br />
Sütunadi,<br />
CONSTRAINT Constraint_Adi DEFAULT (Sütunadi)<br />
)</p>
<p class="style1"><strong>Örnek</strong><br />
ALTER TABLE Okul<br />
ADD CONSTRAINT DC_Sinif DEFAULT 10 FOR Sinif</p>
<p class="style1"><strong>4.</strong> <strong>Check Constraint</strong><br />
Tabloda belirtilen bir sütuna istenilen şartlara göre değer girilebilmesini ve bunların kontrolünü sağlayan kısıtlayıcıdır. Örneğin, T.C.Kimlik Nu. alanına 11 karakterin girilmesi Check Constraint ile sağlanabilir. Aynı sütun için birden fazla Check Constraint kullanılabilir.</p>
<p class="style1">Tablonun ilk oluşturulması esnasında genel kullanımı şöyledir.</p>
<p class="style1">CREATE TABLE Tablo_Adi (<br />
Sütun_Adi,<br />
Sütun_Adi,<br />
…..,<br />
CONSTRAINT Constraint_Adi CHECK (ifade)<br />
)</p>
<p class="style1"><strong>Örnek:</strong><br />
“Sinif” adında yeni bir tablo oluşturulacaktır. Bu tabloyu oluşturmadan önce yeni bir veri tabanı (Databases) oluşturabilirsiniz. Bu tablonun sütunları ise, OgrNo int türünde, Ad ve Soyad Char türünde olsun.<br />
OgrNo alanına öğrenci numaralarının mutlaka 0’dan (sıfır) büyük olmalarını sağlayacak CHECK ifadesini CREATE TABLE içerisinde yazabilirsiniz.</p>
<p class="style1"><img width="384" height="125" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image002.gif" /> </p>
<p class="style1"><strong>5. Sütun Seviyeli Kısıtlamalar</strong><br />
Tablodaki bir sütun için girilecek bilgileri kontrol etmek için kullanılan kısıtlamalardır. Bir sütunun değer alıp (NULL) almaması (NOT NULL) için kısıtlama yapılabilir. Bu, kısıtlamaya en basit örnektir.</p>
<p class="style1"><img width="339" height="115" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image004.gif" /></p>
<p class="style1"><strong>6.</strong> <strong>Sütunlar Arası Check Constraint Oluşturmak</strong></p>
<p class="style1"><strong>Örnek</strong><br />
Bir stok programı yazıldığını düşünün. “Urunler” adlı tabloda ürünlerle ilgili bilgilerin olduğunu varsayın. UrunGirisTarihi, ürünün depoya giriş tarihinin, UrunCikisTarihi de ürünün depodan çıkış tarihinin girildiği sütunlar olarak belirlensin. Ürünün depodan çıkış tarihinin her zaman boş ve giriş tarihinden büyük olduğunu garanti edecek bir Check Constraint’i tablo seviyeli olarak şöyle tanımlayabilirsiniz.</p>
<p class="style1">CREATE TABLE Urunler (<br />
UrunNo VARCHAR(10),<br />
UrunAd VARCHAR(200),<br />
UrunGirisTarihi DATETIME,<br />
UrunCikisTarihi DATETIME NULL,<br />
CONSTRAINT chk_UrunCikisTarihi <br />
CHECK (UrunCikisTarihi IS NULL OR<br />
UrunCikisTarihi >= UrunGirisTarihi)<br />
)</p>
<p class="style1"><strong>7. Foreign Key Constraint Oluşturmak</strong><br />
<img width="339" height="139" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image006.gif" align="left" hspace="12" /><img width="348" height="140" src="../Application Data/Macromedia/Dreamweaver 8/OfficeImageTemp/clip_image008.gif" align="left" hspace="12" />Bir tablodaki bir sütuna ait değerlerin, başka bir tablonun belli sütunundan gelmesini denetler. Bir tabloya girilebilecek değerleri başka bir tablonun bir belli alanında yer alabilecek veri grubu ile sınırlandırmaya ve en önemlisi de ilişkilendirmeye yarar. Bu kısıtlayıcıyı hem Management Studio hem de T-SQL kodu yazarak oluşturabilirsiniz. Tabii ki veri tabanınızda birden fazla tablo olması gerekir.</p>
<p class="style1">Management Studio’da veri tabanınızda bulunan tablolar için yeni bir Database Diagram oluşturmanız ve bu tabloları oraya eklemeniz gerekir.</p>
<p class="style1">“Sinif” tablosundaki “OgrNo” alanına fareyle tıklayıp bırakmadan “Sinif_Bilgi” tablosundaki ilişkilendirilecek alana kadar fareyi sürükleyip bırakınız. İlişki gerçekleştirilmiş olacaktır.</p>
<p class="style1">İlişkilendirilmenin sonucunda, sonsuz işareti yabancıl tarafını, anahtar işareti de birincil tarafı göstermektedir. </p>
<p class="style1">Diğer bir yöntem olan T-SQL’le tablo oluştururken Foregin Key Constraint tanımlamak için aşağıdaki genel yapıyı kullanmaktır.</p>
<p class="style1"><strong>Genel Yapı</strong><br />
CREATE TABLE tablo_adı (<br />
Sütun_adları,<br />
CONSTRAINT const_adı FOREIGN KEY (sütun_adı)<br />
REFERENCES diğertablo_adı (sütun_adı)<br />
)</p>
<p class="style1">Oluşturulmuş olan tablo için ise genel yapı şu şekildedir.</p>
<p class="style1">ALTER TABLE tablo_adı<br />
ADD CONSTRAINT cons_adı FOREIGN KEY (sütun_adı)<br />
REFERENCES diğertablo_adı (sütun_adı)</p>
<p class="style1">Managemet Studio ile oluşturulan Foreign Key için T-SQL kodu da aşağıdaki gibidir.</p>
<p class="style1">ALTER TABLE Sinif<br />
ADD CONSTRAINT FK_Sinif_Bilgi_Sinif FOREIGN KEY (TcKimlikNo)<br />
REFERENCES Sinif_Bilgi(TcKimlikNo)</p>
<div class="style1"> </div>
<p class="style1"> </p>
<p class="style1"><strong>Constraint’leri Düzenlemek</strong><br />
Constraint’leri düzenlemenin en uygun yolu Managemet Studio’yu kullanmaktır.<br />
Düzenleme işlemi T-SQL kodlarıyla da gerçekleşebilir ancak, bu işlem için birkaç aşamayı<br />
gerçekleştirmeniz gerekir.<br />
Management Studio’da oluşturulan Constraint’leri düzenlemek için üzerinde fareyle sağ tıklayınız. Açılan yardımcı menü ile yeni bir Constraint oluşturabilir, düzenleyebilir,<br />
adını değiştirebilir veya silebilirsiniz.</p>
<p class="style1"><strong>Constraint’leri Silmek</strong><br />
Tanımlanan bir Constraint’i Management Studio’da mevcut Constraint üzerinde fareyle sağ tıklayıp açılan menüden Delete komutunu vererek silebilirsiniz. </p>
<p class="style1">Bu işlemi T-SQL kodu yazarak da yapabilirsiniz.<br />
ALTER TABLE tablo_adı<br />
DROP CONSTRAINT const_adı</p>
<p class="style1"><strong>Örnek:</strong><br />
ALTER TABLE Urunler<br />
DROP CONSTRAINT chk_UrunCikisTarihi</p>
<p class="style1"><strong>Constraint’lerin Kullanılıp Kullanılmaması</strong><br />
Veri tabanında tanımlı kısıtlayıcıların yapılan işleme göre bazı zamanlarda kullanılması istenmeyebilir. Bu gibi durumlarda kısıtlayıcıların devre dışı bırakılması gerekir.</p>
<p class="style1">Bir Constraint’i devre dışı bırakmak için,</p>
<p class="style1">ALTER TABLE tablo_adı<br />
NOCHECK CONSTRAINT const_adı</p>
<p class="style1">şeklinde yazılmalıdır.</p>
<p class="style1">Tüm Constraint’leri devre dışı bırakmak için ise,</p>
<p class="style1">ALTER TABLE tablo_adı<br />
NOCHECK CONSTRAINT ALL</p>
<p class="style1">yazılmalıdır.</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--SQL DENETİM DEYİMLERİ<br />
--IF - ELSE YAPISI<br />
--Bir deyimi şarta bağlamak için kullanılır.<br />
Kullanımı:<br />
IF (koşul)<br />
BEGIN<br />
deyim ya da deyimler<br />
ELSE<br />
deyim ya da deyimler<br />
END<br />
--Örnek: En yüksek maaş alan çalışanın maaşı 2000 den yüksek ise 'maaşlar iyi', 2000 den az ise 'maaşlar iyi değil' mesajını veren T-SQL kodlarını yazınız.<br />
--önce değişken tanımlıyoruz. Bu değişkene Çalışanlar tablosundaki en yüksek maaş değerini atıyoruz.<br />
declare @enbuyuk int<br />
select @enbuyuk=max(Maasi) from Calisanlar<br />
if (@enbuyuk>2000)<br />
begin<br />
print 'Maaşlar iyi'<br />
end<br />
else <br />
begin<br />
print 'Maaşlar kötü'<br />
end</p>
<p class="style1">--Örnek:2010 Temmuz ayında sipariş alınıp alınmadığını göseren kodları yazınız.<br />
declare @say int<br />
select @say=count(SiparisID) from Siparisler where year(SiparisTarihi)=2010 and month(SiparisTarihi)=7<br />
if (@say>0)<br />
begin<br />
print '2010 Temmuz ayında sipariş alınmıştır'<br />
end<br />
else<br />
print '2010 Temmuz ayında sipariş alınmamıştır'</p>
<p class="style1">--Not : Eğer if ya da else den sonra yapılacak işlem tek satırlık(tek komutluk) bir işlemse begin-end arasında yazmaya gerek yoktur. Yapılacak işlem 1 den fazla ise begin ve end kullanılması zorunludur.</p>
<p class="style1">--Örnek : Stokta bulunan ürünlerin toplam değeri 5000 e eşit veya büyükse 'stok zengin', 5000 den küçükse 'stok yetersiz' mesajını veren kodları yazınız.<br />
declare @toplam int<br />
select @toplam=sum(Fiyati*Miktari) from Urunler<br />
if (@toplam>=5000)<br />
print 'stok zengin'<br />
else<br />
print 'stok yetersiz'</p>
<p class="style1">--CASE YAPISI<br />
--bir çok durum için kontrol işlemi yapar.<br />
Kullanımı:<br />
CASE deger<br />
WHEN deger THEN islem<br />
WHEN deger THEN islem<br />
ELSE islem<br />
END</p>
<p class="style1">--ÖRNEK: Ürünler tablosundaki her ürünün hangi toptancıya ait olduğunu ürün adıyla birlikte ekrana yazdıran T-SQL kodları.<br />
select UrunAdi,'Toptancı Adı'=<br />
case<br />
when Toptanci=1 then 'Kalyon Toptancılık'<br />
when Toptanci=3 then 'Polat Toptancılık'<br />
when Toptanci=5 then 'Emir Toptancılık'<br />
else<br />
'Bu ID ye sahip toptancı bulunmamaktadır'<br />
end<br />
from Urunler<br />
--Örnek : Musteriler tablosundaki her musterinin sirket tipini, musteriID siyle birlikte yazan kodlar.<br />
1 - > Limited<br />
2 - > Kollektif<br />
3 - > Şahıs</p>
<p class="style1">select MusteriID,'Sirket Tipi'=<br />
case<br />
when SirketTipi=1 then 'Limited'<br />
when SirketTipi=2 then 'Kollektif'<br />
when SirketTipi=3 then 'Şahıs'<br />
end<br />
from Musteriler</p>
<p class="style1">--Örnek : Urunler tablosundaki her ürünün miktarı 3 ten az ise 'ürün yetersiz', 3 e eşit ve fazla ise 'ürün yeterli' sonucunu veren programı case yazınız.</p>
<p class="style1">select UrunAdi,'Durum'=<br />
case<br />
when Miktari>=3 then 'ürün yeterli'<br />
when Miktari<3 then 'ürün yetersiz'<br />
end<br />
from Urunler</p>
<p class="style1">--WHILE DÖNGÜSÜ<br />
--Bir işlemi belirli sayı kadar tekrar etmek için kullanılır.<br />
Kullanımı:<br />
WHILE şart<br />
BEGIN<br />
işlemler<br />
END</p>
<p class="style1">--Örnek : 1 ile 10 arasındaki her sayıyı 2 ile çarpıp sonucu ekrana yazan program<br />
declare @sayac int<br />
declare @sonuc int<br />
select @sayac=1<br />
select @sonuc=0<br />
--Değişkenlere değer atarken select ile başlanır.<br />
while(@sayac<=10)<br />
begin<br />
select @sonuc=@sayac*2<br />
print 'sonuc : '<br />
print @sonuc<br />
select @sayac=@sayac+1<br />
end</p>
<p class="style1">--Örnek : 5 ile 10(dahil) arasındaki sayıların karesini alıp ekrana yazan program..<br />
declare @sayac int<br />
declare @sonuc int<br />
select @sayac=5<br />
select @sonuc=0<br />
while (@sayac<=10)<br />
begin<br />
select @sonuc =@sayac*@sayac<br />
print 'sonuc:'<br />
print @sonuc<br />
select @sayac= @sayac+1<br />
end</p>
<p class="style1"> </p>
<p class="style1"></p>
<p class="style1">--1. Dışarıdan ID si girilen KargoFirması ile taşınmış siparişlerin bilgilerini gösteren procedure<br />
create proc SiparisBilgisi (@KargoID int)<br />
as<br />
select * from Siparisler where KargoID=@KargoID<br />
exec SiparisBilgisi 2</p>
<p class="style1"> </p>
<p class="style1">--2. Dışarıdan ID si girilen iki çalışanın aldığı toplam sipariş sayısı.<br />
create proc ToplamSiparis(@id1 int,@id2 int)<br />
as<br />
declare @sipsay1 int<br />
declare @sipsay2 int<br />
select @sipsay1=count(*) from Siparisler where CalisanID=@id1<br />
select @sipsay2=count(*) from Siparisler where CalisanID=@id2<br />
select @sipsay1+@sipsay2</p>
<p class="style1">exec ToplamSiparis 3,4<br />
</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--3. ID si verilen çalışanın aldığı siparişlerin sayısını döndüren procedure.</p>
<p class="style1">create proc ToplamSiparis1(@id int)<br />
as<br />
return (select count(*) from Siparisler where CalisanID=@id)<br />
--<br />
declare @sayi int<br />
exec @sayi=ToplamSiparis1 3<br />
select @sayi</p>
<p class="style1">--4. Dışarıdan ID si girilen iki çalışandan en çok sipariş alanın aldığı sipariş sayısını geriye döndüren procedure.<br />
create proc EnCokSiparisAlan(@id1 int,@id2 int)<br />
as<br />
declare @sipsay1 int<br />
declare @sipsay2 int<br />
select @sipsay1=count(*) from Siparisler where CalisanID=@id1<br />
select @sipsay2=count(*) from Siparisler where CalisanID=@id2<br />
if @sipsay1>@sipsay2<br />
return @sipsay1<br />
else<br />
return @sipsay2<br />
--<br />
declare @sonuc int<br />
exec @sonuc=EnCokSiparisAlan 3,5<br />
select @sonuc<br />
</p>
<p class="style1">--5. Dışarıdan girilen sipariş tarihine kadar alınmış olan tüm siparişlerin toplam Kargo ücretini geriye döndüren procedure.<br />
create proc ToplamKargo(@tarih datetime)<br />
as<br />
declare @toplam int<br />
select @toplam=sum(KargoUcreti) from Siparisler where SiparisTarihi<=@tarih<br />
return @toplam<br />
--<br />
declare @t int<br />
exec @t=ToplamKargo '12.12.2010'<br />
select @t<br />
</p>
<p class="style1"></p>
<p class="style1"></p>
<p class="style1"></p>
<p class="style1">use EVKUR</p>
<p class="style1">--1. sorgu<br />
--1. Maaşı 1000 lira ve üzeri olan çalışanlardan iki tanesinin bilgilerini gösteriniz.<br />
select top 2 * from Calisanlar where Maasi>=1000</p>
<p class="style1">--2. sorgu<br />
--En son işe başlayan çalışanın Adı ve soyadını tek bir sütun altında gösteriniz. Sütun adı ‘Adı Soyadı’ olsun.</p>
<p class="style1">select top 1 Adi+' '+Soyadi as 'Adı Soyadi' from Calisanlar order by CalisanID desc</p>
<p class="style1">--3. sorgu<br />
--En yüksek maaş alan 3 çalışanın maaş bilgisini gösteriniz.</p>
<p class="style1">select top 3 Maasi from Calisanlar order by Maasi desc</p>
<p class="style1">--4. sorgu<br />
--4 nolu departmanda çalışıp maaşı 1000 liradan az olan çalışanın işe başlama tarihini görüntüleyiniz.</p>
<p class="style1">select IseBaslamaTarihi from Calisanlar where Maasi<1000 and Departmani=1</p>
<p class="style1">--5.sorgu<br />
--2000 yılından önce işe başlayan çalışanların işe başladığı ayları gösteriniz.</p>
<p class="style1">select month(IseBaslamaTarihi) as 'Ise Başladığı Ay' from Calisanlar where year(IseBaslamaTarihi)<2000</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--LIKE<br />
--Arama işlemi için kullanılır.<br />
--Örnek: Adı A ile başlayan çalışanların tü bilgilerini göster.<br />
select * from Calisanlar where Adi like 'A%'</p>
<p class="style1">--Örnek Adı n ile biten çalışanların adı ve soyadını göster<br />
select Adi, Soyadi from Calisanlar where Adi like '%N'</p>
<p class="style1">--Örnek: Adres bilgisi içerisinde Işık kelimesi geçen müşterilerin adreini görüntüleyiniz.<br />
select SirketAdresi from Musteriler where SirketAdresi like '%Işık%'</p>
<p class="style1">--Adı K ile başlamayan çalışanların adlarını göster</p>
<p class="style1">select Adi from Calisanlar where Adi not like 'K%'</p>
<p class="style1">--COUNT<br />
--Sayma işlemi yapar.<br />
--Örnek: stoklarımızda kaç tane ürün var?<br />
select count(UrunID) from Urunler</p>
<p class="style1">--2000 yılında alınmış kaç siparişimiz var?<br />
select count(SiparisID) from Siparisler where year(SiparisTarihi)=2000</p>
<p class="style1">--Örnek: Maaşı 700 ile 1000 arasında olan ve adı K ile başlayan çalışanların adı ve maaşını görüntüleyiniz.<br />
select Adi,Maasi from Calisanlar where (Maasi between 700 and 1000) and Adi like 'K%'</p>
<p class="style1">--SUM <br />
--belirtilen kolondaki(sütundaki) değerleri toplar ve sonucu verir.<br />
--Örnek: Tüm siparişlerimiz için toplam kaç lira kargo ücreti ödemişiz?<br />
select sum(KargoUcreti) from Siparisler</p>
<p class="style1">--Örnek:2 nolu çalışanın Nisan ayında aldığı siparişlerin tolam kargo ücreti?<br />
select sum(KargoUcreti) from Siparisler where CalisanID=2 and Month(SiparisTarihi)=4<br />
--Stoklarımızda toplam kaç liralık ürün var?<br />
select sum(Miktari*Fiyati) from Urunler</p>
<p class="style1">--MAX ve MIN<br />
--belirtilen sütundaki en büyük ve en küçük değeri bulur.<br />
--Stoğumuzda bulunan en düşük birimfiyatlı ürün.<br />
select Min(Fiyati) from Urunler<br />
--En çok maaş alan çalışanın maaşı<br />
select Max(Maasi) from Calisanlar</p>
<p class="style1">--AVG : belirtilen sütunun ortalamasını alır.<br />
--Tüm siparişler için ödenen ortalama KargoUcreti?<br />
select Avg(KargoUcreti) from Siparisler</p>
<p class="style1">--GROUP BY<br />
--Kayıtları bir alana göre gruplar.<br />
--Örnek: Kargo firmalarına göre alınmış sipariş sayısı.(Her kargo firması ile kaç sipariş verilmiş)<br />
select KargoID,count(SiparisID) from Siparisler group by KargoID<br />
</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--1. ID si 10 ile 15 arasında olan ürünlerin adlarını ve her üründen toplam ne kadarlık mala sahip olduğumuzu gösteriniz.</p>
<p class="style1">select UrunAdi, Miktari*Fiyati from Urunler <br />
where UrunID between 2 and 4</p>
<p class="style1">--2. Adı M ile başlayan çalışanların maaş ve işe başlama tarihlerini görüntüleyiniz.<br />
select Maasi,IseBaslamaTarihi from Calisanlar where Adi like 'A%'</p>
<p class="style1">--3. Adı G ile başlamayan müşterilerin adlarını ve VergiNo bilgilerini gösteriniz<br />
select SirketAdi, VergiNo from Musteriler where SirketAdi not like 'G%'</p>
<p class="style1">--4. Adres bilgisi içerisinde İnci kelimesi geçen çalışanın adını, soyadını ve adresini gösteriniz.<br />
select Adi,Soyadi,Adresi from Calisanlar where Adresi like '%inci%'</p>
<p class="style1">--5. Stoklarda 5 ten fazla bulunan, fiyatı 500 den yüksek, ID si 2 ile 4 arasında olan ürünlerden baş harfi A veya R olan ürünlerin en pahalısının tüm bilgilerini gösteriniz.<br />
select top 1 * from Urunler where Fiyati>500 and (UrunID between 2 and 4) and (UrunAdi like 'A%' or UrunAdi like 'R%') order by Fiyati desc </p>
<p class="style1">--6. 2010 yılı haziran ayında toplam kaç tane sipariş alındığını gösteriniz.<br />
select count(SiparisID) from Siparisler where year(SiparisTarihi)=2010 and month(SiparisTarihi)=6</p>
<p class="style1">--7. 2010 yılı Mayıs ayında ödediğimiz toplam Kargo Ücretini gösteriniz.<br />
select sum(KargoUcreti) from Siparisler where year(SiparisTarihi)=2010 and month(SiparisTarihi)=5</p>
<p class="style1">--8. 1000 liradan az maaş alan çalışanların maaşlarının toplamını gösteriniz.<br />
select sum(Maasi) as 'Maaslar Toplamı' from Calisanlar where Maasi<1000</p>
<p class="style1">--9. 1 nolu kargo firmasına ödemiş olduğumuz en yüksek ve en düşük kargo ücreti<br />
select min(KargoUcreti) as 'En Düşük',max(KargoUcreti) as 'En Yüksek' from Siparisler where KargoID=2</p>
<p class="style1">--10. Toptancıya göre gruplanmış ürünler.Her toptancıya ait kaç tane ürün var<br />
select Toptanci,count(UrunID) from Urunler group by Toptanci</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--INSERT SORGUSU<br />
--Kayıt Ekleme<br />
--Yazılışı:<br />
--INSERT INTO Tablo_Adi(sütun1,sütun2,..) VALUES(değer1,değer2,..)<br />
--ÖRNEK:Toptancılar tablosuna kayıt ekleyelim.<br />
Insert Into Toptancilar(ToptanciAdi,Yetkilisi,Adres,Sehir,Telefon) Values('Halis Toptancılık','Murat Halis','Kanarya Cad. No:45','2','02123456787')</p>
<p class="style1">--Her tabloya 1 adet kayıt ekleyiniz.</p>
<p class="style1">--UPDATE ile ilgili 5 tane örnek sorgu ve cevabı.<br />
</p>
<p class="style1"></p>
<p class="style1"></p>
<p class="style1">--UPDATE komutu<br />
--Kayıtlar üzerinde değişiklik yapmak için kullanılır. Eğer şart belirtilmezse değişiklik tablodaki tüm kayıtlar için uygulanmış olur.</p>
<p class="style1">--Kullanımı:<br />
--UPDATE tablo_adi SET Alan_adi=deger WHERE şart</p>
<p class="style1">--Örnek: Adı Murat olan çalışanın soyadını Şahin olarak değiştiriniz.<br />
update Calisanlar set Soyadi='Şahin' where Adi='Murat'</p>
<p class="style1">--Örnek: 2000 yılından önce işe başlayan çalışanların maaşını 2000 olarak değiştiriniz.<br />
update Calisanlar set Maasi=2000 where year(IseBaslamaTarihi)<2000</p>
<p class="style1">--Örnek :Musteriler tablosunda SirketAdi içerisinde "Nakliye" geçen müsterinin Şirket adını Mutlular Nakliyat olarak değiştiriniz.<br />
update Musteriler set SirketAdi='Mutlular Nakliyat' where SirketAdi like '%Nakliye%' </p>
<p class="style1">--Örnek : Fiyatı 1000 den büyük olan ürünlerin son kullanma tarihi 2015 ten önce olan ürünlerin son kullanma tarihini 12.12.2020 olarak değiştiriniz.<br />
update Urunler set SonKullanmaTarihi='12.12.2010' where Fiyati>1000 and year(SonKullanmaTarihi)<2015</p>
<p class="style1">--DELETE komutu<br />
--Kayıt silmek için kullanılır.<br />
--Kullanımı:<br />
--DELETE FROM tablo_adi WHERE şart<br />
--Örnek: 20 nolu çalışan tarafından alınan siparişi siliniz.<br />
delete from Siparisler where CalisanID=20</p>
<p class="style1">--Örnek Vergi Nosu olmayan müşterilerin kaydını siliniz.<br />
delete from Musteriler where VergiNo is null</p>
<p class="style1">--inner join li ifadeler<br />
--inner join bağlı olan tabloları ifade eder.<br />
--Örnek: Şehir bilgisi İstanbul olan çalışanların tüm bilgilerini gösteriniz.<br />
select * from Calisanlar<br />
inner join Sehirler on Sehirler.SehirID=Calisanlar.Sehir where Sehirler.SehirAdi='Istanbul'</p>
<p class="style1">--Örnek : İleri Kargo ile taşınmış olan siparişlerin toplam kargo ücretini gösteriniz.<br />
select sum(KargoUcreti) from Siparisler inner join KargoFirmalari on KargoFirmalari.KargoID=Siparisler.KargoID where KargoFirmalari.KargoAdi='İleri Kargo'</p>
<p class="style1">--Örnek1.Hakan adlı çalışanın, Şirket adı içerisinde "Yazılımcılık" geçen müşterilerden aldığı siparişlerin Şirket adını ve sipariş numarasını gösteriniz.<br />
select Musteriler.SirketAdi,Siparisler.SiparisID from Siparisler inner join Musteriler on Siparisler.MusteriID=Musteriler.MusteriID where Musteriler.SirketAdi like <br />
'%Yazılımcılık%'<br />
</p>
<p class="style1">--Örnek2.Beyaz Eşya departmanında çalışan çalışanların maaşlarını gösteriniz.<br />
select Maasi from Calisanlar <br />
inner join Departmanlar on Departmanlar.DepartmanID=Calisanlar.Departmani<br />
where Departmanlar.DepartmanAdi='Beyaz Esya'</p>
<p class="style1">--Örnek 3.Kalyon Toptancılık'a ait ürünlerden en ucuzunun adını ve firmasını gösteriniz.<br />
select top 1 Urunler.UrunAdi,Toptancilar.ToptanciAdi from Urunler inner join Toptancilar on Urunler.Toptanci=Toptancilar.ToptanciID where Toptancilar.ToptanciAdi='Kalyon Toptancılık' order by Fiyati desc<br />
</p>
<p class="style1">--Örnek4.Adı Hakan olan çalışanın siparişlerinden kargo ücreti 5 lira olan siparişlerin kargo ücretlerini gösteriniz.<br />
select KargoUcreti from Siparisler<br />
inner join Calisanlar on Calisanlar.CalisanID=Siparisler.CalisanID<br />
where Siparisler.KargoUcreti=5 and Calisanlar.Adi='Hakan'</p>
<p class="style1">--Şirket türü Limited olup Ankarada olan müşterilerden ismi H ile başlayanın şirket adını ve vergi numarasını gösteriniz.<br />
select SirketAdi,VergiNo from Musteriler <br />
inner join SirketTipleri on Musteriler.SirketTipi=SirketTipleri.SirketTipID<br />
inner join Sehirler on Sehirler.SehirID=Musteriler.SirketSehri where SirketTipleri.SirketTipi='Limited' and Sehirler.SehirAdi='Ankara' and Musteriler.SirketAdi like 'H%'</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--STORED PROCEDURE LER<br />
--(Hazır fonksiyonlar)</p>
<p class="style1">--Herhangi bir işlevi yerine getirmek için yazılan kodların paket içerisinde tutulmuş halidir. Bir defa yazılırlar. İstenildiği anda kullanılabilirler. <br />
--Insert, update, delete işlemlerinde kolaylık sağlar.</p>
<p class="style1">--Örnek : Hesap tablosuna bir kayıt ekleyen procedure</p>
<p class="style1">create proc HesapEkle<br />
@ad varchar(15),<br />
@soyad varchar(20),<br />
@bakiye money<br />
as<br />
insert into Hesap(Adi,Soyadi,Bakiye) values(@ad,@soyad,@bakiye)</p>
<p class="style1">--Procedure un kullanılışı:</p>
<p class="style1">Exec HesapEkle 'Metin','Soylu',25000</p>
<p class="style1">--Örnek: Dışarıdan girilen ID ye ait hesap sahibinin Bakiyesini verilen değerle değiştiren procedure</p>
<p class="style1">create proc BakiyeDegis<br />
@id int,<br />
@yenibakiye money<br />
as<br />
update Hesap Set Bakiye=@yenibakiye where HesapID=@id</p>
<p class="style1">Exec BakiyeDegis 1,50000</p>
<p class="style1">--Örnek : Verilen alıcı ve gonderici hesap numarasına göre tarih alanını verilen yeni tarih ile değiştiren procedure.(ParaAktar)<br />
create proc TarihDegis<br />
@aliciid int,<br />
@gondid int,<br />
@yenitarih datetime<br />
as<br />
update ParaAktar set Tarih=@yenitarih where GondericiHesapID=@gondid and AliciHesapID=@aliciid</p>
<p class="style1">exec TarihDegis 1,4,'01.10.2010'</p>
<p class="style1">--Örnek : Departmanı belirtilen çalışanların maaşlarına belirtilen miktar kadar zam yapan procedure.<br />
create proc Zam<br />
@departmanid int,<br />
@zammiktari money<br />
as<br />
update Calisanlar set Maasi=Maasi+@zammiktari where Departmani=@departmanid</p>
<p class="style1">exec Zam 3,100</p>
<p class="style1">--Örnek : Belirtilen toptancıya ait ürünleri gösteren procedure<br />
create proc UrunGoster<br />
@topid int<br />
as<br />
select * from Urunler where Toptanci=@topid</p>
<p class="style1">exec UrunGoster 3</p>
<p class="style1">--Örnek : Urunler tablosuna sadece ürün adı, fiyatı ve miktarı girilerek kayıt eklenmek isteniyor. Eğer aynı adlı üründen daha önce kayıt edilmişse sadece miktarını arttıran ve fiyatı yeni fiyatla değiştiren, eğer daha önce aynı ürün girilmemişse yeni kayıt yapan procedure.</p>
<p class="style1">create proc YeniUrun<br />
@ad varchar(50),<br />
@fiyat money,<br />
@miktar int<br />
as<br />
if((select count(*) from Urunler where UrunAdi=@ad)>0)<br />
update Urunler set Miktari=Miktari+@miktar, Fiyati=@fiyat where UrunAdi=@ad<br />
else<br />
insert into Urunler(UrunAdi,Miktari,Fiyati) values(@ad,@miktar,@fiyat)</p>
<p class="style1">Exec YeniUrun 'İstikbal Bazalı Kanepe',500,5<br />
Exec YeniUrun 'İstikbal Çalışma Masası',500,5</p>
<p class="style1">--Değer Alan Prosedürler<br />
--Çağırıldıklarında bir değer(parametre) alırlar. Prosedür isminin yanında parantez açılarak alınacak değer için değişken tanımlanır.</p>
<p class="style1">--Örnek : Dışarıdan alınan 2 sayıyı toplayan ve sonucu yazan prosedür.</p>
<p class="style1">create proc Topla(@sayi1 int, @sayi2 int)<br />
as<br />
select @sayi1+@sayi2</p>
<p class="style1">--Çalıştırılması<br />
Exec Topla 4,5</p>
<p class="style1">--2. yol</p>
<p class="style1">declare @s1 int<br />
select @s1=2<br />
declare @s2 int<br />
select @s2=5<br />
exec Topla @s1,@s2</p>
<p class="style1">--Örnek : ID si verilen çalışanın tüm bilgilerini gösteren prosedür.<br />
create proc BilgiGoster(@id int)<br />
as<br />
select * from Calisanlar where CalisanID=@id</p>
<p class="style1">--Çalıştırılması<br />
Exec BilgiGoster 3</p>
<p class="style1">--Örnek : Yetkilisi verilen müşterinin Telefon bilgisini gösteren prosedür.<br />
create proc TelGoster(@yet varchar(15))<br />
as<br />
select SirketTelefonu from Musteriler where Yetkilisi=@yet</p>
<p class="style1">--Çalışıtıryoruz<br />
exec TelGoster 'Leman Çam'</p>
<p class="style1">--Örnek : Dışarıdan gönderilen departman id ye göre, o departmanda kaç kişinin çalıştığını gösteren prosedür.<br />
create proc KacKisi(@depid int)<br />
as<br />
select count(*) from Calisanlar where Departmani=@depid</p>
<p class="style1">exec KacKisi 3</p>
<p class="style1">--Örnek : ID leri verilen iki üründen en pahalısını gösteren prosedür.</p>
<p class="style1">create proc EnPahalisi(@id1 int, @id2 int)<br />
as<br />
if(select Fiyati from Urunler where UrunID=@id1)>(select Fiyati from Urunler where UrunID=@id2)<br />
begin<br />
print @id1<br />
print 'id li ürün daha pahalı'<br />
end<br />
else<br />
begin<br />
print @id2<br />
print 'id li ürün daha pahalı'<br />
end</p>
<p class="style1">--Çalıştırıyoruz<br />
Exec EnPahalisi 3,9</p>
<p class="style1">--Geriye Değer Döndüren Procedure ler<br />
--Procedure den geriye bir değer döndürmek için RETURN kelimesi kullanılır. Burada sonuc procedure içinde yazdırılmaz, çağırıldığı yere sonuç gider ve orada yazdırılır.<br />
--Örnek :<br />
--iki sayının toplamını geriye döndüren prosedür<br />
create proc DondurBakalim(@sayi1 int, @sayi2 int)<br />
as<br />
return @sayi1+@sayi2</p>
<p class="style1">declare @sonuc int<br />
exec @sonuc=DondurBakalim 2,3<br />
select @sonuc</p>
<p class="style1">--Örnek : ID leri verilen iki üründen en pahalısının id sini döndüren prosedür.</p>
<p class="style1">create proc EnPahali(@id1 int, @id2 int)<br />
as<br />
if(select Fiyati from Urunler where UrunID=@id1)>(select Fiyati from Urunler where UrunID=@id2)<br />
return @id1<br />
else<br />
return @id2</p>
<p class="style1">declare @id int<br />
exec @id=EnPahali 3,9<br />
select @id</p>
<p class="style1">--UYGULAMA SORULARI:</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">declare @i1 int<br />
declare @i2 int<br />
select @i1=Fiyati from Urunler where UrunUD=@id1<br />
select @i2=Fiyati from Urunler where UrunUD=@id2<br />
if @i1>@i2</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1">--TRIGGER LAR (TETİKLEYİCİLER)<br />
--Tablo üzerinde insert, update, delete işlemleri gerçekleşmesi aşamasında ya da gerçekleştikten sonra otomatik olarak tetiklenen işlemlerdir.</p>
<p class="style1">--Örnek : Departmanlar tablosuna yeni bir departman eklendiğinde Çalışanların maaşlarını %5 azaltan bir trigger yazalım.</p>
<p class="style1">--Trigger yazılışı :</p>
<p class="style1">create trigger Trigger_adi <br />
on Tablo_adi<br />
after insert/delete/update<br />
as<br />
işlem</p>
<p class="style1">--Cevap :<br />
create trigger MaasDusur<br />
on Departmanlar<br />
after insert<br />
as<br />
Update Calisanlar set Maasi=Maasi-Maasi*0.10</p>
<p class="style1">insert into Departmanlar(DepartmanAdi) values('Giyim')</p>
<p class="style1">--Örnek: ŞirketTipleri tablosunda bir güncelleme olduğunda Musterilerin ŞirketTipi alanını boşaltan trigger.<br />
create trigger SirketTipiBosalt<br />
on SirketTipleri<br />
after update<br />
as<br />
update Musteriler set SirketTipi=null</p>
<p class="style1">update SirketTipleri set SirketTipi='Komandit' where SirketTipi='Limited'</p>
<p class="style1">--Örnek : Sehirler tablosunda silme işlemi gerçekleştiğinde Müşterilerin şehir alanını 'Bilinmiyor' olarak değiştiren trigger.<br />
create trigger Silme<br />
on Sehirler<br />
after delete<br />
as<br />
update Musteriler set SirketSehri='Bilinmiyor' </p>
<p class="style1">delete from Sehirler where SehirID=2</p>
<p class="style1">--Siz bir tabloya kayıt eklediğinizde eklenen kayıt, önce arka planda oluşan inserted tablosuna eklenir. Kayıt sildiğinizde ise silinen kayıt önce arka plandaki deleted tablosuna eklenir, sonra silinir.<br />
create trigger DepartmanEkleme<br />
on Departmanlar<br />
after insert <br />
as <br />
select * from inserted</p>
<p class="style1">insert into Departmanlar(DepartmanAdi) values('Hobi ve oyun')</p>
<p class="style1">--Örnek : Siparişlerden biri silindiğinde, o siparişi alan çalışanın maaşını %5 azaltan trigger.</p>
<p class="style1">create trigger SiparisIptali<br />
on Siparisler<br />
after delete<br />
as <br />
declare @id int<br />
select @id=CalisanID from deleted<br />
update Calisanlar set Maasi=Maasi-Maasi*0.05 where CalisanID=@id</p>
<p class="style1">--Örnek : Satis isimli bir tablo oluşturunuz(Alanları: satis no,urunno,miktar) Satilan ürünün sayısını yapılan satış miktarı kadar azaltan trigger yazınız.</p>
<p class="style1">create table Satis(<br />
SatisNo int primary key identity(1,1) not null,<br />
UrunNo int,<br />
Miktar int<br />
)</p>
<p class="style1">create trigger StokGuncelle<br />
on Satis<br />
for insert<br />
as<br />
declare @satisAdedi int, @urunid int<br />
select @satisAdedi=Miktar, @urunid=UrunNo from inserted<br />
update Urunler set Miktari=Miktari-@satisAdedi where UrunID=@urunid</p>
<p class="style1">--Örnek : Bir ürünün satışı iptal edildiğinde(satış tablosundan kaydı silindiğinde) satış miktarını tekrar Urunler tablosundaki Miktara ekleyen trigger.<br />
create trigger SatisIptali<br />
on Satis<br />
for delete<br />
as<br />
declare @SatisAdedi int , @UrunID int<br />
select @SatisAdedi=Miktar, @UrunID=UrunNo<br />
from deleted<br />
update Urunler set Miktari=Miktari+@SatisAdedi where UrunID=@UrunID<br />
</p>
<p class="style1">--ÖRNEK UYGULAMA(ÖDEV)<br />
--Yapana sözlü notu 100<br />
--Bir banka için HESAPLAR tablosu oluşturuluyor. Bu tabloda kişilerin hesap numaraları, adı soyadları, TC Numaraları ve Bakiye bilgileri bulunuyor.<br />
--Hesap sahiplerinin birbirlerine para havale etmeleri için de PARAAKTAR tablosu oluşturuluyor. Bu tabloda Gönderenin hesap numarası, alıcının hesap numarası, gönderilen miktar ve tarih bilgileri tutuluyor.<br />
--Bir hesap sahibi diğerine para aktaracağı zaman(ParaAktar tablosuna kayıt girildiğinde) eğer gönderenin bakiyesi yetersiz ise 'Bakiye yetersiz' mesajını veren, yeterli ise gönderenin hesabındaki bakiyeden gönderilen para kadarını düşen ve alıcının bakiyesine gönderilen miktarı ekleyen triggerı yazınız.</p>
<p class="style1">create database banka<br />
use banka<br />
create table hesap<br />
(hesapID int primary key identity(1,1) not null,<br />
adi varchar(15) not null,<br />
Soyadi varchar(15) not null,<br />
Bakiye money)<br />
create table ParaAktar<br />
(GondericiHesapID int not null,<br />
AliciHesapID int not null,<br />
GonderilenMiktar money,<br />
Tarih datetime)<br />
</p>
<p class="style1">create trigger ParaAkt<br />
on ParaAktar<br />
for insert<br />
as<br />
declare @gondericihesapno int, @alicihesapno int, @gonderilenpara money<br />
select @gondericihesapno=GondericiHesapID, @alicihesapno=AliciHesapID, @gonderilenpara=GonderilenMiktar from inserted <br />
if((select Bakiye from Hesap where hesapID=@gondericihesapno)<@gonderilenpara)<br />
print 'Yetersiz bakiye'<br />
else<br />
begin<br />
update hesap Set Bakiye=Bakiye+@gonderilenpara where hesapID=@alicihesapno<br />
update hesap set Bakiye=Bakiye-@gonderilenpara where hesapID=@gondericihesapno<br />
end<br />
</p>
<p class="style1">insert into ParaAktar(GondericiHesapID,AliciHesapID,GonderilenMiktar,Tarih) values(4,1,3000,'10.10.2010')<br />
</p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"></p>
<p class="style1"> </p>
<p class="style1"></p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
</body>
</html>