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 |
---Tarih İşleri ---- select *from HumanResources.Employee --Dateadd --Verilen tarihe ,istenilen kadar değer ekler --Bugunun tarihini almak select GETDATE() --günün tarihi geldi -- 1.parametre eklenecek veri --2.parametre hangi miktarda ekleneceği --3.parametre hangi değere ekleneceği select DATEADD(YY,1,GETDATE())--şimdiye bir yıl ekleme anlamına gelir select DATEADD(QQ,1,GETDATE())--BİR ÇEYREK YIL EKLEDİ --Human Resource Tablosundaki tüm kişilerin doğum tarihlerine 10 yıl ekleyelim select BirthDate,DATEADD(YY,10,BirthDate)'10 yıl eklenmiş' from HumanResources.Employee --DateDiff select GETDATE() select DATEDIFF(YY,Getdate(),'2014-03-15')--Datediff iki yıl arasındaki farkı bulunur. --kaç ay geçmiş select DATEDIFF(mm,Getdate(),'2014-03-15') --doğumundan bugune kaç hafta geçmiş select DATEDIFF(ww,'1982-11-21',Getdate()) --HumanResource tablosundaki insanlar kaç yaşındalar select Title,DATEDIFF(YEAR,Birthdate,Getdate()) 'Yas'from HumanResources.Employee order by DATEDIFF(YEAR,BirthDate,GETDATE())desc-- yada order by 'Yas ' desc --Gecici tablo ismine göre sıralama yapıldı --DatePart:Girilen tarih ile alakalı bilgileri verir. select DATEPART(YY,GETDATE())--yılı verir select DATEPART(QQ,GETDATE())--çeyrek yılı verir select DATEPART(mm,GETDATE())--Ay ı verir. --gibi çogaltılabilir. --İsim verir. set language 'Turkish' select DATEName(mm,GETDATE()) --Sql server a 128 bitlik unique bir değer oluşturtabilirsiniz select NEWID() --Top ifadesi; --Top ifadesi ile istenilen kadar kayıt getirilir. --En pahalı 3 ürünü getirelim. select Top 3 Name,listprice from Production.Product order by ListPrice desc --fiyat alanına göre tersten sıraladı ve en üstteki 3 sonucu aldı --En genç 5 kişi select Top 5 title,DATEDIFF(YY,BirthDate,GETDATE()) 'Yas' from HumanResources.Employee order by 'Yas' --En pahalı 3 ürün gelsin,bu en pahalı ürünlerin fiyatına esit olan diger ürünler gelsin select Top 3 with ties Name,listprice from Production.Product order by ListPrice desc --5 adet Random ürün gelsin select Top 5 Name,listprice from Production.Product order by NEWID() --Son 10 yılda satılan toplam ürün miktarı select COUNT(*) from Production.Product where DATEDIFF(YY,SellStartDate,Getdate())>10 --En son satılan ürün kaç yıl önce satıldı. select Top 1 SellendDate,DATEDIFF(yy,SellEndDate,Getdate()) from Production.Product order by SellEndDate desc --ilk satılan ürün kaç yıl önce satılmış select Top 1 SellStartDate,DATEDIFF(yy,SellStartDate,Getdate()) from Production.Product order by SellEndDate desc --En pahalı kırmızı renkteki ürün kaç hafta önce satılmış select Top 1 ListPrice,ProductID,Name,Color,SellEndDate, DATEDIFF(ww,SellEndDate,Getdate()) from Production.Product where Color='Red' order by ListPrice desc --Değişken tanımlama --Sql serverda değişkenler tanımlanabilir.Bu değişkenler çalıştırıldıığında belleğe çıkar ve çalışma bitince --bellekten düşerler. --yukarıdaki ifade çalıştırıldıığnda beleğe gecici olarak çıkacaktır. set @degisken =1 --Set ifadesi ilse değişkene değer atanır. select @degisken print @degisken --metinsel degisken tanımlayalım declare @degisken nvarchar(50) set @degisken='Ben metinsel degiskenim' print @degisken ---tek satırda birden çok degiskenin tanımlanabilir. declare @d1 int ,@d3 int,@d3 nvarchar(50) --Tipleri verildiği için tek satırda biren fazla farklı tipde değişken tanımlanabilir. --En pahalı ürünün adını,bir değişken üzerine alıp ekrana yazdıralım. declare @enPahaliAd nvarchar (max) select Top 1 @enPahaliAd=Name from Production.Product order by ListPrice desc print @enPahaliAd --En pahalı ürün ile fiyatı 100 den büyük en ucuz ürğn arasındaki farklı değişkeleri bulalım declare @enPahali money ,@enUcuz money select @enPahali=MAX(ListPrice),@enUcuz=MIN(ListPrice) from Production.Product where ListPrice>100 print @enPahali print @enUcuz print @enPahali-@enUcuz --Degiskenler money tipinde olduğu için operatorler ile birlikte kullanılabilir.Money tipi decimal ile --aynıdır.(Ondalık veri taşır.) --En yaşli en genç arasındaki yas farkı select * from HumanResources.Employee declare @enGenc int,@EnYasli int select @enGenc=MIN(DATEDIFF(yy,birthdate,getdate())), @enYasli=MAX(DATEDIFF(yy,birthdate,getdate())) from HumanResources.Employee print @enGenc print @enYasli print @enYasli-@enGenc --Tip Dönüşümleri : --convert ve Cast : declare @metin nvarchar(10) set @metin='ben metin degiskenim' declare @rakam int set @rakam=10 --Metinsel bir değişken ile rakamsal bir değişkeni + operatorü ile birleştirelim. --print @metin + @rakam --tip dönüşümü olmadan metinsel ve rakamsal degiskenler birleştirelemezler print @metin + cast(@rakam as nvarchar(10)) --En pahalı ürünün fiyatı declare @enpahali money select @enPahali=MAX(Listprice) from Production.Product print'En pahali ürün fiyati : '+ cast (@enpahali as nvarchar(10)) --Convert declare @enpahali money select @enPahali=MAX(Listprice) from Production.Product print'En pahali ürün fiyati : '+ convert (nvarchar(10),@enPahali) --Cast ve convert arasındaki fark,cast bellekte budama işlemi yapar,Convert tipi dönüştürmeye çalışır. --dönüştüremez ise hata fırlatılır. |