© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Slides:



Advertisements
Benzer bir sunumlar
VTYS Öğr. Gör. Engin DUTAR
Advertisements

Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
III.Oturum: SQL ile Verileri İşlemek
SQL Structured Query Language
Verileri gruplayarak analiz
KARMAŞIK SORGULAR.
SQL (Structured Query Language)
SQL Structured Query Language (Yapısal sorgulama dili)
En ucuzundan en pahalısına doğru sıralanmış olarak “Cep Telefonları” kategorisindeki tüm ürünlerin isimleri “Spor” kategorisinde ürünleri listelenen “İstanbul”
Karmaşık (İç içe) SELECT Sorguları
SQL KOMUTLARI.
SQL Komutlar 2 Sibel SOMYÜREK.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL de Değişken Tanımlama
Veri Tabanı I.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
SQL Komutlar 4 Fahri YILMAZ.
Veritabanı Yönetim Sistemleri-I
VERİ TABANI ve YÖNETİMİ
Alt Sorgular Veritabanı 2.
5 Sorgulama İşlemleri Veritabanı 1.
Veri Tabanı Yönetim Sistemleri
Tek Tablo İçinde Sorgulamalar
Fonksiyonlar Hafta 4.
Veri Tabanı Yönetim Sistemleri
BÖLÜM 6 SQL SERVER KOMUTLARI.
10 Gruplandırarak Sorgulama
SQL (STRUCTURED QUERY LANGUAGE)
VTYS Öğr. Gör. Engin DUTAR
11 ekim 2011 VTYS –II Dersi. Kalıp İfadelerle Sorgu (Pattern) Eğer bir sözel verinin sadece belli kriterlere uyanlarını seçeceksek sütun_adı LIKE kalıp.
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
SQL Komutlar 3 Sibel SOMYÜREK.
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
VTYS Öğr. Gör. Engin DUTAR
VERİTABANI ve YÖNETİMİ
SQL’e Giriş ve SELECT Komutu
SQL de Değişken Tanımlama
ÇOKLU TABLOLAR.
MySQL Operatörleri ve Fonksiyonları
SQL SERVER 2008 Yücel YILDIRIM.
Veritabanı Yönetim Sistemleri-I
SQL Komutları (2) Uzm. Murat YAZICI.
Hafta 8.
SQL’ e Giriş Uzm. Murat YAZICI.
ADRES İ NDEN ÖRNEK VER İ TABANLARINI İ ND İ R İ N İ Z SQL.
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
Yapısal Sorgulama Dili SQL Hafta 7. TEKRARLI SATIRLARI ÖNLEMEK  DISTINCT komutu ile sorgu sonucunda birden fazla kayıt aynı verileri içeriyorsa tekrarlı.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
 Bazı Veri tabanları sadece 1 tablodan oluşmaz.  Bunun sebebi genellikle veri tekrarını önlemektir.  Bu şekilde oluşturulmuş veri tabanlarında, tablolardaki.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
İNDEKS.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
14.DERS Örnekler, Sorular BUKET DOĞAN.
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SQL GROUP BY HAVING.
SQL Server - Triggers.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL Server - Stored Procedures
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-4-DML
SQL VIEW.
Sunum transkripti:

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi HAFTA 3 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

GRUPLAMA FONKSİYONLARI Gruplama (aggregate) fonksiyonları bir dizi değer üzerinde hesaplama yaparlar ve bir sonuç değer döndürürler. Toplama ya da gruplama fonksiyonları olarak adlandırabileceğimiz bu fonksiyonlar genellikle GROUP BY deyimi ile kullanılırlar. Gruplama fonksiyonları aşağıdaki ifadeler içinde kullanılabilirler. ransact-SQL programlama dilinde şu aggregate fonksiyonları kullanılır:         AVG: ortalama değer         COUNT: kayıt sayısı         MAX: en büyük değer         MIN:en küçük değer         SUM:toplam değer         STDEV:standart sapma © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

GRUPLAMA FONKSİYONLAR…HAVING Kümeleme fonksiyonlarını kullanırken kısıt girilmesi gerektiğinde WHERE yantümcesini kullanamayız. HAVING yantümcesi, GROUP BY ile elde edilecek satırları kısıtlamak için kullanılır. İşlev olarak WHERE yantümcesi gibi çalışır fakat WHERE yantümcesi gruplama işlemlerinden önce, HAVING yantümcesi ise GROUP BY'dan sonra uygulanır © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi GRUPLAMA ÖRNEK Bir SatisID içersinde birden fazla ürün siparişi verilebilmektedir. Tutar değeri BirimFiyatı ile Miktar çarpımından oluşmaktadır. SELECT SatisID,UrunID, BirimFiyati*Miktar as Tutar FROM SatisDetaylari Her Siparişteki Toplam değeri hesaplamak için gereken sorgu: SELECT SatisID, SUM (BirimFiyati*Miktar) as Tutar FROM SatisDetaylari GROUP BY SatisID SELECT SatisID, SUM (BirimFiyati*Miktar) as Tutar FROM SatisDetaylari GROUP BY SatisID HAVING SUM (BirimFiyati*Miktar)>=7000 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Örnekler SELECT [KategoriID],AVG ([BirimFiyati]) FROM Urunler GROUP BY [KategoriID] SELECT [KategoriID],AVG ([BirimFiyati]) FROM Urunler GROUP BY [KategoriID] HAVING [KategoriID]=3 SELECT [KategoriID],AVG ([BirimFiyati]) FROM Urunler GROUP BY [KategoriID] HAVING AVG(BirimFiyati)>=30 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Örnekler SELECT [KategoriID],COUNT (*) AS Kayit_Sayisi FROM Urunler GROUP BY [KategoriID] SELECT [KategoriID],COUNT (*) AS Kayit_Sayisi FROM Urunler GROUP BY [KategoriID] HAVING COUNT(*)>=10 -- Her kategoride Fiyatı 10 liradan fazla olan kaç tane ürün var SELECT [KategoriID],COUNT (*) AS Kayit_Sayisi FROM Urunler WHERE BirimFiyati>=10 GROUP BY [KategoriID] © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi JOIN TÜRLERİ Inner Join Inner Join işlemi ile birleştirilecek olan tabloların sütunlarının içerdiği veriler kontrol edilerek kesişim kümesi alınıyor. Aynı işlem “where” komutu kullanılarak da gerçekleştirilebilir. Inner join yerine join yazmak da yeterlidir. Kullanımı: SELECT kolon_ad(lar)ı FROM tablo_1 INNER JOIN tablo_2 ON tablo_1.ortak_kolon=tablo_2.ortak_kolon ; © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi JOIN TÜRLERİ LEFT JOIN:Bu seçenekte ifadenin solunda ismi yazan tablodaki tüm satırlar listelenir, sağ taraftaki tabloya ait kolonlar ise null olarak döner. RIGHT JOIN: Bu seçenekte ifadenin sağında ismi yazan tablodaki tüm satırlar listelenir, sol taraftaki tabloya ait kolonlar ise null olarak döner © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi JOIN TÜRLERİ FULL OUTER JOIN:Bu seçenekte hem sağ hem de soldaki tablonun tüm satırları listelenir. Her iki tabloda da karşılığı olmayan satırlar null olarak döner. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi ÖRNEK SELECT u.[KategoriID], [KategoriAdi] ,[UrunAdi], ([BirimFiyati]) FROM Urunler u INNER JOIN [Kategoriler] k ON k.[KategoriID]= u.[KategoriID] SELECT * FROM Urunler u,[Kategoriler] k WHERE k.[KategoriID]= u.[KategoriID] © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi JOIN VE GROUP BY SELECT u.[KategoriID], [KategoriAdi] ,[UrunAdi], AVG([BirimFiyati]) FROM Urunler u INNER JOIN [Kategoriler] k ON k.[KategoriID]= u.[KategoriID] GROUP BY u.[KategoriID], [KategoriAdi] ,[UrunAdi] © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi JOIN VE GROUP BY Müşterilerin ID ve isim değerleri ile birlikte toplam satış değerlerinin gözükmesini sağlayan sorgu SELECT s.SatisID, s.MusteriId,m.MusteriAdi, SUM (BirimFiyati*Miktar) as Tutar FROM SatisDetaylari AS sd INNER JOIN Satislar as s ON sd.SatisID=s.SatisID INNER JOIN Musteriler AS m ON s.MusteriID=s.MusteriID GROUP BY s.SatisID ,s.MusteriID,m.MusteriAdi © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi SELECT LIKE SELECT kolon_adı(ları) FROM tablo_adı WHERE kolan_adı LIKE desen (pattern) LIKE Operatörü Bir veri kümesi içerisinde belirtiğimiz değere benzeyen verilerin olup olmadığını kontrol etmek için kullanılır. Metin alanlarda kullanılır. Joker Karakterler Anlamı % Birden fazla harf ya da rakamın yerini tutar. _ Bir tek harf veya rakamın yerini tutar. [HARF] Herhangi bir harf yerine gelebilecek harfleri belirtir. [^HARF] Herhangi bir harf yerine gelemeyecek harfleri belirtir. [A-Z] A ile Z arasındaki harfleri belirtir. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi SELECT LIKE SELECT * FROM Urunler WHERE [UrunAdi] LIKE 'A%‘ EŞİTTİR YOK, TEK TIRNAKLA KULLANILIR SELECT * FROM Urunler WHERE [UrunAdi] LIKE '%DE%‘ SELECT * FROM Musteriler WHERE MusteriAdi LIKE '[a-d]%’ SELECT * FROM Musteriler WHERE MusteriAdi LIKE '_an%‘ SELECT * FROM Musteriler WHERE MusteriAdi LIKE '[^a-r]%' © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi VIEW NEDİR View'ler bir veya birden fazla tablodan istenilen verilerin bir arada sunulmasını sağlayan tanımlanmış sorgulardır Sanal bir tablo olarak da düşünebiliriz. Aynı tablolar gibi satırlar ve sütunları içerir. Bir ya da birkaç tablodan seçtiğimiz verileri okuyabiliriz hatta bazı durumlarda veri girişi bile yapabiliriz. Peki neden “sanal” kelimesini kullanıyoruz? Çünkü View'ler veri saklamazlar sadece istenen veriye ulaşılacak yolu kullanarak verileri kullanıcıya sunarlar. Çok sık olarak sorulan karmaşık soruları bir view yapısı içinde saklayarak, daha sonra aynı tip sorgulamalar için bu view yapısını kullanarak daha basit ifadeler kullanmakta olasıdır. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi VIEW AVANTAJLARI Birden çok tablo ile çalışırken gereksiz karmaşadan(özellikle her seferinde uzun bir SQL sorgu cümlesi yazmakla uğraşmaktan) kurtulmak. Veri ulaşım performansını arttırmak. Veri erişimini sınırlamak ve kontrol altında tutmak. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi VIEW KULLANIMI View’e veri eklersek veri nereye yazılır? View’in bağlı olduğu tabloya yazılır. Oluşturulan View de; Bir View farklı tablolardan gelen aynı isimlere sahip farklı sütunları içerebilir. View’lerdeki sütunlar aritmetik ifadelere sahip olabilir © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi VIEW View’in Oluşturulması CREATE VIEW viewAdı AS sorgu SatisDetaylari tablosundan, tutar değerini de içeren vw_SatisDetaylari isminde view oluşturunuz   viewin içindeki sorguyu yazalım. SELECT * , miktar*Birimfiyati as Tutar FROM SatisDetaylari As ile hesaplanan veya oluşturulan alanlara isim verilebilir © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi VIEW Hesapla elde ettiğim kolonun adı yok. Kolona Tutar ismini verelim. SELECT * , miktar*Birimfiyati as Tutar FROM SatisDetaylari Yukarıdaki sorgudan view oluşturalım.   CREATE VIEW vw_SatisDetay AS © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi VIEW Vw_SiparisDetay viewini sorgulayarak, 10077 nolu siparişte bulunan ürünlerin toplam miktarını ve toplan tutarını veren sorgu yazınız. Vw_SiparisDetay viewini sorgulayarak, 11077 nolu siparişte bulunan ürünlerin toplam miktarını ve toplan tutarını veren sorgu yazınız.   SELECT SatisID,sum(miktar) as ToplamMiktar, sum(Tutar) as ToplamTutar FROM vw_SatisDetay group by SatisID SELECT SatisID,sum(miktar) as ToplamMiktar, sum(Tutar) as ToplamTutar FROM vw_SatisDetay group by HAVING SatisId=11077 SELECT count(*) FROM vw_SatisDetay © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi IN KULLANIMI SELECT * FROM [Musteriler] WHERE Sehir IN ('Berlin','London') Berlin ve Londradaki müşterilerin Satış bilgilerini görüntüleyen sorguyu yazınız SELECT * FROM Satislar WHERE MusteriID IN (SELECT MusteriID FROM [Musteriler] WHERE Sehir IN ('Berlin','London')) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi IN KULLANIMINDA SORGU use Northwind SELECT * FROM Urunler WHERE [BirimFiyati] IN (SELECT MIN([BirimFiyati]) FROM Urunler GROUP BY [KategoriID]) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi Berlin ve Londradaki müşterilerin Satış Detaylarını bilgilerini görüntüleyen sorguyu yazınız SELECT * FROM SatisDetaylari WHERE SatisID IN ( SELECT SatisID FROM Satislar WHERE MusteriID IN (SELECT MusteriID FROM [Musteriler] WHERE Sehir IN ('Berlin','London'))) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi CREATE TABLE [dbo].[Urunler2]( [UrunID] [int] IDENTITY(1,1) NOT NULL, [UrunAdi] [nvarchar](40) NOT NULL, [TedarikciID] [int] NULL, [KategoriID] [int] NULL, [BirimdekiMiktar] [nvarchar](20) NULL, [BirimFiyati] [money] NULL CONSTRAINT [DF_Urunler_BirimFiyati1] DEFAULT ((0)), [HedefStokDuzeyi] [smallint] NULL CONSTRAINT [DF_Urunler_HedefStokDuzeyi1] DEFAULT ((0)), [YeniSatis] [smallint] NULL CONSTRAINT [DF_Urunler_YeniSatis1] DEFAULT ((0)), [EnAzYenidenSatisMikatari] [smallint] NULL CONSTRAINT [DF_Urunler_EnAzYenidenSatisMikatari1] DEFAULT ((0)), [Sonlandi] [bit] NOT NULL DEFAULT ((0)) ) © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi INSERT INTO Urunler2( [UrunAdi] ,[TedarikciID] ,[KategoriID] ,[BirimdekiMiktar] ,[BirimFiyati] ) SELECT [UrunAdi] ,[BirimFiyati] FROM Urunler © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi