Resim

MySQL ORDER BY (Veri Sıralamak)

MySQL ORDER BY (Veri Sıralamak)

Veritabanından çekilen kayıtlar, genellikle eklenme sırasına göre gelir. Ancak bir e-ticaret sitesinde ürünleri fiyata göre, bir müşteri listesinde ise isimlere göre alfabetik olarak sıralamak isteriz. SQL'de bu sıralama işlemi, ORDER BY komutu ile yapılır. Bu bölümde, musteriler tablosundaki kayıtları isimlerine göre alfabetik olarak nasıl sıralayacağımızı ve bu sıralamanın yönünü (artan veya azalan) nasıl belirleyeceğimizi göreceğiz. Yeni bir Python dosyası oluşturalım (Örneğin: order_by_data.py) ve başlayalım.

Kodun Tamamı

import mysql.connector 
from config import DB_CONFIG
try:
    # 1. Veritabanına Bağlanma
    mydb = mysql.connector.connect(**DB_CONFIG)
    mycurser = mydb.cursor()    
    # 2. Temel SELECT Sorgusu
    SELECT_SQL = "SELECT * FROM musteriler"   
    # 3. Sıralama Sorgusunu Oluşturma (ORDER BY)
    # ORDER BY isim: 'isim' sütununa göre sırala
    # ASC: Artan (Alfabetik A'dan Z'ye veya küçükten büyüğe) 
    # sıralama yap.
    ORDER_BY_ISIM_ASC_SQL = f"{SELECT_SQL} ORDER BY isim ASC"    
    # 4. Sorguyu Çalıştırma
    mycurser.execute(ORDER_BY_ISIM_ASC_SQL)    
    # 5. Sonuçları Çekme
    isim_sirali = mycurser.fetchall()    
    # 6. Sıralanmış Veriyi Yazdırma
    print("\n--- 1. İSME GÖRE A-Z (Artan) SIRALAMA ---")
    for kayit in isim_sirali:
        # Tuple elemanlarını ekrana yazdır
        print(f"ID: {kayit[0]} İsim: {kayit[1]} Email: {kayit[2]} Kayıt Tarihi: {kayit[3]}")

    
    # --------------------------------------------------------------
    # Ek Örnek: Tarihe Göre AZALAN (DESC) Sıralama
    # --------------------------------------------------------------    
    # DESC: Azalan (Z'den A'ya veya büyükten küçüğe, 
    # yani en yeni tarih en başta) sıralama yap.
    #ORDER_BY_TARIH_DESC_SQL=f"{SELECT_SQL}ORDER BY kayit_tarihi DESC"
    #mycurser.execute(ORDER_BY_TARIH_DESC_SQL)
    #tarih_sirali = mycurser.fetchall()    
    #print("\n--- 2. KAYIT TARİHİNE GÖRE YENİDEN ESKİYE (Azalan) 
    # SIRALAMA ---")
    #for kayit in tarih_sirali:
    #    print(f"ID: {kayit[0]} İsim: {kayit[1]} Kayıt Tarihi: 
    #          {kayit[3]}")
    
except mysql.connector.Error as err:
    # Tablo var mı yok mu kontrolü ve diğer hataları yakalama
    if err.errno == 1050:
        print("Tablo zaten mevcut.")
    else:
        print(f"Bağlantı hatası: {err}")
        print("Lütfen bağlantı ayarlarını kontrol edin.")
finally:
    # Bağlantıları kapatma
    if 'mycurser' in locals() and mycurser:
        mycurser.close()
    if 'mydb' in locals() and mydb and mydb.is_connected():
        mydb.close()
        print("MySQL bağlantısı kapatıldı.")

Kodun Açıklaması

Bu kod bloğu, veritabanından veri çekerken sonuç kümesini belirli bir kritere göre düzenlemeyi gösterir.

  1. Temel Sorgunun Hazırlanması: Önce SELECT * FROM musteriler şeklinde temel sorgu tanımlanır.

  2. ORDER BY Komutunun Eklenmesi: Sıralama işlemi, temel SELECT sorgusunun sonuna ORDER BY ifadesi eklenerek yapılır:

    • ORDER BY isim ASC: Bu ifade, sonuçları isim sütunundaki değerlere göre sıralar.

    • ASC (Ascending): Artan anlamına gelir. Metinler için alfabetik (A'dan Z'ye), sayılar ve tarihler için küçükten büyüğe sıralama yapar. (Bu, varsayılan sıralamadır, belirtilmese de ASC kabul edilir.)

    • DESC (Descending): Azalan anlamına gelir. Metinler için Z'den A'ya, sayılar ve tarihler için büyükten küçüğe (yani en yeni kayıt en başta) sıralama yapar.

  3. Sorgunun Çalıştırılması: Oluşturulan sıralama sorgusu (ORDER_BY_ISIM_ASC_SQL), mycurser.execute() metodu ile çalıştırılır ve sonuçlar mycurser.fetchall() ile alınır.

  4. Veriyi Yazdırma: Alınan kayıt listesi (isim_sirali), bir for döngüsü ile dolaşılır ve her bir kaydın sütun değerleri ekrana düzenli bir şekilde yazdırılır.

Bu yöntem, raporlama ve listeleme ekranlarında kullanıcı deneyimini iyileştirmek için hayati öneme sahiptir.

📹ÖĞRENDİKLERİNİZİ PEKİŞTİRİN:
Hemen aşağıdaki videomuza tıklayın. Adım adım ilerleyerek öğrendiklerinizi görsel olarak pekiştirin ve bir sonraki konuya hatasız bir şekilde geçin!



Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?