« : 06 Temmuz 2008, 20:55:53 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
SQL Veri İşleme Dili (Data Manipulation Language-DML) SQL Veri İşleme Dili veri girmek, değiştirmek, silmek ve verileri almak için kullanılan DML komutlarının tümüdür. En sık kullanılan DML komutları ve kullanım amaçları aşağıdaki gibidir. SELECT : Veri seçmek DELETE : Veri silmek UPDATE : Veri güncellemek INSERT : Veri girmek
bizde burda select ifadesi hakkında konuşacağız...Başlayalım Elimizde bir kitapevine ait bir database olduğunu varsayalım ve KitapEvi database sinde kitaplar isimli tablo...
Anahtar sözcüğümüz "select" bu key herhangi bir tablodan veri çekmek için kullanılan kelimedir..
şimdi kitaplar tablomuzda ki kategorileri görmek istersek
Select Kategoriler From Kitaplar
bu sorgu bize sadece kategorileri getirecektir fakat biz kitaplar tablosundaki tüm verileri görmek istersek (Kitap Adı,Kategori,Yazarı,fiyatı,vs,vs,vs) sorgumuz şu şekilde olacaktır.
Select * from Kitaplar bu sorgu bize kitaplar tablosundaki tüm verileri düzenli bir şekilde getirecektir.şimdi kategorisi aksiyon olan tüm kitapları görmek istiyoruz bunun içinde devreye "where" anahtar sözcüğü devreye giriyor şimdiki sorgumuz ise şu şekilde oluyor
Select * from Kitaplar where Kategori=aksiyon
burda yaptığımız şey tam olarak şöyle select dediğimiz şey komutumuz" SEÇ" de diyebiliriz seç dedik ama neyi seç işte burda "*" işaretini kullandık ki bu olan tüm sütunları temsil eder bunun yerine sadece sütun ismide kullanılabilir hemen sonrasında from kullandık buda hangi tablodan olduğunu belirtmek için kullandığımız anahtar sözcüğümüz.. ve sonunda "where" dedik ki burda bir koşul sözkonusu where dedik ve katogori sütununda sadece aksiyon yazan kitapları gösterdik sonucuda ona göre aldık...
Genel yazım şekli şu şekilde
Select (sütun(lar)ın isimleri ) from (tablonun ismi) sonrası koşullar ve diğer şeyler
diğer döküman UPDATE hakkında olucak
|
|
|
|
|
Logged
|
|
|
|
|
|
« Yanıtla #1 : 07 Temmuz 2008, 03:07:52 » |
Admin
Üye No: 1
Cinsiyet: 
Mesaj Sayısı: 74
Nerden: İstanbul
Puan: 8
|
Select * from Kitaplar where Kategori=aksiyon
Güzel döküman dejavu teşekkürler. Fakat yukarıda yer alan kodda ki küçük bir ayrıntıyı düzeltmek istiyorum. Burada kategori alanımızı sorgularken, sorgu kriterimizin yazımında, veri tipine göre farkılılıklar olacaktır. Örnek olarak sql kodumuz içerisindeki metin sorgularında, kriteri tek tırnak işaretleri arasına almamız gerekmekte. Aşağıdaki gibi where Kategori='aksiyon'
|
|
|
|
|
Logged
|
|
|
|
« Yanıtla #2 : 07 Temmuz 2008, 12:16:24 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
teşekürller walleq ya ben aslında bu dökümanı yazarken bir hata oldu ve sayfa değişti bende yeniden ve maximum sinirle yazmaya çalıştım bir önceki çokk daha güzeldi  neyse ya saol en azından seninde burda olman iyi farkedip düzeltmişsin
|
|
|
|
|
Logged
|
|
|
|
« Yanıtla #3 : 07 Temmuz 2008, 13:09:15 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
Update yazıcam dedim ama select ile ilgili daha yığınla konu var selecti tamamen bitirip update ye geçmeyi daha doğru buldum..Başlayalım
Where anahtar sözcüğünü görmüştük ve şimdide LİKE ifadesi üzerinde duralım...
Like dediğimiz şey bize benzer sonuçları getirmek için kullandığımız bir ifade Hemen sorgumuzu yazarak görelim
SELECT * FROM Kitaplar WHERE Kategori LIKE 'A%'
burda şunu dedik where den sonra like kullandık burdaki anlamı ile benzer demek oluyor like 'A%' dediğimiz şey ise "A" ile başlasın "%" ile dewam etsin burdaki yüzde işareti ise ne olursa olsun (karakter bazında) anlamına geliyor dahada değiştirelim misal kategori stununda Kategori adlarının sonunda a karakteri geçen kaydı bulmak isteyelim
SELECT * FROM Kitaplar WHERE Kategori LIKE '%A'
yada arasında a geçenleri
SELECT * FROM Kitaplar WHERE Kategori LIKE '%A%'
dahada abartırsak
Örnek arama koşulları: LIKE ‘BR%’ İlk iki harfi BR olan tüm kayıtlar LIKE ‘Br%’ İlk iki harfi Br olan tüm kayıtlar LIKE ‘%een’ Son üç harfi een olan tüm kayıtlar LIKE ‘%en%’ İçerisinde en ifadesi geçen tüm kayıtlar LIKE ‘_en’ Son iki harfi en olan üç harften oluşan tüm kayıtlar
Like bu kadar
SQL AND & OR & NOT MANTIKSAL OPERATÖRLERİ dewam edelim
|
|
|
|
« Son Düzenleme: 07 Temmuz 2008, 13:12:46 Gönderen: dejavu »
|
Logged
|
|
|
|
« Yanıtla #4 : 07 Temmuz 2008, 13:27:28 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
AND ve OR Mantıksal operatörlerini birden fazla koşulu birleştirmek için kullanırız. AND operatörü kullanarak, birleştirilen koşulların tümüne uyan satırlar listelenir. OR operatörü kullanılarak, birleştirilen koşullardan en az birine uyan satırlar listelenir. NOT operatörü kendisinden sonra gelen koşulu sağlamayan kayıtları listeler. Parantez kullanımı ikiden fazla koşul olması durumunda koşulların öncelik sırasını belirler. Parantez kullanılmaması durumunda SQL önce NOT, sonra AND ve en son da OR mantıksal operatörünü işler. Söz dizimi: SELECT <sütun adı> FROM <tablo adı> WHERE <koşul> AND <koşul>[AND <koşul>...] SELECT <sütun adı> FROM <tablo adı> WHERE <koşul> OR <koşul> [OR <koşul>...]
And OR ile yazıcak çok şey yok aslında neyse SQL Between...And geçtim bile..
BETWEEN ... AND operatörü 2 değer ile belirtilen aralığı sınar. Bu değerler sayı, metin veya tarih olabilir. Söz dizimi:
SELECT <sütun adı> FROM <tablo adı> WHERE <sütun adı> BETWEEN <değer 1> AND <değer 2>
şimdi yine kitapllar tablosunda belirli tarihlerde çıkan kitapları getirelim
SELECT * FROM kitaplar WHERE CikisTarihi BETWEEN '01/01/1996' AND '12/31/1996'
Bu sonuç bize 1996 yılında çıkan tüm kitapları getirecektir...
SQL Select Distinct
DISTINCT kelimesi bir sütundaki benzersiz kayıtları listeler. Bir sütunda belirli bir kelime iki veya daha fazla sayıda tekrarlanıyor olabilir. Distinct anahtar kelimesi ile her tekrarlanan kelime sadece bir kez listelenir.
SELECT DISTINCT <sütun adı> FROM <tablo adı> [WHERE <koşul>]
SQL Order By
ORDER BY yantümcesi satırları, belirtilen sütun(lar)a göre sıralamak için kullanılır. ORDER BY ile hangi sütuna göre sıralayacağımızı ve sıralamanın artan veya azalan şekilde yapılacağını belirleriz. Sıralama yönü belirtilmez ise SQL veriyi artan şekilde sıralar. Sıralama yapılacak alanlar SELECT ifadesinde yer almak zorunda değildir. Söz dizimi: SELECT <sütun ad(lar)ı> FROM <tablo adı> ORDER BY <sütun adı><sıralama yönü>
yine kitaplar tablosunda KitapAdı,KitapYazarı,Fiyat stunlarında işlem yapalım ve fiyatlarına göre en pahalıdan en en ucuza göre sorgumuzu çekelim..
Select KitapAdı,KitapYazarı,Fiyat from Kitaplar Order By Fiyat desc
Order By ifadesi burda sırala anlamına da geliyor bu ifadeyi kullandıkdak sonra stun adı veriyoruz ki hangi stunu esas alarak sıralama yapıcak onu belirtmiş oluyoruz en sondaki desc ifadesi ise sıralama şekli küçükten büyüğe yada büyükten küçüğe (desc,asc)
SQL Count Fonksiyonları
SQL, veritabanındaki kayıtları sayabilmek için yerleşik COUNT fonksiyonunu kullanır. Söz dizimi: SELECT COUNT(<sütun adı>) FROM <tablo adı>
COUNT(*) COUNT fonksiyonu (*) ile kullanıldığında FROM ile belirtilen tablodaki toplam satır sayısını verir. Örnek: Aşağıdaki örnekte Siparişler (Orders) tablosundaki kayıt sayısı listelenmiştir.
COUNT fonksiyonu bir sütun adı ile birlikte kullanıldığında, o sütundaki boş (NULL) olmayan kayıtların sayısını verir.
DISTINCT anahtar kelimesi COUNT ile birlikte kullanıldığında, belirtilen sütundaki benzersiz kayıtların sayısını verir. Söz dizimi: SELECT COUNT(DISTINCT <sütun adı> FROM <tablo adı>
Bir diğer msj da SQL TOPLAM FONKSİYONLARI (AGGREGATE FUNCTİONS) ile dewam ediyorum
|
|
|
|
« Son Düzenleme: 07 Temmuz 2008, 13:29:25 Gönderen: dejavu »
|
Logged
|
|
|
|
« Yanıtla #5 : 07 Temmuz 2008, 13:34:00 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
AVG(<sütun adı>) Fonksiyonu AVG fonksiyonu belirtilen sütundaki ortalama değeri verir. Bu hesaplama sırasında boş (NULL) değerler işleme katılmaz. biz yine kitaplar tablomuzdaki tüm kitapların ortalama fiyatını görmek istersek...
Select AVG (Fiyat) as OrtalamaFiyat from Kitaplar
burda avg fonksiyonumuza parametre olarak fiyat stununu verdik oda ordaki tüm veriler ile işlem yaparak ortalamsını bize verdi ondan sonra kullandığım as ifadesi ise tabloya geçici isim vermek içindi..
MAX(<sütun adı>) Fonksiyonu MAX fonksiyonu, bir sütundaki en yüksek değeri verir. Boş (NULL) değerler işleme katılmaz. MAX fonksiyonu alfabetik sıralamadaki ilk metinsel ifadeyi de bulmamızı sağlar. MIN(<sütun adı>) Fonksiyonu MIN fonksiyonu bir sütundaki kayıtlardanki en küçük değeri verir. Boş (NULL) değerler işleme katılmaz. MIN fonksiyonu alfabetik sıralamadaki son metinsel ifadeyi de bulmamızı sağlar. SUM(<sütun adı>) Fonksiyonu SUM fonksiyonu belirtilen sütundaki sayısal değerlerin bir toplamını geri döndürür.
Bir diğer Msj da GROUP BY ifadesine değineceğim
|
|
|
|
|
Logged
|
|
|
|
« Yanıtla #6 : 30 Temmuz 2008, 15:02:52 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
GROUP BY DISTINCT anahtar kelimesi yanlızca benzersiz satırları listelemek için kullanılırken, GROUP BY yantümcesi belirtilen sütun yada sütunlardaki aynı değere sahip satırları tek bir satırda birleştirmeyi sağlar. GROUP BY genellikle toplam fonksiyonlarıyla (Aggregate Function) kullanılır. GROUP BY sorgularında kullanılan en yaygın toplama işlevleri MIN, MAX, SUM ve COUNT'dır. GROUP BY ile belirtilen sütunlar SELECT ifadesinde de yeralmalıdır.
bir örnekle açıklayalım....Yine KitapEvi databasemizde kitap fiyatlarını çağıralım lakin kitap bazlı olarak bu da şu anlama geliyor kitap adına göre gruplucaz
Select KitapAdı,Sum(KitapFiyat) as Fiyatı From Kitaplar GROUP BY KitapAdı order by Kitapadı
HAVING YANTÜMCESİ
Toplam 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
Bir örnekle açıklayalım... yukardaki örnekte tüm kitaplar kitap ismlerine guruplanarak gelmişti ama biz hepini değil fiyatı belirli olan kitapları guruplayarak çağırmak istediğimizi varsayarsak..
Select KitapAdı,Sum(KitapFiyat) as Fiyatı From Kitaplar GROUP BY KitapAdı order by Kitapadı HAVING SUM(KitapFiyat) > 1200
bu sonuç bize fiyatı 1200 den fazla olan kitapları dönücektir
Bir diğer yazıda sqldeki sorgulamalardaki önemli bir faktör olan SQL JOİN lere giricem
|
|
|
|
|
Logged
|
|
|
|
« Yanıtla #7 : 17 Ekim 2008, 19:11:25 » |
V.I.P Üye
Üye No: 31
Cinsiyet: 
Mesaj Sayısı: 172
Nerden: İstanbul
Puan: 42
|
SQL JOİN
Şimdiye kadar aynı anda sadece tek bir tablodan veriler ile çalıştık. Bazı durumlarda sonuç kümemizin daha anlamlı olabilmesi için iki farklı tablodan verilere ihtiyacımız olabilir. Bunun için sorgumuzda iki anahtar kelime daha kullanırız; JOIN ifadesi ile hangi tabloları ve nasıl birleştireceğimizi ON ifadesi ile tabloların hangi alanlar üzerinden birleşeceğini belirtiriz. Tablolar genelde Birincil Anahtar ve Yabancı Anahtar alanları üzerinden birleştirilselerde, gerektiğinde diğer herhangi bir alan da bunun için kullanılabilir. Fakat bu alanların aynı tür veri içerdiğinden emin olmalısınız. Birincil Anahtar(Primary key), her kayıt için benzersiz bir değer taşıyan alandır. Örneğin, öğrenci kayıtlarının tutulduğu bir tabloda, öğrenci numarasının saklandığı alan birincil anahtar olarak seçilebilir. Zira öğrenciyle ilgili tüm bilgiler gerçekte onun numarası ile kodlanmıştır ve her öğrencinin numarası bir birinden farklıdır.
INNER JOIN
SQL de varsayılan bağlantı türüdür. İlişkili tablolarda sadece JOIN koşulunu sağlayan kayıtlar listelenir.
Baştan beri örneğimiz bir kitapçının veritabanıydı öyle dewam edelim bu seferki senaryo şu şekilde işlesin,
Kategorisi Macera olan kitapları çekelim..
Select Kategoriler.KategoriID,Kategoiler.KategoriAd,Kitaplar.KitapID,Kitaplar.KategoriID,Kitaplar.KitapAd from Kategoriler inner join Kitaplar on Kategoriler.KategoriID=Kitaplar.KategoriID where KategoriAd='macera'
Bu sorgu bize Kategorisi Macera olan kayıtları getirecektir... bu sorgu dahada komplex hale getirileilir..Bir diğer yazımda Subquery(Alt Sorgu) ları anlatmaya çalışıcam...
|
|
|
|
|
Logged
|
|
|
|
|