Tidak semua data cocok dipaksa ke kolom tetap. MySQL 8.4 menyimpan JSON secara terstruktur dan menyediakan bahasa path untuk membaca serta mengubah isinya. Section ini menguji seluruh fungsi JSON praktis dan menimbang kapan JSON lebih baik dari kolom biasa.
Simpan dokumen semi terstruktur pada kolom JSON MySQL 8.4: validasi otomatis yang menolak teks cacat dengan error 3140, format internal biner yang menormalisasi urutan kunci dan spasi, perbedaan JSON versus TEXT, serta pemeriksaan JSON_VALID dan JSON_TYPE.
Buka → # Membaca Nilai JSONBaca bagian dalam dokumen JSON dengan operator path -> dan ->> di MySQL 8.4: perbedaan hasil JSON berkutip versus teks polos, padanan JSON_EXTRACT dan JSON_UNQUOTE, penjangkauan nilai bersarang serta elemen array lewat indeks, NULL saat path tidak ditemukan, dan pengantar karakter pengganti [*].
Buka → # JSON PathBedah lengkap sintaks JSON Path di MySQL 8.4: akar $, akses anggota dan indeks, wildcard $[*] dan $.*, array bersarang, perilaku autowrap, kenyataan bahwa filter path $?(@.harga > 100) tidak didukung, serta pencarian nilai dengan JSON_SEARCH, MEMBER OF, dan JSON_CONTAINS_PATH.
Buka → # Mengubah Data JSONUbah isi dokumen JSON di MySQL 8.4 dengan empat fungsi modifikasi: JSON_SET, JSON_INSERT, JSON_REPLACE, dan JSON_REMOVE — dibedah berdampingan pada dokumen yang sama, plus pola UPDATE untuk menyimpan hasil perubahan serta JSON_ARRAY_APPEND dan JSON_ARRAY_INSERT untuk array.
Buka → # JSON FunctionsKotak perkakas fungsi JSON MySQL 8.4: mengukur dokumen dengan JSON_LENGTH, JSON_DEPTH, dan JSON_KEYS, menguji keanggotaan dengan JSON_CONTAINS, membedah perbedaan JSON_MERGE_PATCH versus JSON_MERGE_PRESERVE, membangun dokumen dengan JSON_OBJECT dan JSON_ARRAY, menampilkan rapi dengan JSON_PRETTY, serta pengantar JSON_TABLE.
Buka → # GENERATED COLUMNS dari JSONTarik nilai JSON ke kolom generated MySQL 8.4 — VIRTUAL atau STORED — lalu buat index padanya agar filter seperti harga di atas ambang tertentu berjalan lewat index range, bukan parsing dokumen per baris; termasuk bukti optimizer yang memakai index tersebut bahkan saat query masih menulis path JSON mentah.
Buka → # Memilih JSON Vs Relational COLUMNSPanduan keputusan memilih kolom JSON atau kolom relasional di MySQL 8.4: kapan JSON unggul karena skema bervariasi dan data passthrough, kapan kolom relasional wajib karena relasi, integritas tipe, dan agregasi, contoh skema hibrida yang menggabungkan keduanya, serta anti-pattern JSON untuk segalanya.
Buka →