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.