• 26-05-2010, 17:52:49
    #1
    Eposta Aktivasyonu Gerekmekte
    Derste işlediğimiz konu. Aldığım notları paylaşıyorum.

    Veritabanı kullanımı hakkında bilgi sahibi olmak isteyenlere faydası olacağına inanıyorum.


    T-SQL veritabanında nasıl veri alışverişi yapılacağının örneklerle anlatımı.

    ------------------------SELECT Sorgusu-(Veritabanındaki verileri Listeleme)--------------------

    SELECT * FROM Categories
    --Categories tablosundaki tüm kayıtları seç


    SELECT CategoriID, CategoriName FROM Categories
    --Categories tablosundaki CategoriID ve CategoriName alanlarındaki kayıtları seç


    SELECT * FROM [Order Details]
    --Order Details tablosundaki tüm kayıtları seç [] İçerisinde yazılmasının nedeni Order'ın SQL tarafında özel bir parametre olması, parantez içine alınca bu tabloya ait olduğunu belirtiyor


    SELECT OrderID, ProductID, (UnitPrice*Quantity*(1-Discount)) as ToplamTutar FROM [Order Details]
    --Order Details tablosundaki OrderID, ProductID ve UnitPrice'ın Quantity ile çarpımının 1'in Discount alanından çıkarılmasıyla çarpımının sonucunu ToplamTutar adında bir alan oluştur ve içine yaz


    SELECT * FROM Products WHERE ProductID=2 OR SupplierID=5
    Products tablosundan ProductID'si 2 olan veya SupplierID'si 5 olan/ları seç


    SELECT * FROM Products WHERE ProductID!=2
    --Products tablosundan ProductID'si 2 olmayanı/ları seç

    SELECT * FROM Products WHERE ProductID <> 3
    --Products tablosundan PruductID'si 3 olmayanı/ları seç


    SELECT * FROM Products WHERE ProductID < 3
    --Products tablosundan ProductID'si 3'ten küçük olanları seç (3 dahil değil)


    SELECT * FROM Products WHERE ProductID <= 3
    --Products tablosundan PruductID'si 3'ten küçük olanları seç (3 dahil)


    SELECT * FROM Products WHERE ProductID > 3
    --Products tablosundan ProductID'si 3'ten büyük olanları seç (3 dahil değil)


    SELECT * FROM Products WHERE ProductID >= 3
    --Products tablosundan PruductID'si 3'ten büyük olanları seç (3 dahil)


    SELECT * FROM Products WHERE ProductID between 15 AND 25
    --Products tablosundaki ProductID'si 15 ile 25 içerisinde olan tüm kayıtları seç (15 ve 25 dahil)


    SELECT * FROM Products WHERE ProductName LIKE '%Cha%'
    --Products tablosundaki ProductName alanındaki kayıtların içerisinde Cha olan tüm alanları seç


    SELECT * FROM Products WHERE ProductName LIKE '%en'
    --Products tablosundaki ProductName alanındaki kayıtların içerisinde sonu en ile biten tüm alanları seç


    SELECT * FROM Products WHERE ProductName LIKE '___i'
    --Product tablosundaki ProductName alanındaki kayıtların içerisinde dört harfli olan ve dördüncü karakteri i ile biten tüm kayıtları seç (Her _ bir karakter demek)


    SELECT * FROM Products WHERE ProductName NOT LIKE '%C%'
    --Product tablosundaki ProductName alanındaki kayıtların içerisinde C bulunmayan tüm kayıtları seça


    SELECT * FROM Products WHERE ProductName LIKE 'Cha[in]%'
    --Product tablosundaki ProductName alanındaki kayıtların içerisinde Cha ile başlayan ve dörtdüncü karakteri i yada n olan ve bundan sonraki karakterlerin olup olmaması önemli olmayan tüm kayıtları seç


    SELECT * FROM Products WHERE ProductName in('Chai','Chang')
    --Product tablosundaki ProductName içindeki Chai ve Chang yazılı tüm satırları seç


    SELECT * FROM Products WHERE ProductName LIKE '_A%[c]_[a-f]'
    --Product tablosundaki ProductName içindeki İlk karakteri önemli değil, ikincisi a olan, sonraki karakterlerden c'ye gelinceye kadar önemsiz olup, c'den sonra bir karakter daha olan ve sonraki karakteri a ile f arasında bir karakter olan, bundan sonra herhangi bir karakteri olmayan tüm kayıtları seç


    SELECT * FROM Employees WHERE Region is null
    --Employees tablosundaki Region alanı null olan tüm alanları seç


    SELECT * FROM Employees WHERE Region is not null
    --Employees tablosundaki Region alanı null olmayan tüm alanları seç


    SELECT FirstName + ' ' + LastName as Adi FROM Employees WHERE ReportsTo is null
    --Employees tablosundaki ReportsTo alanı null olan satırın/ların FirstName ve LastName 'ini Adi diye bir tabloya yaz


    SELECT * FROM Products Order by ProductName DESC
    --Products tablosundaki ProductNamealanındaki kayıtları alfabetik sıralamaya göre tersten başlayarak tümünü listele


    SELECT FirstName, LastName FROM Employees ORDER BY FirstName DESC, LastName ASC
    --Employees tablosundaki FirstName alanındaki kayıtları alfabetik sıralamaya göre tersten listele, eğer aynı değerle eklenmiş kayıt varsa O kayıtları LastName'e göre alfabetik olarak listele







    -----------Aggregate Functions--(İşlem sonucunu döndüren fonksiyonlar)------------------

    SELECT COUNT(*) FROM Products
    --Products tablosundaki toplam kayıt sayısını hesapla


    SELECT COUNT(Region) FROM Employees
    --Employees tablosunda Region alanındaki toplam kayıt sayısını hesapla (null olarak eklenen kayıtları saymaz)


    SELECT COUNT(*)-COUNT(Region) FROM Employees
    --Employees tablosundaki toplam kayıt sayısını hesapla ve Region alanındaki toplam kayıttan null olmayanların toplam sayısını çıkart (Yani Region alanındaki null olan alanların toplamını hesapla)


    SELECT SUM(Quantity) FROM [Order Details]
    --Order Details tablosundaki Quantity alanının içindeki verilerin değerini Toplamını döndürür (Matematiksel İşlem)


    SELECT AVG(Quantity) FROM [Order Details]
    --Order Details tablosundaki Quantity alanının içindeki verilerin değerlerinin toplamını alıp her kayıt başına düşen ortalamayı yazar (Matematiksel İşlem)


    SELECT MAX(Quantity) FROM [Order Details]
    --Order Details tablosundaki Quantity alanının içindeki verilerden en büyük değeri getir (Matematiksel işlem)


    SELECT MIN(Quantity) FROM [Order Details]
    --Order Details tablosundaki Quantity alanının içindeki verilerden en küçük değeri getir (Matematiksel işlem)


    SELECT Top 10 ProductName FROM Products
    --Products tablosundaki ProductName alanındaki kayıtlardan üstten 10 taneyi listele


    SELECT Top 10 ProductName FROM Products ORDER BY ProductName DESC
    --Products tablosundaki ProductName alanındaki kayıtlardan alttan 10 taneyi listele


    SELECT Top 10 percent ProductName FROM Products
    --Products tablosundaki ProductName alanındaki kayıtlardan toplam kayıtın %10'nunu üstten başlayarak listele


    SELECT RAND()
    --Her çağırılışta rastgele sayı üretir


    SELECT ROUND(236.34567,-1)
    --Sonuç 240.00000 Noktadan önceki kısımı alıp en yakına yuvarlar.(1-5 arası alta 6-0 arası üste yuvarlar) (-'de noktadan öncekileri +'da noktadan sonraki sayıları yuvarlar)


    SELECT LEN('Merhaba')
    --İçine aldığı değerin karakter uzunluğunu verir.Sonuç 7


    SELECT SIGN(-23456)
    --Sayının pozitif, negatif durumunu gösterir . Sonuç -1 döner. (negatif , 1 pozitif)[/PHP]





    Mysql 'dede hemen hemen aynıdır.
    Php ile nasıl kullanılacağına gelince;

    Örnek
    $sql = "SELECT * FROM Categories"; //Sql Sorgusu
    $query = mysql_query($sql) or die (mysql_error()); //Sorguyu çalıştır
    $assoc = mysql_fetch_assoc($query); //Değerleri al ve yaz
    Insert, Update, Delete konularını işledikten sonra, aldığım notları eklerim
  • 26-05-2010, 18:18:39
    #2
    Paylaşımın için teşekkürler
  • 27-05-2010, 08:21:31
    #3
    Üyeliği durduruldu
    ellerinize saglik
  • 27-05-2010, 08:48:53
    #4
    Bizim 2 yıllıktada böyle anlatan hoca olsa keşke
  • 27-05-2010, 18:08:51
    #5
    Eposta Aktivasyonu Gerekmekte
    Teşekkürler arkadaşlar.

    Bugünküler epey kompleksliydi
    SELECT OrderID, SUM(UnitPrice*Quantity*(1-Discount)) as SatisTutari FROM [Order Details] Group by OrderID
    --Order Details tablosundaki OrderID'si aynı olanları grupla ve benzer olanların UnitPrice*Quantity*(1-Discount) sonucunun toplamını SatisTutari adlı bir tabloda yaz




    SELECT OrderID, SUM(UnitPrice*Quantity*(1-Discount)) as SatisTutari FROM [Order Details] Group by OrderID having SUM(UnitPrice*Quantity*(1-Discount)) > 1000 ORDER BY SatisTutari
    --Order Details tablosundaki OrderID'si aynı olanları grupla, benzer olanların SUM(UnitPrice*Quantity*(1-Discount)) sonucunda toplamı 1000'den büyük olanları seç ve UnitPrice*Quantity*(1-Discount) sonucunun toplamını SatisTutari adlı bir tabloda küçükten büyüğe doğru yaz



    SELECT OrderID, OrderDate FROM Orders WHERE EmployeeID = 4 AND OrderDate between '1997/05/01' AND '2010/05/31'
    --Orders tablosundaki OrderID ve OrderDate alanlarını, EmployeeID'si 4 olan ve OrderDate'i 01/05/1997 ile 31/05/2010 arasında olanları göre yaz



    SELECT ShipVia, SUM(Freight) FROM Orders Group By ShipVia
    --Orders tablosundaki ShipVia alanından benzerleri grupla ve benzer olanların Freight alanlarını topla



    SELECT ProductName, UnitsInStock FROM Products WHERE SupplierID = 5
    --Products tablosundaki ProductName ve UnitsInStock alanlarını SupplierID'si 5'e eşit olana/lara göre seç




    SELECT O.CustomerID, SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)) as ToplamSatis FROM Orders as O inner Join [Order Details] as OD on O.OrderID = OD.OrderID GROUP BY O.CustomerID having O.CustomerID = 'frank'
    --Orders tablosundan O adında ve Order Details tablosunun OD adında bir referansını al. Orders tablosundaki CustomerID'si (O.CustomerID) benzer olanları grupla. CustomerID'si frank olan alanın/ların Order Details tablosundaki SUM(OD.UnitPrice*OD.Quantity*(1-OD.Discount)) alanların sonucunun toplamını al ve ToplamSatış adında bir tabloda tut



    Bunlarda açıklamasızlar (Bir ara yazarım açıklamasını)
    SELECT S.CompanyName, O.OrderID FROM Orders as O inner join Shippers as S on O.ShipVia = S.ShipperID
    SELECT C.CategoryName, P.ProductName FROM Categories as C inner join Products as P on P.CategoryID = C.CategoryID WHERE P.ProductID between 6 and 11
    SELECT C.CompanyName, O.OrderID FROM Customers as C inner join Orders as O on O.CustomerID = C.CustomerID
    SELECT E.FirstName, E.LastName, O.OrderID FROM Employees as E inner join Orders as O on  E.EmployeeID = O.EmployeeID
    SELECT E.FirstName, E.LastName, COUNT(O.OrderID) FROM Employees as E inner join Orders as O on  E.EmployeeID = O.EmployeeID GROUP BY E.FirstName, E.LastName
    SELECT C.CategoryName, COUNT(P.ProductName) FROM Categories as C inner join Products as P on P.CategoryID = C.CategoryID GROUP BY C.CategoryName
    SELECT E.FirstName + ' ' + E.LastName as Çalışan, EE.FirstName + ' ' +  EE.LastName as Amir FROM Employees as E left outer join Employees EE on  E.ReportsTo = EE.EmployeeID
    Bu en komplekslisi
    SELECT Customers.CompanyName, Products.ProductName, Employees.FirstName + ' ' + Employees.LastName, Suppliers.CompanyName FROM Orders 
    inner join Customers on Customers.CustomerID = Orders.CustomerID 
    inner join Employees on Employees.EmployeeID = Orders.EmployeeID
    inner join [Order Details] as OD on OD.OrderID = Orders.OrderID 
    inner join Products on OD.ProductID = Products.ProductID 
    inner join Suppliers on Products.SupplierID = Suppliers.SupplierID