cemtopkaya (10:46):

21 Nisan 2016 Perşembe

SQL sorgu ifadeleri ile örnekler

-- yorum satırı
/*yorum satırı*/

--Select -> Seçme Sorgusu
--Veri sorgulamak ve görüntülemek için kullanılaır.
-- as ifadesinin solunda yazılan ifadeler column name'dir.

select 5 as Sayi
select 'Muhammed' as İsimler
select 13+24 as Deneme
select 'Sql' +' Dersleri' as Dersler
select 'Fatih' as Ad, 'Terim' as Soyad, 45 as Yas

--Select'in tablo sorgulama formülü
--select [kolon adları] from [tablo adı]
select * from Employees
select * from Categories
select * from Products
-- * -> girdiğimiz tablodaki tüm bilgileri gösterir.

-- girdiğimiz tablodaki belirli alanları aşağıdaki şekilde sorgulama yaparak gösterebiliriz.
select FirstName,LastName,City,Address from Employees


-- Where yapısı (kriter)

-- Where'in formülü: select kolanadi from tabloadı where kriter

-- eşitlik operatörü =
-- büyük eşit küçük eşit >=,<=
-- büyüktür,küçüktür >,<
-- eşit değildir !=
-- eşit değildir <>

-- Tüm tablomuzu çağıralım önce
select * from Employees

-- Çalışan id'si sadece 7 olan kaydı getir.
select * from Employees where EmployeeID=7

-- 3 nolu çalışanın almış olduğu siparişleri gösteriniz.
select * from Orders where EmployeeID=3

-- birim fiyatı 50 dolardan az olan ürünlerin adlarını görüntüleyiniz.
select * from Products where UnitPrice<50

-- ALFKI müşteri ad'li müşterinin siparişini gösteriniz.
select * from Orders where CustomerID='ALFKI'

-- Stokta 10 taneden az olan ürünleri gösteriniz.
select * from Products where UnitsInStock<10

-- Kategori id'si 2 olan ve 3 nolu tedarikçiden gelen ürünlerin adını gösteriniz.
select * from Products where CategoryID=2 and SupplierID=3

-- London'da yaşayan çalışanlar.
select * from Employees where City='London'

-- 1997 yılı siparişlerini gösteriniz
select * from Orders where YEAR(OrderDate)=1997 --yıl
select * from Orders where MONTH(OrderDate)=05 --ay
select * from Orders where DAY(OrderDate)=15 --gün

-- NANCY isimli çalışanın adresi nedir?
select FirstName,LastName Address from Employees where FirstName='NANCY'

-- null için is null, null olmayan için is not null diyoruz
select * from Customers where Region is null
select * from Customers where Fax is not null

-- Gönderilmemiş siparişlerin listesi?
select * from Orders where ShippedDate is null

-- Arasında ifadesi nedir?
-- stokta 10 ile 30 arasında bulunan ürünlerin listesini yazınız.
select * from Products where UnitsInStock>10 and UnitsInStock<30  --1. kullanım şekli
select * from Products where UnitsInStock between 10 and 30       --2. kullanım şekli

-- CompanyName k ile o arasındakileri listeleyiniz.
select * from Customers where CompanyName between 'k' and 'o'

-- Veya ifadesi nedir?
-- kategori id'si 3,5,8 olan ürünleri gösteriniz.
select * from Products where CategoryID=3 or CategoryID=5 or CategoryID=8  --1. kullanım şekli
select * from Products where CategoryID in (3,5,8)   --2. kullanım şekli

-- 2,3,4 nolu çalışanların 1997 yılında almış oldukları siparişler?
select * from Orders where EmployeeID in (2,3,4) and YEAR(OrderDate)=1997

-- Like : belirli bir şablona göre verilerin filtrelenmesi için kullanılır.
-- Like'ın özel karakteri % karakteridir.
-- Like, where kriter yapısı ile birlikte kullanılır.
-- Like her zaman where ifadesinin sağında olur.


-- sadece ismi k harfi ile naşlayanları göster.
select * from Customers where CompanyName like 'k%'
-- % , sonrası beni bağlamaz. :) anlamındadır.

-- ismi k harfi ile bitenler
select * from Customers where CompanyName like '%k'
-- % , öncesi beni bağlamaz. :) anlamındadır.

-- isminde k harfi olanları göster
select * from Customers where CompanyName like '%k%'

-- belirsiz demek alt tire demektir _
-- ilk harfi belirsiz, ikinci harfi e olan companyName leri göster
select * from Customers where CompanyName like '_e%'

-- ilk harfi belirsiz olan ikinci harfi e olan, son harfi s olan
select * from Customers where CompanyName like '_e%s'

-- [^x] : değillerde bu ifade kullanılır.
-- ilk harfi belirsiz ikinci harfi e olan, son  harfi s olmayan
select * from Customers where CompanyName like '_e%[^s]'

-- ilk harfi l ve r olan şirketleri göster
select * from Customers where CompanyName like '[lr]%'

-- ilk harfi l ve r arasında olanları göster
select * from Customers where CompanyName like '[l-r]%'


-- AGGREGATE FONKSIYONLAR
-- Sorgu sonucuna bakarak işlem yapabilen fonksiyonlardır.
-- Select'ten hemen sonra yazılırlar.
-- => Count - Sum - Avg - Min - Max

-- Count : satırları sayar.
-- eğer sütun ismi verirsek değeri null olanları saymaz.

-- Kaç çeşit ürünüm vardır?
select COUNT(*) from Products

-- Kaç tane sipariş almışım.
select COUNT(OrderID) from Orders

-- Kaç sipariş gitmemiş?
select COUNT(*)-COUNT(ShippedDate) from Orders


-- Sum : Toplamı gösterir.
-- Hücre içindeki değerlere müdahale ediyo yani onları topluyor.

-- Stoktaki ürünlerin toplamı kaçtır?
select SUM(UnitsInStock) from Products

-- Ürünlerin birim fiyatı toplamı kaçtır?
select SUM(UnitPrice) FROM Products


-- Avg : Ortalama alır.

-- Üürnlerimizin fiyatlarının ortalaması kaçtır?
select AVG(UnitPrice) from Products

-- Max ve Min : maksimum , minumum alır.

-- En pahalı ürün?
select MAX(UnitPrice) from Products

-- En ucuz ürün?
select MIN(UnitPrice) from Products

-- Categori id'si 3 olan kaç çeşit ürünümüz vardır?
select COUNT(*) from Products where CategoryID=3

-- 2 nolu çalışanımın almış olduğu sipariş sayısı nedir?
select COUNT(*) from Orders where EmployeeID=2

-- Case ve Order by
-- Case : okunan kolondaki bilgiye göre farklı değerler ortaya çıkarmayı sağlayan yapıdır.


-- ekranda firstname ,lastname yazsın ve ünvanları türkçe olarak değişsin.
 select FirstName,LastName,TitleOfCourtesy, Unvan=case TitleOfCourtesy
 when 'Ms.' then 'Bayan'
 when 'Dr.' then 'Doktor'
 when 'Mr.' then 'Bay'
 else 'Sayın'
 end from Employees

 -- Order by => sıralamak.

 -- Küçükten büyüğe sıralamak için asc (varsayılan)
 -- Büyükten küçüğe sıralamak için desc

 -- Ürün fiyatlarını sırala. defoult olarak küçükten büyüğe sıralayacak asc ifadesini kullansakta kullanmasakta
 select * from Products order by UnitPrice

 -- Ürün fiyatlarını büyükten küçüğe sırala.
 select * from Products order by UnitPrice desc

 -- Group by : sorgularımızı gruplamaya yardımcı olur.
 -- group by, where'den sonra yazılır.

 -- 1 nolu çalışanın almış olduğu sipariş sayısı?
 select COUNT(*) from Orders where EmployeeID=1

 -- her çalışanın toplamda almış olduğu sipariş sayıları kaçtır?
 select COUNT(*) from Orders group by EmployeeID

 -- kargo firmaları kaç tane sipariş almıştır?
 select shipVia,COUNT(*) from Orders group by ShipVia

 -- hangi katagoride kaç ürün olduğunu gösteriniz?
 select CategoryID, COUNT(*) from Products group by CategoryID

 -- hangi ülke ne kadar satış yapılmış?
 select ShipCountry, COUNT(*) from Orders group by ShipCountry

 -- nakliye şirketlerine toplam ne kadar ödenmiştir?
 select ShipVia, SUM(freight) from Orders group by ShipVia order by SUM(Freight) desc

 -- Müşterilere 1997 yılında kaç sipariş verilmiştir?
 select CustomerID,COUNT(*) from Orders where YEAR(OrderDate)=1997 group by CustomerID

 -- Kategorilerdeki stok miktarları?
 select CategoryID,COUNT(UnitsInStock)  from Products group by CategoryID

 -- Siparişlerden ne kadar kazanılmış?Büyükten küçüğe sırala
 select * from [Order Details]

 -- 1. kullanım
 select OrderID,SUM(UnitPrice*Quantity) from [Order Details] group by OrderID order by SUM(UnitPrice*Quantity) desc

 -- 2. kullanım
 select OrderID,SUM(UnitPrice*Quantity) as hesap from [Order Details] group by OrderID order by hesap desc

 -- çalışanların kaçı bay, kaçı bayan, kaçı doktor?
 select TitleOfCourtesy,COUNT(*) from Employees group by TitleOfCourtesy

 --JOINLER
 -- Bazen 2 yada daha fazla tablodan veri çekmemiz gerekebilir.
 -- Yani join tabloları birleştirmeye yarıyor.

 -- siparişler ve sipariş detaylarını birleştir.
 select * from Orders
 select * from [Order Details]

 select * from Orders join [Order Details] on Orders.OrderID=[Order Details].OrderID

 -- ürünler  ile kategorileri birleştir.
 select * from Categories join Products on Categories.CategoryID=Products.CategoryID

 -- kategorilerdeki ürünlerin sayısını gösteriniz?
 select Categories.CategoryName,COUNT(*) as urunsayisi from Categories join Products on Categories.CategoryID=Products.CategoryID group by Categories.CategoryName

 -- Çalışanların aldığı siparişlerin sayısını gösteriniz?
 select Employees.FirstName,COUNT(*) from Employees join Orders on Employees.EmployeeID=Orders.EmployeeID group by Employees.FirstName

 -- Nakliye şirketlerine ne kadar ödeneceğini listeleyiniz?
 select Shippers.CompanyName,SUM(Freight) from Orders join Shippers on Orders.ShipVia=Shippers.ShipperID group by Shippers.CompanyName

 -- Kategorilerden yapılan satış sayısını çıkarınız.
 select * from Categories join Products on Categories.CategoryID=Products.CategoryID join
 [Order Details] on Products.ProductID=[Order Details].ProductID join Orders on [Order Details].OrderID=Orders.OrderID

 -- Müşterilerim hangi ürünleri almış?
 -- distinct : benzer komutları yok eder.select'ten sonra yazılır.
 select distinct Customers.CompanyName,Products.ProductName from Customers join Orders on Customers.CustomerID=Orders.CustomerID
 join [Order Details] on orders.OrderID=[Order Details].OrderID join Products on [Order Details].ProductID=Products.ProductID


 -- ürünlerinden ne kadar para kazanmış?büyükten küçüğe sırala
 select Products.ProductName, SUM([Order Details].UnitPrice*[Order Details].Quantity) as Kazanç from Products join
 [Order Details] on Products.ProductID=[Order Details].ProductID group by Products.ProductName order by Kazanç desc

 -- en değerli 3 müşterime tebrik kartı gönderelim?
 -- top : select ifadesinden hemen sonra kullanılır.
 select top 3 Customers.CompanyName, SUM([Order Details].UnitPrice*[Order Details].Quantity)
 as Kazanç from Customers join Orders on Customers.CustomerID=Orders.CustomerID join
 [Order Details] on Orders.OrderID=[Order Details].OrderID group by Customers.CompanyName
 order by Kazanç asc

 -- çalışanlarıma prim ödeyeceğim
 -- prim ödemem gereken ilk 5 çalışan
 -- 1. yazılış şekli
 select top 5 Employees.FirstName, SUM([Order Details].UnitPrice*[Order Details].Quantity) as Kazanç from Employees
 join Orders on Employees.EmployeeID=Orders.EmployeeID join [Order Details] on Orders.
 OrderID=[Order Details].OrderID group by Employees.FirstName order by Kazanç desc

 -- 2. yazılış şekli (kısaltılmış)
 select top 5 e.FirstName, SUM(od.UnitPrice*od.Quantity) as Kazanç from Employees as e
 join Orders as o on e.EmployeeID=o.EmployeeID join [Order Details] as od on o.
 OrderID=od.OrderID group by e.FirstName order by Kazanç desc

 -- hangi çalışan hangi çalışana bağlıdır?
 select e.EmployeeID,e.FirstName,em.FirstName from Employees as e join Employees as em on e.EmployeeID=em.ReportsTo

 -- left join : birleşmenin solundaki null değeri dikkate alarak işlem yapar.
  select e.EmployeeID,e.FirstName,em.FirstName from Employees as e left join Employees as em on e.EmployeeID=em.ReportsTo

 -- right join : birleşmenin sağındaki null değeri dikkate alarak işlem yapar.
  select e.EmployeeID,e.FirstName,em.FirstName from Employees as e right join Employees as em on e.EmployeeID=em.ReportsTo

  -- full outer join : her iki taraftan null'u ekler
  select e.EmployeeID,e.FirstName,em.FirstName from Employees as e full outer join Employees as em on e.EmployeeID=em.ReportsTo

  -- müşterilerimin aldığı siparişlerin sayısı?
  select c.CompanyName,COUNT(o.OrderID) as SiparişSayısı from Customers as c join Orders as
  o on c.CustomerID=o.CustomerID group by c.CompanyName order by SiparişSayısı desc

Konunun detaylı anlatımını buradan görebilirsiniz.

17 Nisan 2016 Pazar

OOP_Nesne_Yönelimli_Programlama_kısa notlarım_1

abstract: Özet sınıf
Özet Sınıftan (ata sınıf) bir nesne yaratılamaz.
Özet sınıf içerisinde metotlar imza şeklinde oluşturulur ve özet sınıfı miras alan sınıflar ilgili metotların gövdelerini tanımlamakla yükümlüdür.

Örn:
abstract public void Giris();  //metot'un imzasını bu şekilde yazıyoruz.

Miras alan sınıfta kullanımı:
public override void Giris(){.......};   //override ile ezdik ve mutlaka public olarak kullanmalıyız.

interface: İnterface'lerde tanımlanan metotlarda asla gövde olmaz.Ancak fonksiyonun imzası olur.abstract sınıflarda olduğu gibi miras alan sınıf interface'i kullanırken metodun gövdesini tanımlamakla yükümlüdür.
İnterface'te metotlar daima public'tir.

abstract'tan ve interface'ten nesne yaratılmaz.
Ancak bir class'a miras olsun diye varlar.
abstract'ta gövdeli metotlar olabilirken interface'te gövdeli metot olamaz.
Abstract'ta değişken ve field tanımlayabiliyorken interface'de gövdeli metot olmaz.
interface'te field tanımlayamıyoruz ama property tanımlayabiliyoruz.

cunstructors (Yapıcı Metodlar):Görevi oluşturulan nesneyi ilk kullanıma hazırlamasıdır.(Nesne yaratmak için varlar)

Özellikleri:
Kendi sınıfı ile aynı isme sahip olamsı gerekir.
Bir dönüş tipi bulunmaz
Başka sınıflar tarafından kullanılabilmesi için erişiminin public olması gerekir.
Yapılandırıcılar aşırı yüklenebilir.
Eğer biz yapıcı bir metot tanımlamadıysak derleyici insiyatifimiz dışında kodumuza müdahale ederek yapıcı bir metot kendisi yaratır.
Yapıcı metotlar parametre alabilirler ama bir dönüş tipi olmaz.


Static Kavramı:static tanımlanan her şey public olmak kaydı ile doğrudan sınıfın adı ile çağrılabilir.
Bir şey static değilse o nesneye bağlı demektir.Yani o üyeyi kullanmak için bir nesne yaratmamız gerekir.

Sınıf:Bir veri tipini modellemek için kullandığımız yapılara sınıf denir.

Sınıf Üyeleri: field, property,metot.

Nesneler(object):Sınıflar bir veri modelidir, nesneler ise bu veri modeline bağlı kalarak verileri tutan model içerisinde tanımlanmış metotları ve özellikleri kullanmamızı sağlayan modele  ait bir referanstır.
Nesneler referans tipi değişkenler gurubuna girerler.

Fields: Field'lar sınıf içerisinde veri barındıran alanlardır.
field'lar referans yada değer tiplerinden herhangi birisi olabilirler.

Örn:Başka bir sınıfa referans gösteren nesnelerde bir sınıf içerisinde field olarak kullanılabilir.
Eğer field'lara değer atamaz iseniz değişkenler default değerlerine set edilir.

Metotlar:Verileri kullanarak belirli işlemleri yapan yapılardır.
metot'lar parametre olarak bazı değerler alabilirler ve gerçekleştirdiği işlemler sonucunda bazı değerleri de geri döndürürler.
Dönüş işlemlerini ise return kelimesi ile yaparlar.


Konun detaylı anlatımı için buraya tıklayarak ders videolarını izleyebilirsiniz.









27 Ekim 2015 Salı

Karakalem


Tevkifat hesaplama

Hep unutuyorum :) hatırlamak için bir örnek.

İşlem tutarı : 1.000 TL

Hesaplanan KDV :                     (1.000x18)                       180 TL
Tevkifat oranı       :                    7/10 
 
Tevkif edilecek KDV :                   (180×7/10)                     126 TL
Tevkifat dahil toplam tutar :        (1.000+180)                 1.180 TL
Tevkifat hariç toplam tutar :        (1.000+180-126)          1.054 TL

15 Eylül 2015 Salı

SCRUM Notlarım

Scrum:İnsanların mümkün olan en yüksek değere sahip ürünleri üretken ve yaratıcı bir şekilde geliştirirken, karmaşık ve adaptasyona açık sorunları ele alabildikleri bir çerçeve.

Scrum, bir ürün geliştirme tekniği veya süreci değildir; içerisinde çeşitli süreçleri ve teknikleri kullanabileceğiniz bir çerçevedir.

Scrum Ana Prensipleri:
Süreçler ve araçlardan ziyade bireyler ve etkileşime,
Kapsamlı dokumantasyondan ziyade çalışan yazılıma,
Sözleşme pazarlıklarından ziyade müşteri ile işbirliğine,
Bir plana bağlı kalmaktan ziyade değişime karşılık vermeye önem verir.

***Çalışan yazılım son kullanıcının kullandığı bütün yazılım testlerinden geçmiş yazılım.

Scrum Teorisi: Scrumın temelinde deneysel süreç kontrol teorisi (veya deneycilik) yer alır. Deneycilik, bilginin deneyimden ve bilinen şeylere dayanarak alınan kararlardan meydana geldiğini ileri sürer. Scrum, öngörülebilirliği en iyi seviyeye çıkarmak ve riski kontrol etmek için iterasyonlu ve artımlı (incremental) bir yaklaşım kullanır. Her deneysel süreç kontrol uygulaması üç ayakla desteklenir: şeffaflık, gözlem ve adaptasyon. 

Deneysel süreçler 3 temel üzerine kuruludur.
Şeffaflık: Sürecin her aşamasında bütün çıktıların herkes tarafından görülebilir olması.
Denetim: Gözden geçirme toplantıları gibi kontroller sağlaması.
Adaptasyon: Kontrol toplantıları sonrasında iyileştirme yaparak tekrar adapte olma.

Scrum Takımı (Scrum Team):

Scrum Takımı:Geliştirme takımı. (Yazılımcı, analist, test mühendisi gibi ürünü geliştiren ekibi içerir.
Ürün Sahibi (Product Owner):Ürün Sahibi, Geliştirme Takımının işini ve ürünün değerini en üst seviyeye çıkarmakla sorumludur.
Geliştirme Takımı (Development Team) :Müşteriyi temsil eden kişi, müşteri gereksinimini en iyi bilen, ürünün vizyonunu en iyi bilen kişi.
Scrum Master:Süreç yöneticisi. Toplantıların doğru zamanda yapılmasını sağlayan, sürecin doğru uygulanmasına yönlendiren, mentorluk, koçluk yapan kişi. Bu kişi yazılımcı olabilir de, olmayabilir de.

Ürün İş Listesi (Product Backlog)

user stories => Kullanıcı hikayeleri
* functional requirements => Fonksiyonel istekler, gereksinimler
nonfunctional requirements =>=> Fonksiyonel olmayan istekler, gereksinimler
bugs => Hatalar
various issues => Çeşitli işler

Geleneksel yaklaşımda bir gereksinim dokumanı vardır. Scrumda bu yok.
Product backlog dokumanı tüm gereksinimleri, iyileştirmeleri, bugları içeren önem sırasına göre sıralanmış bir listedir.

Müşterinin değişiklik istekleri buraya yansıtılır. Müşteri önceliklendirmesi durumunda ön sıralara iş kaydırılabilir.

Product Backlog sürekli olarak yeni ihtiyaçlarla beslenir. Bu beslenmenin temel nedenleri ürüne yeni ihtiyaçların eklenmesi veya release(yayın) sonucunda ortaya çıkan eksikliklerdir. Bu eksikler sonraki sprintlerde çözülmeyi bekler.

Product Backlog elemanları belirlenirken belirli özellikleri barındırıyor olması gerekir. Bu özellikler scrum süreçleri içerisinde “INVEST” olarak adlandırılan maddelerdir.

Independent: Product Backlog listesindeki her bir eleman birbirinden bağımsız olmalıdır. Örneğin A elemanı B elemanı başlamadan başlayamıyor olmamalıdır. Eğer iki elemanın birbiriyle çakıştığını düşünüyorsanız onları tek bir elemanda birleştirmeniz önerilir.

Negotiable: Sprintler sırasında Product Backlog elemanları değiştirilebilir olmalıdır.

Valuable: Product Backlog elemanları müşteri merkezli olmalıdır. Ortaya çıkan özellik müşteriyi memnun edecek olmalıdır.

Estimable: Product Backlog elemanları tahmin edilebilir olmalıdır. Yani herkes elemanın sınırlarını anlamalıdır. Böylece planlama daha kolay olacaktır.

Small: Product Backlog elemanları olabildiğince küçük olmalıdır. Kısacası bir eleman sprintin büyük bölümünü kaplamamalıdır.

Testable: Eleman test edilebilir olmalıdır. Yani elemanın müşterinin onayından geçmesini sağlayacak bütün özellikleri belirtilmiş olmalıdır. Bu genellikle “Acceptance Criteria” dediğimiz “Kabul Kriterleri” listesinin kaliteli hazırlanmış olmasıyla alakalıdır.




Sprint İş Listesi (Sprint Backlog)

(1) Sprint için seçilen Ürün İş Listesi kalemlerini ve (2) Ürün Parçasını teslim etme ve Sprint Hedefine ulaşma planını içerir. Sprint İş Listesi, Ürün Parçasında hangi fonksiyonların olacağına ve bu fonksiyonları “Bitti” tanımına uygun bir Ürün Parçasına dönüştürmek için gerekli olan işe dair bir öngörüdür.

Scrum yöntemi ile yönetilen projeler “sprint” denilen fazlara ayrılır. Herbir “sprint”in süresi genellikle (en fazla) 30 gündür. İdeal olan proje boyunca boyunca tüm “sprint”ler aynı süreli olur. Proje takımı (scrum team), proje yöneticisi (scrum master) ile her sprint başlangıcında masaya oturarak yeni “sprint” dahilinde geliştirilecek özellik ve fonksiyonları belirler. Bu süreçte seçilen fonksiyon ve özellikler daha önceden oluşturulmuş ve sürekli güncellenen Product Backlog listesindeki sıra ile en öncelikli olanlardır. Hiçbir zaman önceliği düşük bir özellik veya fonskyon önceliği yüksek bir özellik veya fonskyiondan önce geliştirilemez. Bu bağlamda bazı “sprint”lerde proje takımı, Product Backlog’dan 4 eleman, bazı sprint’lerde 25 eleman seçebilir. Seçilen özellik ve fonksiyonlar Sprint Backlog denilen ikinci bir listeye aktarılır. Proje takımı bir sonraki sprint başlangıcına kadar bir daha Product Backlog’a bakmaz, o sprint dahilinde sadece ilgili Sprint Backlog listesine odaklanır.