MySQL'de veri filtreleme ve sıralama işlemleri için WHERE ve ORDER BY argümanları kullanılır WHERE argümanı, belirli koşullara göre verileri filtrelemek için kullanılırken, IN ve LIKE operatörleri ile birleştirilerek daha spesifik sorgular oluşturulabilir ORDER BY argümanı ise verileri belirli sıralama kriterlerine göre sıralar ASC ve DESC anahtar kelimeleri kullanılarak sıralama yapılabilir Bu argümanlar veritabanı işlemlerinde oldukça yaygın olarak kullanılır ve sorguları daha spesifik hale getirerek veri yönetimini kolaylaştırır

MySQL, veri tabanları üzerinde sıklıkla kullanılan bir yapılanmadır. Verilerin filtrelenmesi ve sıralanması gibi işlemlerde kullanılan argümanlar, veritabanlarında işlem yaparken işleri oldukça kolaylaştırabilir. WHERE argümanı, verilerin filtrelenerek seçilmesi için kullanılan en temel argümandır. WHERE argümanında ise AND ve OR operatörleri gibi bağlaçlar ile birbirinden farklı koşullar birleştirilebilir.
Örneğin, bir veri tabanında bulunan ürünlerin sadece belirli bir fiyat aralığındaki ürünleri listelenecekse WHERE argümanı kullanılabilir. AND operatörü, iki ayrı koşulun birleştirilerek uygulanmasını sağlar. Örneğin, belirli bir fiyat aralığındaki ve belirli bir kategorideki ürünlerin filtrelenmesini sağlarken OR operatörü ise en az bir koşulun doğru olması durumunda filtreleme yapar.
- WHERE argümanı için bazı örnekler vermek gerekirse:
Örnek | SQL Kodu |
---|---|
Tüm kullanıcıları listeleme | SELECT * FROM users; |
Belirli bir ismi seçme | SELECT * FROM users WHERE name='John'; |
Belirli yaş aralığındaki kullanıcıları seçme | SELECT * FROM users WHERE age < 30 AND age > 20; |
Belirli kategorideki veya belirli fiyat aralığında olan ürünleri listeleme | SELECT * FROM products WHERE category='elektronik' OR price > 1000; |
IN Operatörü
IN operatörü ile birlikte, birden fazla koşul kontrolü yapabilir ve özellikle büyük veri kümelerinde sorgu performansını arttırabilirsiniz. IN operatörü, belirli bir sütundaki değerlerin bir listesiyle karşılaştırılabilir. Bu liste, bir dizi ve virgüllerle ayrılmış bir liste gibi görünebilir.
Örneğin, aşağıdaki SQL sorgusu, müşteriler tablosunda US ve UK ülkelerinde yaşayan müşterilerin kayıtlarını döndürür:
ID | Ad | Ülke |
---|---|---|
1 | Ahmet | US |
2 | Ayşe | UK |
3 | Mehmet | TR |
SELECT * FROM müşteriler WHERE ülke IN ('US', 'UK')
Bu sorgu, IN operatörünü kullanarak, sadece belirtilen koşulları içeren kayıtları döndürür. Bu, birden fazla koşul kontrolü yaparken sorgu performansını arttırmak için ideal bir yoldur.
LIKE Operatörü
LIKE operatörü, veritabanlarında belirli bir örüntüye sahip olan verileri seçmek için kullanılan bir SQL fonksiyonudur. LIKE operatörü, verilerin belli bir kelimeyle başlayıp bitmesini, belirli bir aralıkta olmasını veya belirli bir karakter dizisi içermesini sağlar.
Örneğin, bir kişinin adının içinde "ay" kelimesi geçenlerin seçilmesini istediğimizi varsayalım. Bu durumda, LIKE operatörü kullanarak "WHERE name LIKE '%ay%'" sorgusunu yazarak bu kişileri seçebiliriz. Burada, "%" işareti, başında veya sonunda herhangi bir karakter olabilen bir karakter dizisini ifade eder.
Benzer şekilde, bir müşterinin telefon numarasının içinde "5" rakamının geçtiği herhangi bir kaydı seçmek istersek, "WHERE phone_number LIKE '%5%'" sorgusunu kullanabiliriz.
LIKE operatörü, diğer operatörlerle birlikte de kullanılabilir. Örneğin, "WHERE name LIKE '%ay%' AND age > 25" sorgusu, adında "ay" kelimesi geçen ve yaşı 25'ten büyük olan kişileri seçecektir.
Tablo olarak ifade etmek gerekirse:
Name | Age | Phone Number |
Ayşe | 30 | 555-1234 |
Ali | 23 | 555-5678 |
Aylin | 27 | 555-9876 |
Deniz | 31 | 555-5555 |
Yukarıdaki örnekte, "WHERE name LIKE '%ay%'" sorgusu kullanıldığında, Ayşe ve Aylin kayıtları seçilecektir.
Sonuç olarak, LIKE operatörü, SQL sorgularında verileri seçmek için oldukça kullanışlı bir araçtır. Belirli bir kalıbı veya karakter dizisini içeren ve seçmek istediğimiz verileri seçerek veri filtreleme işlemi yapabiliriz.
ORDER BY Argümanı
MySQL'de ORDER BY argümanı verilerin sıralanması için kullanılır. ASC ve DESC anahtar kelimeleri kullanılarak sıralama yapılabilir. ASC, sıralama işleminin küçükten büyüğe yapılmasını belirtirken, DESC büyükten küçüğe doğru sıralama işlemi yapar.
Örneğin, bir veritabanında "ürünler" tablosundaki verileri fiyatlarına göre sıralamak için "ORDER BY fiyat ASC" komutu kullanılabilir. Bu komut, küçükten büyüğe doğru fiyatları sıralar. "DESC" anahtar kelimesi kullanılarak sıralama işlemi büyükten küçüğe doğru da yapılabilir.
Tablo Adı | Kolon Adı | Örnek Sorgu |
---|---|---|
ürünler | fiyat | SELECT * FROM ürünler ORDER BY fiyat ASC |
kitaplar | yazar | SELECT * FROM kitaplar ORDER BY yazar ASC |
filmler | puan | SELECT * FROM filmler ORDER BY puan DESC |
- ASC ve DESC anahtar kelimeleri ile sıralama yapılabilir.
- ORDER BY argümanı verilerin sıralanmasını sağlar.
- Örnek sorgularda farklı tablo ve kolonlar kullanılabilir.
ORDER BY Birden Fazla Kolona Göre Sıralama
MySQL'de verileri sıralama işlemleri sadece tek bir koşulu ele alarak yürütülebilir. Ancak, bir tablonun içerisinde birden fazla sıralama kriteri olabilir ve bu durumda ORDER BY argümanı birden fazla kolona göre de yapılandırılabilir.
Birden fazla kolona göre sıralama işlemi yapmak için öncelikle ilk kolon belirtilir ve ardından ikinci bir kolon adı eklenerek sıralama öncelikleri kontrol edilir. Bu sayede bir ürün listesi, fiyata göre sıralandıktan sonra stok adedine göre de sıralanabilir.
- ORDER BY price, stock_quantity ASC
Yukarıdaki örnekte, ilk sıralama kriteri 'price' yani fiyattır ve bu kriter ASC yani artan sıralamaya göre sıralanır. İkinci sıralama kriteri ise 'stock_quantity' yani stok adedidir ve bu kriter de daha önce sıralanan fiyatlara göre artan sıralama şeklinde sıralanır.
ORDER BY argümanında birden fazla kolona göre sıralanırken birden fazla sıralama öncesinin kontrolü de yapılabilir. Örneğin, bir müşteri listesi önce birincil olarak şehir adına göre sıralanır, ardından aynı şehirdeki müşterileri isimlerine göre de artan sıralama şeklinde sıralayabiliriz.
- ORDER BY city ASC, customer_name ASC
Yukarıdaki örnekte, öncelikle 'city' yani şehir adına göre artan sıralama yapılır ve ardından aynı şehir adı altında bulunan müşterilerin isimleri de artan sıralama şeklinde sıralanır.
RAND() Fonksiyonu
MySQL'de verileri rastgele sıralamak için RAND () fonksiyonu kullanılabilir. Bu işlev, verileri olması gerektiği şekilde sıralamak yerine tamamen rastgele bir şekilde sıralayarak daha fazla çeşitlilik ve farklı sonuçlar elde etmek için kullanılabilir. Bu fonksiyon genellikle belirli bir veri kümesindeki herhangi bir öğenin seçiminde rastgelelik sağlamak için kullanılır.
Bu fonksiyon, ORDER BY sıralama anahtarlarına benzer şekilde kullanılır. Sıralama anahtarlarından farklı olarak, RAND () fonksiyonu sıralamanın rastgele bir şekilde yapılmasını sağlar. Örneğin, aşağıdaki sorgu, "sample_table" tablosundaki tüm verileri rastgele bir şekilde sıralar:
SELECT * FROM sample_table ORDER BY RAND();
Bu sorgu, her zaman farklı sonuçlar üretecek ve her bir sorguda farklı bir sıralama yapacaktır. Bunun nedeni, her sorguda rastgele bir sayı üretilmesi ve bu sayıların sıralama işlemi sırasında kullanılmasıdır.
RAND () fonksiyonu, veritabanına yeni veriler eklediğinizde veya yeni sorgular yürüttüğünüzde farklı sonuçlar elde etmenizi sağlayarak daha fazla çeşitlilik sağlar. Ayrıca, bu fonksiyon sayesinde kullanıcıların farklı sıralamalara göz atabilmesine olanak sağlar veya özel bir sıralama düzeni isteyen kullanıcılara yardımcı olabilir.
Özetle, RAND () fonksiyonu, mevcut veri kümesindeki herhangi bir öğenin seçiminde rastgelelik sağlamak için kullanılır. Bu fonksiyon, verileri farklı şekillerde sıralamak isteyen veya farklı sonuçlar elde etmek isteyenler için ideal bir seçenektir. Ancak, sıralama işlemi daha yavaş olabilir, çünkü verilerin her biri rastgele bir şekilde seçilir ve sıralama işlemi sırasında her biri kontrol edilir.
LIMIT Argümanı
MySQL'de LIMIT, veritabanındaki verilerin sayfalama için kullanılan işlevlerden biridir. Bir veritabanı oluşturulduğunda, bazı tablolar yüz binlerce satır içerebilir ve bu da sorgu sonuçlarına olumsuz bir etki yapabilir. LIMIT kullanarak sorguda yalnızca belirli sayıda sonuç döndürebiliriz.
LIMIT, bir sorguda kaç satırın döndürüleceğini belirlemek için kullanılır. Örneğin, "SELECT * FROM products LIMIT 10;" sorgusu, 'products' tablosundan ilk 10 satırı döndürecektir.
OFFSET ise, sorgunun sonuçlarının kaçıncı satırdan başlayacağını belirlemek için kullanılır. Örneğin, "SELECT * FROM products LIMIT 10 OFFSET 20;" sorgusu, 'products' tablosundan 21-30 numaralı satırları döndürecektir.
Ayrıca, OFFSET olmadan da LIMIT kullanabiliriz. "SELECT * FROM products LIMIT 5;" sorgusu, 'products' tablosundan ilk beş kaydı döndürecektir.
Verileri belirli bir aralıkta seçebiliriz. "SELECT * FROM products LIMIT 10, 5;" sorgusu, 'products' tablosundan 10. satırdan başlayarak 5 satırı döndürecektir.
Sonuç olarak, LIMIT ve OFFSET kullanarak, sorgularda yalnızca belirli sayıda sonuç döndürebilir ve sayfalandırma işlevlerini gerçekleştirebiliriz. Bu, büyük veritabanları veya web sitelerinde çok sayıda veri olan web uygulamaları için oldukça yararlıdır.
Verilerin Belirli Aralıklarını Seçme
Veri filtreleme işlemlerinde kullanabileceğimiz bir diğer argüman ise "LIMIT" argümanıdır. Bu argüman, belirli bir aralıktaki verileri seçmemize olanak sağlar. Örneğin;
LIMIT 2, 5 ifadesi, sorgumuza uyan veriler arasında 2. veriden başlamak üzere 5 veri seçmemizi sağlar.
Ayrıca "OFFSET" ifadesiyle birlikte kullanılarak, seçim işleminin nereden başlayacağı belirtilebilir. Örneğin;
LIMIT 2 OFFSET 3 ifadesi, sorgumuza uyan veriler arasında, 3. veriden itibaren seçim yaparak 2 veri seçmemizi sağlar.
"LIMIT" argümanı, özellikle sayfalama işlevi için kullanılabilir. Örneğin bir blog yazısı listesi sayfası hazırlarken, her sayfada 10 yazı göstermek istediğimizde;
LIMIT 0,10 ifadesi, birinci sayfada, sorguya uyan ilk 10 yazıyı getirecektir.
LIMIT 10, 10 ifadesi ise, ikinci sayfada, sorguya uyan 11. yazıdan başlayarak 10 yazı getirecektir.
Verilerin belirli aralıklarının seçilmesi, hem sıralama işlemleri hem de diğer filtreleme işlemleri ile birlikte kullanılabileceği için oldukça esnek bir argümandır.