09 December 2016

SQL Karar Yapıları

SQL’de birden fazla komutu aynı anda çalıştırabilmek için bloklar kullanılmaktadır. Döngü yapılarında kullanılan komutlar birden fazlaysa mutlaka BEGIN..END blogu içerisinde yer almalıdır.

İf Else Yapısı

İf Else yapısı ile bir ifadenin çalıştırılması belli bir koşula bağlanır.

Kullanımı:

if (kosul)
 BEGIN
 ifadeler
 END
 else
 BEGIN
 ifadeler
 END

Örnek:

if exists(select Name from Artist where ArtistId=1)
 print('Aranan isim bulundu')
 else
 print('Aranan isim bulunamadı')

Bir veritabanının mevcut olup olmadığını, mevcut değilse oluşturulmasını, mevcutsa silinmesini sağlayacak örnek ifade:

if DB_ID('YazilimciBlog') IS NULL
 CREATE DATABASE YazilimciBlog
 else
 DROP DATABASE YazilimciBlog

Örnek:

DECLARE @artistcount int
 select @artistcount= COUNT(*) from Artist
 if @artistcount>200
 print ('Sanatçı sayısı 200 den fazladır')
 else
 print ('Sanatçı sayısı 200 den azdır')

Örnek:

declare @id int
 declare @toplam numeric(10,2)
 set @id=1
 set @toplam =1
if exists (select * from Invoice where InvoiceId=@id)
 begin
 declare @rakam int
 select @rakam = Total from Invoice where InvoiceId=@id
if @rakam>=@toplam
 print('Rakam büyük')
 else
 print('Rakam küçük')
 end
 else
 begin
 print('Ürün bulunamadı')
 end

Case – When Yapısı

Case When karar yapısı birden fazla durum için kullanılmaya müsait olan bir yapıdır.

Kullanımı

CASE değer
 WHEN değer THEN işlem
 WHEN değer THEN işlem
 ELSE işlem
 END

Örnek:

select LastName,FirstName,TT=
 Case Title
 when 'General Manager' then 'GM'
 when 'Sales Manager' then 'SM'
 when 'Sales Support Agent' then 'SSA'
 else Title
 end
 from Employee

Örnek:

select ProductName, [Satış Durumu]=
 case
 when COUNT(*)>40 then 'Çok Satan'
 when COUNT(*)>30 then 'Orta'
when COUNT(*)>20 then 'Az Satan'
else 'Düşük'
end

COUNT(*) as [Siparis Sayisi] from [Order Details]
join Products
on [Order Details].ProductID=Products.ProductID
group by ProductName
order by [Siparis Sayisi] desc