Süper detaylı mysql veritabanı json alan türü sözdizimi tamamlandı

Genel Bakış

Geçmişte, bu tür bileşik veri alanlarının türü olarak genellikle MySQL'in VARCHAR veya TEXT'ini seçtik. 5.7.8'den başlayarak MySQL, standart alan türlerinden biri olarak JSON kullanır.

JSON biçimindeki düz metin alanlarıyla karşılaştırıldığında, JSON türü alanların aşağıdaki avantajları vardır:

  • JSON biçimini otomatik olarak doğrulayın . Eklenen veriler JSON belirtimine uymuyorsa bir hata bildirilecektir.
  • Not: MySQL'deki yasal JSON dize biçimi, genellikle uğraştığımız JSON verilerinden biraz farklı olabilir. Bazı senaryolarda, JSON dizelerini tek değerden ("1" gibi) bağımsız olarak nesnelere ({...}) veya dizilere () ayrıştırmaya alışkınız.
  • Optimize edilmiş depolama biçimi . JSON içerik öğelerini okumak daha hızlıdır.
  • Çünkü MySQL tarafından sağlanan dahili veri yapısı, diğer verileri işlemeden içerik öğesinin anahtarı veya dizini aracılığıyla hedef verilere doğrudan erişime izin verir. Tüm içeriği okuyan ve ardından analiz eden önceki üst düzey uygulamadan daha hızlıdır.

1. Kayıtlar üzerindeki işlemler

1. json alanları içeren bir tablo oluşturun

- Tablo oluştur CREATE TABLE t_json (id INT PRIMARY KEY, sname VARCHAR (20), info JSON);

2. Kayıt ekleyin

- Bir json dizisi içeren bir kayıt ekleyin INSERT INTO t_json (id, sname, info) VALUES (1, 'ad1', JSON_ARRAY (1, "abc", NULL, TRUE, CURTIME ())); - json nesnelerini içeren kayıtları ekleyin INSERT INTO t_json (id, sname, info) VALUES (2, 'ad2', JSON_OBJECT ("yaş", 20, "zaman", şimdi ())); INSERT INTO t_json (id, sname, info) DEĞERLER (3, 'ad3', '{"yaş": 20, "zaman": "2018-07-1410:52:00"}');

3. Sorgu kayıtları

- Arama kaydı T_json'DAN JSON_EXTRACT (bilgi, '$. Yaş') SEÇİN; Sname, bilgi seçin > t_json'DAN '$ .age'; - Sorgu anahtarı T_json 'dan json_keys (bilgi) seçin;

4. Kaydı değiştirin

- Anahtar ekle GÜNCELLEME t_json SET info = json_set (bilgi, '$. İp', '192.168.1.1') NEREDE id = 2; - Değeri değiştir GÜNCELLEME t_json SET info = json_set (bilgi, '$. İp', '192.168.1.2') NEREDE id = 2; - Anahtarı sil GÜNCELLEME t_json SET info = json_remove (bilgi, '$. İp') NEREDE id = 2;

İki, bir json değer işlevi oluşturun

1. JSON_ARRAY json dizisi oluşturur

- JSON_ARRAY (değer1, değer2, değer3 ...) - Belirtilen öğeleri içeren bir json dizisi oluşturun. SELECT JSON_ARRAY (1, "abc", NULL, TRUE, CURTIME ()); -

2. JSON_OBJECT, json nesnesi oluşturur

- JSON_OBJECT (anahtar1, değer1, anahtar2, değer2 ...) - Belirtilen K-V çiftini içeren bir json nesnesi oluşturun. Anahtar NULL ise veya parametre sayısı tuhafsa, bir hata atılacaktır. SELECT JSON_OBJECT ('yaş', 20, 'zaman', şimdi ()); - {"id": 87, "ad": "havuç"}

3. JSON_QUOTE artı "işareti

- JSON_QUOTE (json_val) - json_val öğesini "ile kapatın. SELECT JSON_QUOTE (''); - ""

Üç, json değeri arama işlevi

1.JSON_CONTAINS, verilerin mevcut olup olmadığını belirtir

set @j = '{"a": 1, "b": 2, "c": {"d": 4}}'; - JSON_CONTAINS (json_doc, val) - json belgesinin belirtilen yolda belirtilen verileri içerip içermediğini sorgulayın, içeriyorsa 1 döndür, aksi takdirde 0 döndür. Herhangi bir parametre NULL ise veya yol yoksa, NULL döndürülür. JSON_CONTAINS SEÇİN (@j, '4', '$. C.d'); - 1

2.JSON_CONTAINS_PATH, yolun mevcut olup olmadığını belirtir

- JSON_CONTAINS_PATH (json_doc, one_or_all, yol ...) - Belirtilen yolun var olup olmadığını sorgulayın ve varsa 1 döndür, aksi takdirde 0 döndürür. Herhangi bir parametre NULL ise, NULL döndürülür. - one_or_all yalnızca "bir" veya "tümü" değerini alabilir, biri var olduğu sürece anlamına gelir; hepsi var demektir. SELECT JSON_CONTAINS_PATH (@ j, 'bir', '$. A', '$. E'); - 1 SELECT JSON_CONTAINS_PATH (@ j, 'tümü', '$. A', '$. C.d'); - 1

3. JSON_EXTRACT belirtilen tüm verileri bulur

- JSON_EXTRACT (json_doc, yol ...) - json belgelerinden verileri çıkarın. Herhangi bir parametrede NULL varsa veya yol yoksa, NULL döndürülür. Birden çok yol çıkarılırsa, döndürülen veriler bir json dizisi içine alınır. set @ j2 = ''; SELECT JSON_EXTRACT ('', '$'); - 20 SELECT JSON_EXTRACT ('', '$', '$'); - SELECT JSON_EXTRACT ('', '$'); -

4. JSON_KEYS, belirtilen tüm anahtar değerlerini bulur

- JSON_KEYS (json_doc) - Belirtilen yol altındaki json belgesinin tüm anahtar değerlerini alın ve bir json dizisi döndürün. Herhangi bir parametre NULL ise veya yol yoksa, NULL döndürülür. JSON_KEYS SEÇİN ('{"a": 1, "b": {"c": 30}}'); - JSON_KEYS SEÇİN ('{"a": 1, "b": {"c": 30}}', '$. B'); - T_json 'dan json_keys (bilgi) seçin;

5. JSON_SEARCH, belirtilen tüm değerlerin yerini bulur

- JSON_SEARCH (json_doc, one_or_all, search_str) - Belirtilen dizeyi içeren sorgu yolları ve bunu bir json dizisi olarak döndürür. Herhangi bir parametre NUL ise veya yol yoksa, NULL döndürülür. - one_or_all: "bir", biri bulunduğunda sorgunun döneceği anlamına gelir; "tümü", tümünü sorgu anlamına gelir. - search_str: Sorgulanacak dizge. Eşleştirmek için LIKE içindeki '%' veya'_ 'kullanabilirsiniz. - yol: Belirtilen yolun altında kontrol edin. SET @ j3 = ''; SELECT JSON_SEARCH (@ j3, 'bir', 'abc'); - "$" SELECT JSON_SEARCH (@ j3, 'tümü', 'abc'); - JSON_SEARCH (@ j3, 'tümü', 'abc', NULL, '$'); - "$ .x" SEÇİN SELECT JSON_SEARCH (@ j3, 'tümü', '10'); - "$ .k" SELECT JSON_SEARCH (@ j3, 'tümü', '% b%'); - SELECT JSON_SEARCH (@ j3, 'all', '% b%', NULL, '$'); - "$ .x"

Dördüncü olarak, json değer işlevini değiştirin

1. JSON_ARRAY_APPEND, belirtilen konuma dizi öğeleri ekler

- JSON_ARRAY_APPEND (json_doc, yol, değer ...) - Belirtilen yolun json dizisinin sonuna val ekleyin. Belirtilen yol bir json nesnesiyse, bir json dizisi içine kapsüllenecek ve sonra eklenecektir. Herhangi bir parametre NULL ise, NULL döndürülür. SET @ j4 = ''; - JSON_ARRAY_APPEND SEÇİN (@ j4, '$', 3); - SET @ j5 = '{"a": 1, "b" :, "c": 4}'; SELECT JSON_ARRAY_APPEND (@ j5, '$. B', 'x'); - {"a": 1, "b" :, "c": 4} SELECT JSON_ARRAY_APPEND (@ j5, '$. C', 'y'); - {"a": 1, "b" :, "c":} SELECT JSON_ARRAY_APPEND (@ j5, '$', 'z'); -

2. JSON_ARRAY_INSERT, belirtilen konuma bir dizi öğesi ekler

- JSON_ARRAY_INSERT (json_doc, yol, değer ...) - yol tarafından belirtilen json dizi öğesine val ekleyin, orijinal konum ve sağdaki öğeler sırayla sağa taşınır. Yol tarafından belirtilen veriler bir json dizi öğesi değilse, bu değeri atlayın; belirtilen öğe dizini json dizisinin uzunluğunu aşarsa, kuyruk eklenir. SET @ j6 = ''; SELECT JSON_ARRAY_INSERT (@ j6, '$', 'x'); - SELECT JSON_ARRAY_INSERT (@ j6, '$', 'x'); - SELECT JSON_ARRAY_INSERT (@ j6, '$. B', 'x'); - SELECT JSON_ARRAY_INSERT (@ j6, '$', 'x', '$', 'y'); -

3. JSON_INSERT belirtilen konuma ekle

- JSON_INSERT (json_doc, yol, değer ...) - Belirtilen yolun altına veri girin Yol zaten varsa, bu değeri göz ardı edin (yoksa ekleyin). SET @ j7 = '{"a": 1, "b":}'; SELECT JSON_INSERT (@ j7, '$. A', 10, '$. C', ''); - {"a": 1, "b" :, "c": ""}

4. JSON_REPLACE belirtilen konum değişimi

- JSON_REPLACE (json_doc, yol, değer ...) - Belirtilen yolun verilerini değiştirin, bir yol yoksa, atlayın (yalnızca varsa değiştirin). Herhangi bir parametre NULL ise, NULL döndürülür. JSON_REPLACE (@ j7, '$. A', 10, '$. C', ''); - {"a": 10, "b":} SEÇİN

5. JSON_SET konum ayarını belirtir

- JSON_SET (json_doc, yol, değer ...) - Belirtilen yolun verilerini ayarlayın (var olup olmadığına bakılmaksızın). Herhangi bir parametre NULL ise, NULL döndürülür. JSON_SET SEÇİNİZ (@ j7, '$. A', 10, '$. C', ''); - {"a": 10, "b" :, "c": ""}

6. JSON_MERGE birleştirme

- JSON_MERGE (json_doc, json_doc ...) - Birden çok json belgesini birleştirin. Kurallar aşağıdaki gibidir: - Her ikisi de json dizisiyse, sonuç otomatik olarak bir json dizisinde birleşecektir; - Her ikisi de json nesnesiyse, sonuç otomatik olarak bir json nesnesine birleştirilir; - Birden fazla tür varsa, json olmayan dizi öğelerini json dizisine kapsülleyin ve kural 1'e göre mege gerçekleştirin. SELECT JSON_MERGE ('', ''); - JSON_MERGE SEÇİN ('{"ad": "x"}', '{"kimlik": 47}'); - {"kimlik": 47, "ad": "x"} SELECT JSON_MERGE ('1', 'true'); - SELECT JSON_MERGE ('', '{"id": 47}'); -

7. JSON_REMOVE belirtilen konumu kaldırın

- JSON_REMOVE (json_doc, yol ...) - Belirtilen yolun verilerini kaldırın, bir yol yoksa bu yolu atlayın. Herhangi bir parametre NULL ise, NULL döndürülür. SET @ j8 = ''; SELECT JSON_REMOVE (@ j8, '$'); -

8. JSON_UNQUOTE "numaraya git

- JSON_UNQUOTE (değer) - val'den tırnak işaretlerini kaldırın. Val NULL ise, NULL döndürülür. SELECT JSON_UNQUOTE ("\" 123 \ ""); - 123

Beş, json değer özniteliğinin işlevini döndür

1.JSON_DEPTH derinlik

- JSON_DEPTH (json_doc) - JSON belgesinin derinliğini öğrenin. Parametre NULL ise, NULL döndürülür. - Boş bir json dizisinin, json nesnesinin veya skalerin derinliği 1'dir. SELECT JSON_DEPTH ('()'), JSON_DEPTH [''), JSON_DEPTH ('true'); - 11 1 SELECT JSON_DEPTH (''), JSON_DEPTH (''); - 22 JSON_DEPTH ('') SEÇİN; - 3

2. JSON_LENGTH uzunluğu

- JSON_LENGTH (json_doc) - Belirtilen yolun altındaki uzunluğu alın. Parametre NULL ise, NULL döndürülür. - Uzunluk hesaplama kuralları: - Skalerin uzunluğu 1'dir; - json dizisinin uzunluğu, eleman sayısıdır; - json nesnesinin uzunluğu anahtarların sayısıdır. JSON_LENGTH ('') SEÇİN; - 3 SELECT JSON_LENGTH ('{"a": 1, "b": {"c": 30}}'); - 2 SEÇİN JSON_LENGTH ('{"a": 1, "b": {"c": 30}}', '$. B'); - 1

3. JSON_TYPE türü

- JSON_TYPE (json_val) - Spesifik json belgesi türünü alın. Parametre NULL ise, NULL döndürülür. JSON_TYPE ('') seçin; - ARRAY

4. JSON_VALID, json biçiminde geçerlidir

- JSON_VALID (değer) - val'in 0 değil 1 olan geçerli bir json biçimi olup olmadığını belirleyin. Parametre NUL ise, NULL döndürülür. SELECT JSON_VALID ('{"a": 1}'); - 1 SELECT JSON_VALID ('merhaba'), JSON_VALID ('"merhaba"'); - 1

Altı, işlev açıklaması

Daha sonra daha fazla devop ve DBA içeriği paylaşacağım ve ilgilenen arkadaşlar buna dikkat edebilir ~

"Ruhların Kaçışı" nda bir yetişkinin anlayacağı 10 gerçek
önceki
20 milyar dövüş balığı nihayet listelendi! Wang Sicong, canlı yayında iyi bir iş çıkarmadı, bu büyük adam Tanrı unvanı için savaştı
Sonraki
25 yaşındayım, geçen ay kızartma ayakkabılarından sadece 1 milyon kazandım
Mysql veritabanı kontrol noktası mekanizmasının ayrıntılı açıklaması, toplamaya değer
SF Wangwei: Arenada bunu kendiniz yapabilirsiniz
Linux dosya sistemi-EXT4 dosya sisteminin ayrıntılı açıklaması, toplamaya değer
Ma Yunun son sözleri, öğretmen önceliği eğitim önceliğidir
Yurt dışı tahvil ihracı ile ilgili yeni düzenlemeler, yeni borsada işlem gören şirketlerin "başarı olmadan geri dönmesine" izin verebilir
Xianyu'da bir rapçi olarak bir ayda ne kadar kazanabilirim?
Linux sistemi inode-hard link, soft link, innodb boyutu ve bölünmesi vb. İlkelerini açıklayın.
2019 Çin (Xinji) Uluslararası Deri ve Kürk Moda Haftası açılıyor
Ali Jingdong Tigerın ağzından yiyecek almaya cesaret edin, bu dört kelimeye dayanarak her gün milyonlar kazanıyor
MySQL veritabanı JSON türünü ayrıntılı kullanım, yani yerleşik işlevlerle açıklayın
Huawei TV'yi yeniden tanımlıyor! Xiaomi'den korkuyor musunuz?
To Top