SQL de Değişken Tanımlama
Değişken Tanımlama Değişken en basit tanımı ile bir verinin saklanmasında kullanılan hafıza alanıdır. Değişkene atanan her yeni değer eskini siler. SQL Server'da değişkenler DECLARE ifadesi kullanılarak oluşturulurlar.
Değişken Tanımlama SQL Server'da da değişkenler yerel ve genel olmak üzere ikiye ayrılır. Yerel değişkenler, "@" ön eki ile tanımlanır (@değişken). Genel değişkenler ise SQL Server tarafından tanımlanmıştır ve kullanıcı tarafından oluşturulamaz. "@@" ön eki ile tanımlanırlar (@@SERVERNAME). Genel değişkenler genellikle SQL Server hakkındaki bilgileri verir. SQL Server'da tanımlanmış birçok genel değişken vardır.
Değişken İsimlendirme Kuralları Nesne veya değişkene bir isimlendirme yaparken aşağıdaki kurallara dikkat etmelisiniz: Harf veya alt çizgi (_) ile başlamalıdır. Türkçe karakterler ve boşluk isimlendirmede kullanılmamalıdır. Değişken ismi SQL’de özel anlamı olan sembollerle (@, @@, #, ##, $) başlamamalıdır. T-SQL komutları değişken ismi olarak verilmemelidir (SELECT, UPDATE vb). SQL ifadeleri prensip olarak büyük harfle yazılır. Nesne isimleri kısa ve anlamlı olmalıdır. Nesne isimlendirilirken işlerin kolaylaştırılması açısından tekil isim tercih edilmelidir (TabloOgrenciler yerine tblOgrenci gibi). NULL terimi, daha önce hiçbir şey girilmemiş (değersiz) anlamındadır. Klavyedeki SPACE (ASCII 32) tuşu ile NULL aynı değerleri içermez. NULL boş veya bilinmeyen değerler için kullanılır.
Değişken Tanımlama DECLARE @değişken_adı veri_türü ifadesi ile bir değişken tanımlıyoruz. declare @sayi1 int declare @ad varchar(15) declare @soyad varchar(25) Sayi1 isimli int tipinde bir değişken tanımlamış olduk. Tek satırda birden fazla değişkende tanımlayabiliriz. declare @n1 int, @n2 int, @ort float DECLARE @ogr_no varchar(10),@tckimlik_no int Tek satırda n1,n2 ve ort isimlerinde değişken tanımlamış olduk. Değişken tanımlarken @ işareti mutlaka değişken adının önüne konmalıdır.
Değişkenlere Değer Atama Set yada select ifadelerini kullanarak değişkenlere değer ataması yapılır. Set ifadesiyle değişkene değer ataması aşağıdaki gibi yapılır. SET @değişken_adi=değer Select ifadesiyle değişkene değer ataması aşağıdaki gibi yapılır. SELECT @değişken_adı=değer
Yukarıda oluşturduğumuz @n1 ve @n2 değikenlerine bir değer ataması yapalım ve bu iki değerin ortalamasını alıp @ort değikenine aktaralım: set @n1=85 select @n2=45 set @ort=(@n1+@n2)/2 Hem set hem de select ifadelerini kullanarak değişkenlere değer ataması yaptık.
Değişken Değerlerinin Ekranda Gösterilmesi Değişkenlerin aldığı değerleri ekranda görüntülemek için select yada print komutları kullanılır. Değişkenlerin değerini, hata mesajlarını vs. mesaj olarak görmek isteriz. Bu tür durumlarda, print komutu kullanılır. Select ifadesi ile sorgu çıktısı olarak ekranda görüntülenir. Bu iki komutun daha iyi anlaşılması için aşağıda iki komutun ekran çıktılarını bakınız. select @n1 select @n2 select @ort as ortalama print @ort
Çıktı Sonuç (Results) ekranı select ifadesi ile ekrana gelir. Mesaj (Message) ekranı print ile ekrana gelir. as komutunu kullanarak alanlara isim verebiliriz.
Örnek Tablo(ogrenci)
Örnek Kadir demir isimli öğrencimizin notları @n1,@n2,@n3 değişkenlerine aktaralım declare @n1 int, @n2 int, @n3 int, @ort float select @n1=ogr_not1, @n2=ogr_not2, @n3=ogr_not3 from ogrenci where ogr_ad='kadir' and ogr_soyad='demir' set @ort=(@n1+@n2+@n3)/3 select @ort as ortalama
Değişken kullanarak yeni bir kayıt ekleme declare @ad varchar(15),@soyad varchar(25) declare @not1 int, @not2 int, @not3 int set @ad='mustafa' set @soyad='bilir' set @not1=55 set @not2=85 set @not3=95 insert into ogrenci (ogr_ad,ogr_soyad,ogr_not1,ogr_not2,ogr_not3) values (@ad,@soyad,@not1,@not2,@not3) select * from ogrenci
Örnek değişkenleri kullanarak adı "mu" ile başlayan kayıtları bulalım: declare @ad varchar(15) set @ad='mu%' select * from ogrenci where ogr_ad like @ad
Örnek Kayıtlı öğrenci sayısını bulalım: declare @ogrencisayisi int select @ogrencisayisi=COUNT(*) from ogrenci print 'öğrenci sayısı=' print @ogrencisayisi
SQL Denetim Deyimleri
SQL Denetim Deyimleri Birden fazla komutu aynı anda işletebilmek için SQL’de bloklar kullanılmaktadır. Tüm programlama dillerinde olduğu gibi akış kontrollerinde ve döngü yapılarında kullanılan komutlar birden fazla ise mutlaka BEGIN..END bloğunda yazılmalıdır.
IF..ELSE Yapısı Bir deyimin işletilmesini belli bir koşula bağlar. Kullanımı if(mantıksal ifade) begin // şartın doğru olması durumunda yapılacak işlemler end else //else yerine else if (şart) şeklinde kontrol cümleleri artırılabilir. begin //diğer dumunda yapılacak işlemler end
Örnek: Öğrenci notları tablosu Öğrencilerin not ortalamalarına göre ortalaması 85’in üzerinde olanların durumu için “PEKİYİ”, 85’ten küçük olanlar için ise “İYİ” yazdıran T-SQL kod satırlarıdır.
IF..ELSE yapısının kullanılması ve sonucu
CASE Yapısı Case yapısı, birçok durum için dallanmaya müsait bir yapıdır. Kullanımı CASE değer WHEN değer THEN işlem ELSE işlem END
Örnek Kütüphanedeki kitapların mevcut olup olmadığını gösteren basit bir T-SQL kodlarıdır. Tablonun aşağıdaki gibi olduğunu varsayınız.
Kitapların kütüphanede olup olmadığı KitapDurumu sütununda belirtilecektir. Case yapısının kullanımı Case yapısı kullanılarak kitap durumları KitapDurumu sütununa yazdırılmıştır.
Döngüler
While Döngüsü Tekrar gerektiren işlemlerde istenilen şart gerçekleşinceye kadar işlem yapmaya olanak sağlar. While ile bir işlemi istenilen kadar tekrarlatabilirsiniz. Genel yapısı şu şekildedir: WHILE şart BEGIN Tekrarlanması gereken kodlar END
Örnek while döngüsü ile toplama işlemi yapalım; declare @sayac int, @sayi int,@toplam int set @toplam=0 set @sayi=10 set @sayac=0 while (@sayac<5) begin set @toplam=@toplam+@sayi set @sayac=@sayac+1 print @toplam end
BREAK Komutu İstenilen şart sağlandığında WHILE döngüsünden çıkmak için BREAK komutu kullanılır. Programın çalışması WHILE’ın END’inin altındaki satırdan çalışmaya devam eder.
Örnek Sayacın 3 olması durumunda WHILE döngüsünden çıkıp toplamı ve sayacın değerini yazdıran T-SQL kodlarıdır.
CONTINUE Komutu Programın çalışmasını WHILE yapısının başına göndermek için kullanılan bir komuttur.
Örnek Sayaç değişkenin 3 değeri hariç diğer değerleri ve toplamı yazdıran T-SQL kodlarıdır.
Örnek Siparis tablosundan satış adetleri 50 oluncaya kadar adet alanının 2 katını alan SQL cümlesi. WHILE (SELECT AVG(adet) FROM siparis) < 50 BEGIN UPDATE siparis SET adet= adet* 2 SELECT MAX(adet) FROM siparis IF (SELECT MAX(adet) FROM siparis) > 50 BREAK ELSE CONTINUE END PRINT 'adet değeri büyük'''
Uygulama Aşağıdaki SQL kodlarını analiz ederek uygulayınız. DECLARE @sayi1 int DECLARE @sayi2 int SET @sayi1=3 SET @sayi2=6 IF @sayi1>@sayi2 BEGIN PRINT 'Birinci sayı ikinci sayıdan büyüktür' END ELSE PRINT 'İkinci sayı birinci sayıdan büyüktür'
DECLARE @Toplam int SET @Toplam=@sayi1+@sayi2 IF @Toplam>5 PRINT 'İki sayının toplamı 5 ten büyük' ELSE PRINT 'İki sayının toplamı 5 ten küçük' SELECT @Toplam= CASE WHEN @Toplam>9 THEN @Toplam*10 WHEN @Toplam<10 THEN @Toplam*2 END PRINT 'CASE işlemi sonucu :' PRINT @Toplam
DECLARE @sayac int DECLARE @modtoplam int SET @sayac=0 SET @modtoplam=0 WHILE (@sayac<@toplam) BEGIN SET @sayac=@sayac+5 SET @modtoplam=@modtoplam+(@sayac%2) END PRINT 'Mod işlemi toplamları sonucu=' PRINT @modtoplam SELECT 'Mod işlemi toplamları sonucu='+ CONVERT(VARCHAR,@modtoplam) şeklinde de yazılabilir. CONVERT() fonksiyonu veriyi bir formattan başka bir formata çevirmek için kullanılır. Böylece “int” türdeki “@modtoplam” değişkeninin içeriği karaktersel veri türüne çevrilmiştir.