MySQL 5.7.8 ve sonraki sürümler, JSON (JavaScript Object Notation) veri türünü destekler. Bu özellik, JSON formatındaki verileri veritabanında saklamayı ve bu veriler üzerinde çeşitli işlemler yapmayı kolaylaştırır. Bu yazıda, MySQL’de JSON veri türünün nasıl kullanılacağını, JSON verilerinin nasıl ekleneceğini, güncelleneceğini ve nasıl çıkarılacağını ele alacağız.
#### 1. JSON Veri Türü ile Tablo Oluşturma
JSON veri türü, bir tabloda JSON formatında veri saklamak için kullanılır. Aşağıdaki örnekte, birincil anahtar ve JSON sütunu içeren bir tablo oluşturulmuştur:
“`sql
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
json_col JSON,
PRIMARY KEY(id)
);
“`
#### 2. JSON Verisi Ekleme
JSON verisi, bir tabloya eklenirken JSON formatında bir dize olarak belirtilir. JSON anahtarları çift tırnak içinde olmalıdır.
##### Örnek: Basit JSON Verisi Ekleme
“`sql
INSERT INTO table_name (json_col)
VALUES (‘{“city”: “Galle”, “Description”: “Best damn city in the world”}’);
“`
Bu örnekte, `json_col` sütununa bir JSON nesnesi eklenmiştir.
#### 3. JSON Verisini Güncelleme
JSON verisini güncellemek için `JSON_ARRAY_APPEND`, `JSON_SET` gibi JSON fonksiyonları kullanılır.
##### Örnek: JSON Dizisine Eleman Ekleme
Aşağıdaki örnekte, `variations` dizisine yeni bir eleman eklenmiştir:
“`sql
UPDATE myjson
SET dict = JSON_ARRAY_APPEND(dict, ‘$.variations’, ‘scheveningen’)
WHERE id = 2;
“`
**Sonuç:**
“`
+—+—+
| id | dict |
+—+—+
| 2 | {“opening”: “Sicilian”, “variations”: [“pelikan”, “dragon”, “najdorf”, “scheveningen”]} |
+—+—+
“`
#### 4. JSON Verisini CAST ile Dönüştürme
JSON formatındaki bir dizeyi JSON veri türüne dönüştürmek için `CAST` fonksiyonu kullanılır.
##### Örnek: JSON Dizesini JSON Türüne Dönüştürme
“`sql
SELECT CAST(‘[1,2,3]’ AS JSON);
SELECT CAST(‘{“opening”:”Sicilian”,”variations”:[“pelikan”,”dragon”,”najdorf”]}’ AS JSON);
“`
#### 5. JSON Nesnesi ve Dizisi Oluşturma
`JSON_OBJECT` ve `JSON_ARRAY` fonksiyonları ile JSON nesneleri ve dizileri oluşturulabilir.
##### Örnek: JSON Nesnesi ve Dizisi Oluşturma
“`sql
SELECT JSON_OBJECT(‘key1’, col1, ‘key2’, col2, ‘key3’, ‘col3’) AS myobj;
SELECT JSON_ARRAY(col1, col2, ‘col3’) AS myarray;
“`
Karışık JSON verisi oluşturmak için:
“`sql
SELECT JSON_OBJECT(“opening”, “Sicilian”, “variations”, JSON_ARRAY(“pelikan”, “dragon”, “najdorf”)) AS mymixed;
“`
#### 6. JSON Verisinden Değer Çıkarma
JSON verisinden belirli değerleri çıkarmak için `JSON_EXTRACT` fonksiyonu veya `->`, `->>` operatörleri kullanılır.
##### Örnek: JSON Dizisinden Değer Çıkarma
“`sql
SET @myjson = CAST(‘[{“A”:”B”},{“id”:1,”label”:”C”}]’ AS JSON);
SELECT
JSON_EXTRACT(@myjson, ‘$[1]’),
JSON_EXTRACT(@myjson, ‘$[*].label’),
JSON_EXTRACT(@myjson, ‘$[1].*’),
JSON_EXTRACT(@myjson, ‘$[2].*’);
“`
**Sonuç:**
“`
+—+—+
| JSON_EXTRACT(@myjson, ‘$[1]’) | JSON_EXTRACT(@myjson, ‘$[*].label’) | JSON_EXTRACT(@myjson, ‘$[1].*’) | JSON_EXTRACT(@myjson, ‘$[2].*’) |
+—+—+
| {“id”: 1, “label”: “C”} | [“C”] | [1, “C”] | NULL |
+—+—+
“`
##### Örnek: JSON Operatörleri ile Değer Çıkarma
“`sql
SELECT
myjson_col->>’$[1]’,
myjson_col->’$[1]’,
myjson_col->>’$[*].label’,
myjson_col->>’$[1].*’,
myjson_col->>’$[2].*’
FROM tablename;
“`
**Sonuç:**
“`
+—+—+
| myjson_col->>’$[1]’ | myjson_col->’$[1]’ | myjson_col->>’$[*].label’ | myjson_col->>’$[1].*’ | myjson_col->>’$[2].*’ |
+—+—+
| {“id”: 1, “label”: “C”} | {“id”: 1, “label”: “C”} | [“C”] | [1, “C”] | NULL |
+—+—+
“`
#### Sonuç
MySQL’de JSON veri türü, esnek ve güçlü bir şekilde JSON formatındaki verileri saklamayı ve işlemeyi sağlar. JSON verilerini eklemek, güncellemek ve çıkarmak için çeşitli fonksiyonlar ve operatörler kullanılabilir. Bu özellikleri kullanarak, modern uygulamaların ihtiyaç duyduğu esnek veri yapılarını kolayca yönetebilirsiniz. Bir sonraki yazıda görüşmek üzere!