MySQL'de Dizi İşlemleri: İşe Yarar Fonksiyonlar ve Kullanımları

MySQL'de Dizi İşlemleri: İşe Yarar Fonksiyonlar ve Kullanımları

MySQL'deki faydalı dizi fonksiyonları arasında ARRAY, GREATEST, ARRAY_AGG, ARRAY_APPEND, UNION ve UNION ALL fonksiyonları yer almaktadır JSON_ARRAYAGG fonksiyonu, sonuç kümesini JSON nesnesi biçiminde döndürürken, JSON_OBJECTAGG fonksiyonu sonuç kümesindeki sütunları JSON nesnesi olarak geri döndürür ARRAY fonksiyonu ise, belirtilen dizi adının her bir öğesini ayrı bir satıra yerleştirir Bu fonksiyonlar, veritabanlarında veri işlemek ve analiz etmek için faydalı araçlar sunar

MySQL'de Dizi İşlemleri: İşe Yarar Fonksiyonlar ve Kullanımları

MySQL, veri tabanı üzerinde dizilerle çalışmanızı sağlayan bir yazılımdır. Diziler, büyük miktarda veri işlemek için ideal bir yöntemdir. Bu makalede, MySQL'de mevcut olan faydalı dizi fonksiyonlarını tartışacağız ve bunları nasıl kullanabileceğinizi öğreneceksiniz.

Bu faydalı fonksiyonlar arasında, ARRAY fonksiyonu dikkat çekicidir. Bu fonksiyon, belirtilen bir dizi adı alır ve her bir değeri ayrı bir satıra yerleştirir. JSON_ARRAYAGG fonksiyonu ise sonuç kümesini JSON nesnesi biçiminde döndürür ve JSON_OBJECTAGG fonksiyonu, sonuç kümesindeki sütunları JSON nesnesi olarak geri döndürür ve her sütunu anahtar olarak kullanır.

MySQL'de bulunan diğer faydalı dizi fonksiyonları arasında GREATEST fonksiyonu da yer almaktadır. Bu fonksiyon, birden fazla dizi argümanını karşılaştırır ve en büyük olana geri döndürür. ARRAY_AGG fonksiyonu, benzersiz değerlerin bir dizi nesnesini döndürerek daha uzun dizileri kısaltmak için kullanılır. Benzer şekilde, ARRAY_APPEND fonksiyonu bir dizinin sonuna bir veya daha fazla öğe eklemek için kullanılır.

İki farklı dizi fonksiyonunu birleştirmek için kullanabileceğiniz iki farklı fonksiyon da vardır. UNION fonksiyonu, iki dizi kümesini birleştirirken herhangi bir yinelenen öğeyi tek bir öğe olarak birleştirir. UNION ALL fonksiyonu ise iki veya daha fazla dizinin tüm satırlarını birleştirir, ancak yinelenen öğeleri tek bir öğe olarak birleştirmez.

Yukarıda bahsedilen ve diğer dizi fonksiyonları MySQL'de bulunmaktadır ve verilerinizi analiz etmek ve işlemek için faydalı araçlar sunarlar. Bu fonksiyonları açık bir şekilde anlamak ve kullanmak, veritabanlarınızdaki çalışmalarınızın verimliliğini artırmanıza yardımcı olabilir.


ARRAY Fonksiyonu

ARRAY fonksiyonu, MySQL'de kullanabileceğiniz son derece faydalı bir fonksiyondur. Bu fonksiyon, belirtilen dizinin her bir öğesini ayrı bir satıra yerleştirir ve adlandırılmış bir dizi olarak bilinen sonuç kümesini oluşturur. Bu sayede, verilerinizi daha iyi organize etmeniz ve verimli bir şekilde yönetmeniz mümkündür.

ARRAY fonksiyonu kullanırken, geçerli bir dizi adı kullanmanız gerektiğini unutmayın. Fonksiyon, veritabanındaki dizileri veya başka bir fonksiyondan dönen dizileri kullanabilir. Fonksiyonun geri döndürdüğü sonucu daha rahat yönetmek için, bir alias kullanabilirsiniz.

Aşağıdaki tablo, ARRAY fonksiyonuna örnek bir kullanım sağlamaktadır:

Dizi Öğeleri ARRAY Fonksiyonu Sonucu
1, 2, 3 1
2
3
red, blue, green, yellow red
blue
green
yellow
John, Jane, Jim John
Jane
Jim

Yukarıdaki örneklerde görüldüğü gibi, ARRAY fonksiyonu verileri daha düzenli ve okunaklı hale getirerek işlemlerinizde daha fazla kolaylık sağlar. Bu fonksiyon, özellikle büyük veri kümeleriyle çalışırken oldukça kullanışlıdır.

Ayrıca, ARRAY fonksiyonunu bir alias ile birlikte kullanarak, sonucu daha etkili bir şekilde kullanabilirsiniz. Örneğin;

SELECT ARRAY(my_array) AS my_list FROM my_table;

Yukarıdaki örnek kod, veritabanındaki "my_table" adlı tablodaki "my_array" dizisini kullanarak, adlandırılmış bir dizi (my_list) oluşturur. Bu sayede, sonucu daha hızlı ve kolay bir şekilde kullanabilirsiniz.


JSON_ARRAYAGG Fonksiyonu

JSON_ARRAYAGG fonksiyonu, sonuç kümelerinin JSON nesnesi biçiminde gösterilmesine olanak tanır. Bu fonksiyon, bir dizi verisi alır ve JSON nesnesini oluşturmak için kullanır. Bu fonksiyonun kullanımı oldukça basittir. Sadece bir dizi verisi alır ve bu diziyi JSON nesnesi olarak döndürür. JSON_ARRAYAGG fonksiyonu, sonuç kümesindeki sütunların sayısına bakılmaksızın her sütunu içeren tek bir JSON dizesi döndürür.

Bir örnek vermek gerekirse, proje çalışanlarının adı ve çalıştığı ülkeyi içeren bir tablo düşünelim. JSON_ARRAYAGG fonksiyonu, bu tabloyu bir JSON nesnesine dönüştürebilir:

Ad Ülke
Ahmet Türkiye
Ayşe Almanya
Mehmet Fransa

Tabloyu JSON nesnesine dönüştürmek için JSON_ARRAYAGG fonksiyonunu kullanabiliriz:

JSON_ARRAYAGG(JSON_OBJECT('Ad', Ad, 'Ülke', Ülke))

Bu kod, bir JSON nesnesini döndürür:

[  {    "Ad": "Ahmet",    "Ülke": "Türkiye"  },  {    "Ad": "Ayşe",    "Ülke": "Almanya"  },  {    "Ad": "Mehmet",    "Ülke": "Fransa"  }]

JSON_ARRAYAGG fonksiyonu, sonuç kümesindeki sütunları JSON nesnesi olarak döndürmesi nedeniyle oldukça güçlü bir fonksiyondur. Bu sayede, sonuç kümesindeki verileri kolayca kullanabileceğiniz bir veri yapısı oluşturabilirsiniz.


JSON_OBJECTAGG Fonksiyonu

MySQL'de kullanabileceğiniz faydalı dizi fonksiyonlarını öğrenmeye devam ediyoruz. JSON_OBJECTAGG fonksiyonu, sonuç kümesindeki sütunları JSON nesnesi olarak döndürür ve her bir sütunu anahtar olarak kullanır. Her satırın uygun anahtarındaki değerler bir dizi nesnesinde depolanır.

Bu fonksiyon, işlemin örnekteki aşağıdaki gibi gerçekleştirilmesine olanak tanır:

Özellik Açıklama
JSON_OBJECTAGG(key, value) JSON nesnesi olarak birleştirilecek sütunları belirtir. "key" değeri anahtar olarak kullanılır ve "value" değeri birleştirilmiş JSON nesnesinin değerini temsil eder.
key JSON nesnesi içindeki anahtar
value JSON nesnesi içindeki değer

JSON_OBJECTAGG fonksiyonu kullanılırken, her sütunun benzersiz bir anahtarı olmalıdır. Aynı anahtar kullanıldığında hata alınabilir. Örnek vermek gerekirse;

SELECT JSON_OBJECTAGG(name, age) FROM my_table;

Yukarıdaki kod bloğu, "my_table" tablosundaki "name" ve "age" sütunlarının her bir satırını JSON nesnesi olarak döndürür. "name" sütunu için isim anahtar olarak kullanılırken, "age" sütunu değer olarak kullanılır.


JSON_INSERT Fonksiyonu

MySQL'de kullanabileceğiniz faydalı dizi fonksiyonları arasında, JSON_INSERT fonksiyonu da yer almaktadır. Bu fonksiyon, JSON belgesinde yer alan değerleri güncellemek için kullanılır ve belirtilen yolun sonuna yeni bir değer ekler.

JSON_INSERT fonksiyonu, üç argüman alır. İlk argüman, güncellemek istediğiniz JSON belgesidir. İkinci argüman ise, JSON belgesinde güncellenmek istenen değerin yolu veya konumudur. Son argüman ise, JSON belgesinde eklenmesi gereken yeni değerdir. Bu değerler belirtilen yere yerleştirilecektir.

JSON belgesinin bir örneği aşağıdaki gibi görünebilir:

id name age
1 John Doe 25
2 Jane Smith 30

Bu belgedeki "John Doe" değerini "John Smith" olarak değiştirmek istediğimizde, JSON_INSERT fonksiyonunu kullanabiliriz. Yeni değeri eklemek için, belirlediğimiz yere ("name" alanı) "John Smith" değerini ekleriz. Bu işlem, aşağıdaki kod bloğunda gösterildiği gibidir:

SELECT JSON_INSERT('{"id": 1, "name": "John Doe", "age": 25}',                '$.name',                'John Smith'              );

Yukarıdaki kod bloğunda, JSON_INSERT fonksiyonuna üç parametre geçirilmiştir. İlk parametre, güncellenmesi istenen JSON belgesidir. İkinci parametre, güncellenmesi istenen alanın yolu veya konumudur. Son parametre ise, belirtilen yere eklenecek yeni değerdir. Bu örnekte, "name" alanındaki "John Doe" değeri "John Smith" ile değiştirilir.


JSON_REMOVE Fonksiyonu

JSON_REMOVE fonksiyonu, MySQL'de JSON belgesinin içindeki belirli bir değeri kaldırmak için kullanılır. Kendisi birinci argüman olarak belirtilen JSON belgesinde, ikinci argümanı olarak belirtilen yoldaki herhangi bir değeri kaldırır ve sonuç olarak güncellenmiş JSON belgesini döndürür.

Bir JSON objesi, girdi olarak JSON_REMOVE fonksiyonuna verilir ve hangi özellik kaldırılmak istendiği belirtilir. Bu özellik, JSON nesnesi yolu kullanılarak belirlenir. JSON nesnesi, yollarını sınavına sunarak whenJSON belge üzerinde adı geçen yolu içeren objeleri bulma özelliğine sahiptir. Bu objeler daha sonra JSON belgesinden kaldırılabilir.

JSON_REMOVE fonksiyonu, özellik değerleri null olan JSON öğelerini kaldıramaz. Bu nedenle, bir JSON belgesinden null öğeleri temizlemek isterseniz, JSON_MODIFY fonksiyonunu kullanmanız gerekir.

Bir örnek verelim. Aşağıdaki JSON belgesindeki "quantity" adlı öğeyi kaldırmak istediğinizi varsayalım:

JSON Belgesi
{ "item": "Süper Shampoo", "price": 15.99, "quantity": 2, "promo": true}

Aşağıdaki sorgu, "quantity" öğesinin belgesindeki öğelerden kaldırılmasını sağlar:

  • SET @j = '{ "item": "Süper Shampoo", "price": 15.99, "quantity": 2, "promo": true }';
  • SELECT JSON_REMOVE(@j, '$.quantity');

Sorgunun sonucu,

JSON Belgesi
{ "item": "Süper Shampoo", "price": 15.99, "promo": true}

olarak verilecektir.


GREATEST Fonksiyonu

GREATEST fonksiyonu, bir veya daha fazla değerin karşılaştırmasını yapmak için kullanılır ve en büyük olanı geri döndürür. Bu fonksiyonun kullanımına örnek olarak, ürün fiyatlarının karşılaştırılması verilebilir. Eğer bir kullanıcı, birden fazla ürünün fiyatına bakmak istiyorsa, GREATEST fonksiyonu kullanarak en yüksek fiyatı bulabilir.

Bunun için öncelikle ürünlerin fiyatlarını bir dizi olarak tanımlamak gerekiyor. Daha sonra GREATEST fonksiyonu, bu diziyi alacak ve en büyük değeri geri döndürecektir. Bu fonksiyon, bir dizinin tüm öğelerini tek tek almak yerine, bir dizi argüman alabilir ve bu argümanların arasında bir karşılaştırma yapar.

Örneğin, üç farklı ürünün fiyatını karşılaştırmak istediğimizi varsayalım. Ürünlerin fiyatları sırasıyla 50, 75 ve 100 lira olsun. Bu durumda, GREATEST fonksiyonunu kullanarak en yüksek fiyatı bulmak mümkündür. Şöyle bir sorgu yazılabilir:

Ürün Adı Fiyat
Ürün 1 50
Ürün 2 75
Ürün 3 100
GREATEST(50, 75, 100) 

Bu sorgu, 100 sonucunu döndürecektir, çünkü 100 en büyük fiyattır. GREATEST fonksiyonu, diğer dizilerle de kullanılabilir ve bu sayede en büyük değeri döndürebilir.


UNNEST Fonksiyonu

UNNEST fonksiyonunun kullanımı oldukça faydalıdır. Çok boyutlu dizilerdeki tüm öğeleri tek bir boyutta birleştirerek görüntülemek mümkündür. Bu fonksiyon, birden fazla diziye sahip olabilir, ancak bu dizilerin boyutları aynı olmalıdır. Aksi takdirde, UNNEST fonksiyonu hata verebilir.

UNNEST fonksiyonunun kullanımı, bir öğrenci veritabanından örnek olarak gösterilebilir. Öğrenci veritabanındaki öğrenci adları ve notlarına dayalı bir tablo olsun. Veriler iki boyutlu bir dizi formatında olabilir.

Öğrenci Adı Notları
Ali [60, 70, 75]
Ayşe [80, 85, 90]

Bu veriyi, UNNEST fonksiyonu kullanarak aşağıdaki şekilde görüntüleyebilirsiniz:

Öğrenci Adı Notları
Ali 60
Ali 70
Ali 75
Ayşe 80
Ayşe 85
Ayşe 90

UNNEST fonksiyonunun bir diğer kullanımı, bir tablonun belirli bir sütununun tüm değerlerini birleştirmektir. Bu durumda, tek bir dizi oluşturmak için birleştirilmiş değerler kullanılabilir.

UNNEST fonksiyonu, MySQL'de dizileri bir boyuta indirgemek için kullanışlı bir araçtır ve birden fazla dizi öğesini birleştirmek için kullanılabilir.


ARRAY_AGG Fonksiyonu

MySQL'de ARRAY_AGG fonksiyonu, benzersiz değerlerin bir dizi nesnesini döndürerek daha uzun dizileri kısaltmak için kullanılır. Bu fonksiyon, bir sütundaki birleşik tüm benzersiz değerleri biraraya getirir. Bu, bu değerlerin elde edilmesi için yararlıdır, bu değerler birleşik olarak daha kolay kullanılabilir, daha hızlı arama yapılabilir veya bir sütundaki benzersiz değerleri saymayı mümkün kılar.

Bir örnek olarak, aşağıdaki SQL sorgusu "Customers" tablosundaki "City" sütununda yer alan benzersiz şehir isimlerini array_agg ile sorgulayarak döndürür:

SELECT ARRAY_AGG(DISTINCT City) AS Cities FROM Customers;

Bu sorgu, "Customers" tablosundaki şehirlerin benzersiz isimlerini içeren bir dizi nesnesi döndürür.

ARRAY_AGG fonksiyonu, sorgu sonuç kümesinin boyutunu azaltarak etkili sonuçlar sağlar. Bu fonksiyon, sorgularınızda özellikle büyük veri tabanları üzerinde verimlilik sağlayarak uygulamanız için yararlı bir araçtır.


ARRAY_APPEND Fonksiyonu

MySQL'de dizilere öğe eklemek nispeten kolay bir işlemdir. Dizileri güncellemek ve uzatmak için kullanılan birkaç fonksiyondan biri ARRAY_APPEND fonksiyonudur. Bu fonksiyon, bir diziye yeni öğeler eklemek için kullanılır ve eklenen öğelerin bulunduğu yeni bir dizi nesnesi döndürür.

ARRAY_APPEND fonksiyonu, kaynak dizisine eklenen öğeleri tespit ederek geri kalanı yeni bir dizide tutar. Kaynak dizi, ARRAY_APPEND fonksiyonunun kullanımı için zorunlu bir parametredir. ARRAY_APPEND fonksiyonu, kaynak dizisi adını ve eklenecek öğeleri içeren bir virgülle ayrılmış liste olarak iki parametre alır. Bu nedenle, kaynak diziye ekleme yapmak isterseniz, ARRAY_APPEND'i kullanarak birinci parametreden sonra diğer öğeleri liste formatında ekleyebilirsiniz.

ARRAY_APPEND Söz Dizimi Açıklama
ARRAY_APPEND(dizi1, öğe1, öğe2, ... , öğen) Kaynak dizisinin adını ve eklenecek öğelerin listesini alır ve geriye yeni bir dizi nesnesi döndürür.

ARRAY_APPEND fonksiyonu, kaynak dizide değişiklik yapmaz ve her zaman yeni bir dizi nesnesi oluşturur. Dönen dizi nesnesi, kaynak diziye eklenen öğeleri ve kaynak dizinin geri kalanını içerir.

Örneğin, aşağıdaki SQL sorgusu, kaynak dizinin sonuna yeni olan "11" ve "12" öğelerini ekleyerek yeni bir dizi nesnesi oluşturur:

  • SELECT ARRAY_APPEND(ARRAY[1, 2, 3, 4, 5], 11, 12);
    Çıktı: {1, 2, 3, 4, 5, 11, 12}

Burada ARRAY_APPEND fonksiyonu, "1, 2, 3, 4, 5" dizisine "11" ve "12" öğelerini ekleyerek, yeni bir dizi nesnesi olan "{1, 2, 3, 4, 5, 11, 12}" sonucunu döndürür.

ARRAY_APPEND fonksiyonunun diğer önemli bir kullanımı ise, bir kaynak dizinin filtrelenmiş bir sürümünü (yeni bir dizi nesnesi olarak) oluşturmak için kullanmaktır. Filtre, WHERE koşulu ile uygulanabilir ve geçerli nesnelerin bir alt kümesini diziye eklemek için ARRAY_APPEND kullanılır.


Subheading2

MySQL'de iki farklı fonksiyon bulunur: UNION ve UNION ALL. Bu fonksiyonlar, iki diziyi birleştirmek için kullanılabilir. Ancak her ikisi de birbirinden farklı şekillerde çalışır.

UNION, her iki diziden de yinelenen öğeleri tek bir öğe olarak birleştirir. Bu fonksiyon, yinelenen öğeleri ortadan kaldırmak için kullanılır. Ayrıca, iki dizinin herhangi birinde yinelenen bir öğe varsa, bu öğe yalnızca sonuç kümesinde bir kez yer alır. Bu fonksiyonun kullanımı, birçok benzersiz öğe içeren kesin bir sonuç gerektiren durumlarda tercih edilir.

Öte yandan, UNION ALL, iki veya daha fazla dizinin tüm satırlarını birleştirir ve yinelenen öğeleri tek bir öğe olarak birleştirmez. Bu seçenek, nihai sonuç kümesinde yinelenen öğelerin bulunmasına izin verir. Bu fonksiyon, yalnızca iki veya daha fazla dizinin tüm bilgilerine ihtiyacınız varsa, ancak yinelenen öğelerle başa çıkabilecek durumdaysanız idealdir.

Hangi fonksiyonu kullanacağınıza karar verirken, amaçlarınızı ve ihtiyaçlarınızı dikkatlice değerlendirmeniz önemlidir. Verilerinizin yinelenen öğeler içerip içermediğine ve sonuçların kesinlikle benzersiz olup olmamasına bağlı olarak fonksiyon seçiminizi yapmanız gerekmektedir.


UNION Fonksiyonu

MySQL'deki dizilerin birleştirilmesi, verilerin daha anlamlı hale getirilmesinde önemli bir rol oynar. İki dizi kümesi birleştirildiğinde, herhangi bir yinelenen öğe tek bir öğe olarak birleştirilir. Bu işlevsellik, birçok veritabanı yöneticisi tarafından kullanılır. Bu kapsamda, UNION Fonksiyonu kesinlikle öne çıkan bir işlemdir.

Birleştirme işlemi yaparken, her dizi kümesinin sahip olduğu sütun sayısının eşit olması gerekir. Ayrıca, sütunların veri tipi ve boyutları da benzer olmalıdır. Eğer farklı bir veri tipi veya sütun sayısı mevcutsa, bir hata mesajı ile karşılaşırsınız.

Dizi birleştirme işlemi gerçekleştirirken, öğeler sırasıyla birleştirilir. Bu nedenle, ilk dizi kümesi öğeleri ilk sırada görünürken, ikinci dizi kümesi öğeleri ikinci sırada görünür.

UNION fonksiyonu, yani iki dizi kümesinin birleştirilmesi, iki veya daha fazla dizinin birleştirilmesinde kullanılabilir. Her yinelenen öğe sadece bir kez önyüzde görünür ve veriler daha anlamlı hale getirilir.


UNION ALL Fonksiyonu

UNION söz konusu olduğunda, yinelenen satırlar çıkarılır ve tek bir öğe olarak birleştirilir. Ancak UNION ALL fonksiyonunu kullanırsanız, bu yinelenen satırlar iki dizi kümesinin de satırlarında kalır. Bu, iki veya daha fazla dizinin tamamındaki tüm öğelerin birleştirilmesi gerektiği durumlarda özellikle yararlıdır.

Bu fonksiyon, kaynak dizilerin tüm satırlarını tamamlayacak şekilde tüm satırları birleştirir. Bu, aynı satırdaki iki farklı sütunun birleştirilmesi gereken zamanlarda da yararlıdır. Örneğin, 'Ürünler' ve 'Stoklar' adlı iki farklı tablonuz var ve bu tablolar aynı ürünleri içeriyor, ancak birinde stok seviyesi yüksek ve diğerinde düşük. UNION ALL fonksiyonunu kullanarak, bu iki tablonun tüm satırları birleştirilir ve her ürünün yüksek ve düşük stok seviyeleri dahil edilir.