Sizinle paylaşacağım örneklerde “AdventureWorks” üzerinde çalışacağım. Veritabanı sunucusu olarak da SQL 2012’i kullanıyor olacağım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
-- if else --koşul işleri sql server da sadece if else if ve else den ibarettir. declare @degisken int set @degisken=11 if(@degisken<10) begin print 'girilen deger 10 '' dan kucuktur' end else begin print 'girilen deger 10 '' dan buyuktur' end --- if ve else blokları altına yazılacak olan kodlar begin ve end blokları arasında olmalıdır ---begin ve end blokları javadaki {} lere denk gelir. ---Eğerki if veya else altındaki kodlar tek satır ise begin veya end koymaya gerek yoktur. --çoklu satırlarda begin veya end konulmalıdır declare @sayi int,@sayi1 int,@secim nvarchar(2) set @sayi=10 set @sayi1=20 set @secim='+' if(@secim='+') begin print 'Toplam:' + cast (@sayi+@sayi1 as nvarchar(5)) end else if(@secim='-') begin print 'Fark:' + cast (@sayi-@sayi1 as nvarchar(5)) end else if (@secim='/') begin print 'Bölüm:' + cast (@sayi/@sayi1 as nvarchar(5)) end else if (@secim='*') print 'Carpim:' + cast (@sayi*@sayi1 as nvarchar(5)) --ic ice if declare @x int,@y int,@z int if(@z>@x) begin if (@z>@y) begin print 'z, y '' den ve x '' den büyük' end else begin print 'z, X '' den buyuk ve Y '' den kucuk' end end else begin if(@z>@y) begin print 'z, x '' den kucuk ve y '' den büyük' end else begin print 'z, x '' den kucuk ve y '' den kucuk' end end --EX: Id degeri 316 olan ürün ile ıd degeri 766 olan ürünlerden hangisi daha pahalıdır. declare @para1 money declare @para2 money select @para1=ListPrice from Production.Product where ProductID=316 select @para2=ListPrice from Production.Product where ProductID=766 if (@para1>@para2) begin print '316 nolu ürün daha pahalıdir' end else begin print '766 nolu ürün daha pahalıdir' end --while döngüsü : --sql serverda bir adet döngü bulunmaktadır.Bu döngü while döngüsüdür. declare @sayac int set @sayac=0 while (@sayac<10) begin print @sayac set @sayac=@sayac+1 end --carpim tablosu yazalim declare @sayi1 int declare @sayi2 int set @sayi1=1 set @sayi2=1 while(@sayi1<=10) begin while (@sayi2<=10) begin print cast(@sayi1 as nvarchar(2)) + 'x' + cast(@sayi2 as nvarchar(2))+'=' + cast (@sayi1*@sayi2 as nvarchar (2)) set @sayi2=@sayi2+1 end print'-*-*-*-*-*-*-*-*-*-*-*-' set @sayi1=@sayi1+1 set @sayi2=0 end --Id değeri tek sayi olan ürünlerin ad fiyat renk bilgilerini ekrana yazdıralım(Döngü kullanarak) declare @sayi int declare @sayac int set @sayac=0 declare @ad nvarchar(max) set @ad='' select @sayi=COUNT(*) from Production.Product while(@sayac<@sayi) begin if(@sayac%2<>0) begin select @ad='Ad : '+ Name + 'Id : '+ CAST(ProductID as nvarchar(max)) from Production.Product where ProductID=@sayac print @ad end set @sayac=@sayac+1 end --Girilen metni ters ceviren kodu yazalim. select Name,REVERSE(name) from Production.Product --Substring fonksiyonu bir metni kesmek için kullanlılır. --birinci parametre olarak kesilecek olan metni ikinci parametre kacıncı index numarasından --baslanacaği,2. parametre ise kaç karakter kesileceği bilgisidir. select name,SUBSTRING(name,1,2) from Production.Product --len fonksiyonu parametre aldığı değeri uzunluğunu verir. select name,LEN (Name)'Uzunluk' from Production.Product --len ve substring fonksiyonu kullanılarak bir metinsel değişken üzerinde degeri ters cevirerek --uygulama yazalim --(Manuel Reverse) declare @metin nvarchar(max) set @metin='bahcesehir' declare @reverse nvarchar(max) set @reverse='' declare @sayac int set @sayac=0 while(@sayac<len(@metin)) begin set @reverse=@reverse+SUBSTRING(@metin,LEN(@metin)-@sayac,1) set @sayac=@sayac+1 end print @reverse --metinsel fonksiyonlar incelenecek. --Gruplama Fonksiyonları --Group by --Hangi renkten kaç adet var. select Color,COUNT(*) FROM Production.Product group by Color --Aggregate funchtion ile yan yana gelecek olan kolon kesinlikle gruplanmalıdır. --Hangi sehirde kaç kişi oturmaktadır. select *from person.Address select city,COUNT (*) from Person.Address group by city --mükerrer kayıtlar gelmesin istermisiniz? select distinct Color from Production.Product select distinct City from person.Address --Hangi yaştan kaç kişi var? select DATEDIFF (YY,BirthDate,GETDATE()) 'Yas',COUNT(*) from HumanResources.Employee group by DATEDIFF(YY,BirthDate,GETDATE()) order by COUNT(*) desc --hangi harften başlayan kaç ürün var? select SUBSTRING (Name,1,1)'Harf',Count(*)from Production.Product group by SUBSTRING(Name,1,1) |