© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi HAFTA 2 © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SELECT… SELECT [DISTINCT][ALL] FROM Tablo_Adi [WHERE Kosul] [GROUP BY Kosul] [HAVING Kosul] [UNION Kosul] [ ORDER BY Alanlar [ASC] [DESC]]
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi OPERATÖRLER Mantıksal Operatörler: İki ya da daha fazla ifade arasında mantıksal sorgu yapmak için kullanılır. () işlemleri gruplandırma işleminde ve öncelik belirlemek için kullanılır AND (VE) her iki ifadenin doğru olması durumunda yapılacak işlem. OR (VEYA) ifadelerden biri doğrunun doğru olması yeterlidir anlamına gelir. NOT (DEĞİL) ifadenin yanlış olması durumunda yapılması beklenen işlem gerçekleşir. Karşılaştırma Operatörleri: >= Büyük veya eşit <= Küçük veya eşit = Eşit <> Eşit degil != Eşit degil © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi SELECT use Northwind SELECT [UrunID] ,[UrunAdi],[BirimdekiMiktar] ,[BirimFiyati] ,[Sonlandi] FROM Urunler WHERE [BirimFiyati]<>10 ORDER BY [BirimFiyati] FROM Urunler WHERE [BirimFiyati]<=10 ORDER BY [BirimFiyati] © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi SELECT AS: Başlıkların alan adları dışında bir isimle görüntülenmesi için AS anahtar kelimesi kullanılır. DISTINCT :çok aynı satırdan varsa veriler tekrar ediyorsa ve yalnızca bir tanesi listelenmesi isteniliyorsa SELECT deyimi DISTINCT anahtar kelimesi ile kullanılır. Between-And Operatörü İki değer arasında kalanları seçme işleminde kullanılır. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi ÖRNEK SELECT DISTINCT [MusteriUnvani],[Adres],[Sehir],[Bolge] FROM [Musteriler] SELECT DISTINCT [MusteriUnvani] FROM [Musteriler] SELECT *FROM Urunler WHERE [BirimFiyati] BETWEEN 10 AND 50 ORDER BY [BirimFiyati] © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi SELECT IN IN Operatörü Tüm liste içindeki değerlerden belirli kriterlere uyan verileri karşılaştırma yapmak için kullanılır. use Northwind SELECT * FROM [Musteriler] WHERE Sehir IN ('Berlin','Madrid','London') Ayrıca alt sorgu birden fazla sonuç döndürüyor ise IN deyimi sorguları birbirine bağlar. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SQL KARAKTER FONKSİYONLARI LEFT (metin, n) : Metnin baştan n karakterini alır. SELECT *, left(Urunadi,5) as Urun_kısa FROM Urunler ORDER BY [BirimFiyati] LOWER(metin): Metni küçük harflere çevirir. REVERSE(metin):Metni ters çevirir. RIGHT(METİN,N):Metnin sonundan n karakter alır. SUBSTRING(metin, basla,adet): Metnin basla ile verilen harfinden itibaren adet kadar verilen harfini verir. SELECT *, substring (Urunadi,3,9) as Urun_kısa FROM Urunler ORDER BY [BirimFiyati] UPPER(metin): Metni BÜYÜK harfe dönüştürür. © Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SQL TARİH FONKSİYONLARI GETDATE():Sistemin anlık tarihini verir. CONVERT(VARCHAR, Tarih,Kod):Tarih formatını çevirmek için kullanılır. Karaktere çevirdikten sonra, örneğin 103 numaralı kod gg/aa/yy 104 numaralı gg.aa.yy şeklinde yazımı sağlar. Dönüşüm yapıldıktan sonra Sorgularda kullanılabilir select [satistarihi], convert(varchar(16),[satistarihi],103) as Yeni_tarih from Satislar select [satistarihi] from Satislar WHERE convert(varchar(16),[satistarihi],103) ='01/08/1996' DAY(Tarih): Verilen tarihin sadece gün kısmını alır. MONTH(Tarih): Verilen tarihin sadece ay kısmını alır. YEAR(Tarih): Verilen tarihin sadece yıl kısmını alır. © 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 TOP ve TOP PERCENT TOP Sorgu sonucunda ilk kaç kaydın görüntüleneceğini belirtir. SIRALAMA KRİTERİNİZ SONUCU BELİRLER SELECT TOP 10 * FROM Urunler ORDER BY [BirimFiyati] SELECT TOP 10 * FROM Urunler ORDER BY 1 TOP PERCENT Satırların belli bir yüzdesini veren Top n PERCENT yan tümcesi de kullanılabilir. SELECT TOP 50 PERCENT * FROM Urunler ORDER BY 1 ifadesi, Urunler tablosundaki bütün satırların ilk yüzde ellisini görüntüler. © 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
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi SELECT GruplamaFonksiyonu(kolon1), kolon2 FROM tablo GROUP BY kolon2 © 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 Ö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 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 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