MySQL memungkinkan Anda untuk menyimpan data JSON dalam tipe data JSON asli sejak versi 5.7.8. Ini memungkinkan Anda untuk menyimpan dokumen JSON dengan mudah, dan mengekstrak elemen data JSON tanpa konversi data. Pada artikel ini, kita akan melihat cara menyimpan data JSON di MySQL.
Tipe data MySQL JSON memungkinkan Anda untuk menyimpan data JSON sedemikian rupa sehingga Anda dapat dengan mudah membaca atau mencari nilai di dalamnya menggunakan indeks kunci atau array, membuatnya sangat cepat. Tidak perlu mengonversi teks ke JSON atau sebaliknya untuk kueri data.
Cara Menyimpan Data JSON di MySQL
Kita akan melihat bagaimana cara menyimpan data JSON di MySQL dan juga cara query kolom dengan tipe data JSON.
Berikut sintaks untuk mendefinisikan kolom JSON
column_name JSON
Harap diperhatikan, kolom tipe data JSON tidak boleh memiliki nilai default, juga tidak boleh memiliki indeks.
Baca Juga :Cara Membandingkan Nilai Null di MySQL
Contoh Tipe Data JSON MySQL
Berikut ini contoh tabel pengguna(id, detail) dimana id adalah bilangan bulat dan kunci utama sedangkan detail adalah kolom tipe data JSON.
create table users( id int auto_increment primary key, details json );
Cara Memasukkan JSON ke MySQL
Berikut query SQL untuk menyimpan dokumen JSON di MySQL.
insert into users(details) values( '{ "page": "/" , "name": "Safari", "os": "Mac", "spend": 100, "resolution": { "x": 1920, "y": 1080 } }' ), ( '{ "page": "/products", "name": "Chrome", "os": "Windows", "spend": 150, "resolution": { "x": 1680, "y": 1050 } }' ), ( '{ "page": "/shoes", "name": "Firefox", "os": "Windows", "spend": 200, "resolution": { "x": 1280, "y": 800 } }' );
Kami akan mengekstrak data dari kolom JSON menggunakan operator jalur kolom (->)
Berikut adalah contoh untuk mengambil nama browser untuk setiap pengguna.
mysql> select id, details->'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | "Safari" | | 2 | "Chrome" | | 3 | "Firefox" | +----+-----------+ 3 rows in set (0.00 sec)
Anda akan melihat bahwa kolom rincian memiliki tanda kutip ganda. Jika Anda ingin menghapus tanda kutip ganda, gunakan operator ->> sebagai gantinya
mysql> select id, details->>'$.name' details from users; +----+-----------+ | id | details | +----+-----------+ | 1 | Safari | | 2 | Chrome | | 3 | Firefox | +----+-----------+ 3 rows in set (0.00 sec)
Anda juga dapat menggabungkan klausa GROUP BY data JSON dan fungsi agregasi. Berikut adalah contoh untuk menghitung jumlah browser dalam data kami.
mysql> SELECT details->>'$.name' detail, count(detail) FROM users GROUP BY details->>'$.name';
Anda akan melihat output berikut
+---------+----------------+ | details | count(details) | +---------+----------------+ | Safari | 1 | | Firefox | 1 | | Chrome | 1 | +---------+----------------+ 3 rows in set (0.02 sec)
Demikian pula, Anda juga dapat menggunakan data JSON dalam klausa WHERE. Berikut ini contoh untuk memilih data dengan belanja> 100
mysql> SELECT id, SUM(details->>'$.spend') spend FROM users WHERE details->>'$.spend' > 100 GROUP BY id;
Semoga artikel ini membantu Anda bekerja dengan data JSON di MySQL. Ubiq memudahkan untuk memvisualisasikan data, dan memantaunya di dasbor waktu nyata. Coba Ubiq gratis.