Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menyimpan Data JSON di MySQL

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP:beberapa kueri SQL dalam satu pernyataan mysql_query

  2. Bagaimana Fungsi EXPORT_SET() Bekerja di MySQL

  3. hasilkan hari dari rentang tanggal

  4. Bagaimana cara menghubungkan ke MySQL di Amazon EC2 dari Linux / Mac?

  5. Bagaimana cara mengatur zona waktu MySQL?