CategoryMYSQL

MySQL SUM, MIN, MAX Kullanımı

Merhaba arkadaşlar bu yazımda sizlere MySQL deki SUM, MIN, MAX gibi kavramları açıklayacağım. Bu kavramlar genel olarak bir sütunda ki verileri toplamak için ve ya o sütundaki minimum ve maksimum değerleri bulmak için kullanılır.

Şimdi bu kavramları anlatırken kullanacağım örnek tabloyu size göstermek gerekirse

calisanlar isimli tablo

Şimdi bu tabloyu mesleklere göre listeleyip aldıkları minimum, maksimum maaşları ve toplamda 3 şehirde aldıkları maaşların toplamını bulalım.

SUM()

SUM(), bir sütundaki verilerin toplamını verir. Yani sorgumuz şu şekilde olursa

SELECT SUM(MAAS) FROM calisanlar;

bize sadece maas sütunundaki verileri döndürecektir.

Eğer mesleklere göre ayırmak istiyorsanız GROUP BY kullanarak bu işlemi yapabiliriz yani

SELECT meslek, MAX(MAAS) FROM calisanlar GROUP BY meslek;

sorgusunu çalıştırdığımız da meslek adı ve 3 şehirde aldıkları toplam maaşı gösteren bir tablo ile karşılaşırız.

MIN()

MIN() ise adında anlaşılacağı gibi bir sütundaki Minimum değeri bize döndürür. Yukarıda da yaptığımız gibi öncelikle tüm tablodaki en düşük maas’i çekmeye çalışırsak.

SELECT MIN(MAAS) FROM calisanlar;

şeklinde bir sorgu olurdu ama bu hangi mesleğe ait onu öğrenmek biraz problem oluşturuyor bu yüzden GROUP BY kullanarak her mesleğin aldığı minimum maaslari listelemek istersek.

SELECT meslek, MIN(MAAS) FROM calisanlar GROUP BY meslek;

şeklinde sorgumuzu çalıştırdığımız da her mesleğin aldığı minimum maaş değerlerini görebiliriz.

MAX()

Son olarak MAX() da bir sütundaki maksimum değeri bize geri döndürmek için vardır. Hine en yüksek maas’i bulmaya çalışalım

SELECT MAX(MAAS) FROM calisanlar;

şeklinde çalıştırdığımız da bize en yüksek maaş olan 5500 değerini döndürecektir. Ben bunu her meslek için ayrı ayrı yapmak istiyorsam.

SELECT meslek, MAX(MAAS) FROM calisanlar GROUP BY meslek;

şeklinde yazdığımız da meslek adı ve aldıkları maksimum maaşı görüntüleyebiliyoruz.

Şimdi bunların 3 ünü ayrı ayrı yaptık ama her birini kontrol etmek için farklı farklı sorguları çalıştırıp not mu almak gerekiyor tabi ki hayır.

Meslek isimlerine göre aldıkları MIN(MAAS), MAX(MAAS) ve SUM(MAAS)’ı tek bir sorgu ile halledebiliriz.

SELECT meslek, MIN(MAAS) as Minimum, MAX(MAAS) as Maksimum, SUM(MAAS) as Toplam FROM calisanlar GROUP BY meslek;

Bu sorguyu çalıştırdıktan sonra karşımıza çıkacak sonuç şu şekildedir.

Özet,

Bu yazımda SUM(), MAX(), MIN() gibi kavramları açıkladım bunların nasıl çalıştıklarını ve belirli bir kritere göre nasıl listelenebileceğinden bahsettim. Ayrıca bunların 3’ünün aynı anda nasıl kullanılabileceğinden bahsettim.

Genel olarak MySQL hakkında planladığım yazılar başlangıç için bu kadardı fakat hine zaman zaman MySQL hakkındada yeni içerikler girmeye başlayacağım. O zamana kadar MySQL hakkında yazmış olduğum diğer yazıları incelemek için buraya tıklayınız.

İlişkili Tablolar JOIN Kullanımı

Merhaba arkadaşlar bu yazımda sizlere JOIN kullanımı yani İlişkili Tablolar ile nasıl işlem yapabileceğinizden bahsedeceğim.

İlişkili tabloların ne olduğunu açıklamak gerekirse misal bir tablomuz olsun blog yazılarımızı tutan sütunları id, baslik, icerik, kategory_id olsun. Bir de kategori adında bir tablomuz olsun bu tablodada id ve kategori_ad isimli 2 adet sütun olsun biz blog yazılarında kategori adlarını çekerken 2 adet sorgu çalıştırmaktansa tek bir sorgu ile bu işlemi yapabilmemizi JOIN kullanarak yapabiliyoruz. Buradaki blog ve kategori tabloları ise ilişkili tablolar oluyor.

Şimdi yukarıda anlattığım örnek üzerinden bunları açıklamaya başlayalım ama öncelikle kategori ve blog tablolarımızın içerikleri neler bunlardan bahsetmek gerekiyor.

blog isimli tablo
category isimli tablo

Şimdi biz burada blog tablosunda ki id değerlerini category tablosunda ki id değerleri ile eşleştirip kategori isimlerini tek bir sorgu yazarak öğrenmek istiyoruz. Yazmamız gereken sorgu şu şekilde olmalı.

SELECT * FROM blog INNER JOIN category ON blog.category_id = category.id

şeklindeki sorgumuzu çalıştırırsak karşımıza şöyle bir sonuç çıkıyor olucak.

şimdi bu görüntü güzel ama ben biraz daha düzenli hale getirmek istiyorum misal burada gözüken id değerlerini kaldıralım ve category_id yerine direkt kategorinin ismi gözüksün bunu nasıl yaparız diyorsanız.

SELECT * FROM cümlesindeki * yerine isteklerimizi yazmamız gerekiyor yani

SELECT blog.title, blog.content, category.cat_name FROM blog INNER JOIN category ON blog.category_id = category.id;

Burada anlatmam gereken bir nokta var blog.title, blog.content ve ya category.cat_name neyi temsil ediyor derseniz şöyle anlatabilirim.

Bu kelimeleri noktadan itibaren ayırın solda kalan kısım tablonun adı sağda kalan kısım ise o tabloya ait olan sütundur yani blog.title yazınca blog tablosundaki title sütununu temsil etmektedir. Bu genel bir kullanımdır ama tek bir tablo üzerinde çalışırken böyle uzun uzun yazmaya gerek olmadığı için kullanmayız ama JOIN kullanırken çok işimize yarayacak bir işlemdir. JOIN işlemi sadece INNER JOIN’den ibaret olmamakla beraber aşağıya ekleyeceğim resim ile diğer JOIN türlerini ve neyi temsil ettiklerini anlayacaksınız.

Özet,

Bu yazımda INNER JOIN kullanımı konusunu açıklayarak genel JOIN kullanımından bahsettim. İlişkisel tabloların ne olduklarını nasıl bir ilişkileri olduğunu açıkladım.

Bir sonraki yazımda SUM(), MIN(), MAX() gibi kavramları açıklayacağım. O zamana kadar MySQL hakkında yazmış olduğum diğer konuları merak ediyorsanız buraya tıklayınız.

MySQL BETWEEN Kullanımı

Merhaba arkadaşlar bu MySQL yazımda sizlere MySQL BETWEEN kullanımı konusundan bahsedeceğim. BETWEEN anlayacağınız üzere girilen 2 veri arasında arama yapmamızı sağlar.

Şimdi bu yazımda kullancağım tabloyu size göstermek gerekirse

calisanlar isimli tablo

Şimdi bu tabloda yapacağımız işlem maaşı 2000 ile 5000 arasında olan verileri listelemek. Bu işlemi 2 şekilde yapabiliriz

SELECT * FROM calisanlar WHERE maas >= 2000 AND maas <= 5000;

şeklinde olabilir ama böyle uğraşmaktansa BETWEEN ile kullanmak daha mantıklı olacaktır. BETWEEN kullanarak ise

SELECT * FROM where maas BETWEEN 2000 AND 5000;

bu 2 sorguda aynı sonuçları döndürmektedir ama sorguyu uzun uzun yazmaktansa BETWEEN kullanarak daha kısa bir şekilde ve daha anlaşılır bir şekilde yapmak mümkün.

Özet,

Bu yazımda BETWEEN kullanımı konusundan bahsettim. BETWEEN’in bir sütundaki verileri 2 değer arasında listelediğinden bahsettim. Ayrıca BETWEEN’in işini sadece WHERE kullanarak nasıl yapılacağından bahsettim.

Bir sonraki yazımda İlişki Tabloları yani JOIN kavramından bahsedeceğim. O zamana kadar MySQL hakkında yazdığım diğer yazıları incelemek için buraya tıklayınız.

Verilerde Arama FIND_IN_SET Kullanımı

Merhaba arkadaşlar bu yazımda sizlere Verilerde Arama sözcüklerinden FIND_IN_SET kullanımından bahsedeceğim.

FIND_IN_SET’in genel olarak ne işe yaradığından bahsedecek olursak. Bir tablomuzun bir sütununda verileri , ile ayırdığımızı düşünün 1,2,3 gibi ben bu sütunda 2 değeri olan değerleri ararken IN ve ya LIKE kullanarak çok da doğru sonuçlara denk gelemem ama FIND_IN_SET ile bu işlemi kolay bir şekilde yapabiliriz. Şimdi bu işlemde kullanıcağımız örnek tablodan bahsetmek gerekirse

filmler adlı tablo

Şimdi ben türler kısmında 1 olanları listelemek istesem bana id değeri 1,2 ve 5 olanları listelemelidir şimdi bunu IN ile deniyelim

SELECT * FROM filmler WHERE turler IN (1);

sorgumuz bu şekilde ve vericeği sonuç şu şekilde olacaktır.

doğru çıktıyı verdi değil mi doğru çıktıyı vermesinin sebebi turler kısmında 1 olan değerleri ararken tüm 1lerin en başta yazılması şimdi 2 olanları arayalım.

SELECT * FROM filmler WHERE turler IN (2);

Bu sorgudan beklentimiz bize id değeri 1 ve 6 olan satırları döndürmesi ama sonuç olarak dönen sanal tablo

şeklindedir. Şimdi bunu LIKE ile denesek yani şöyle bir sorgu yazsak

SELECT * FROM filmler WHERE turler LIKE '%2%';

bize dönen sanal tabloda istemediğimiz veriler oluyor

evet istediklerimizi çekti ama fazladan turler kısmında 22 olan değeride çekmiş oldu böyle uğraşarak bir yere varamadık şimdi FIND_IN_SET ile bu işlemi rahatça yapalım

SELECT * FROM filmler WHERE FIND_IN_SET(2,turler);

bu sorguyu çalıştırırsak karşımıza şu şekilde bir sonuç çıkacaktır.

evet bu istediğimiz sonuç bunu diğer veriler için de denerseniz sürekli olarak doğru sonucu alacaksınızdır.

Özet,

Bu yazımda sizlere FIND_IN_SET kullanımından bahsettim. FIND_IN_SET in LIKE ve IN den farklarını ve FIND_IN_SET in yapacağı işi LIKE ve IN ile yaparsak nasıl sonuçlarla karşılaşıcağımızdan bahsettim.

Bir sonraki yazımda BETWEEN’den bahsedeceğim. O zamana kadar MySQL hakkında yazmış olduğum diğer yazıları okumak isterseniz buraya tıklayabilirsiniz.