Pengenalan Tipe Data JSON di SQLite

Kemarin rekan saya menanyakan penggunaan typedata JSON pada SQLite. Pada intinya, JSON pada SQLite diasosiasikan dalam type data TEXT. SQLite mempunya fungsi-fungsi untuk mengelola data json.

Saya mendapatkan artikel tentang penggunaannya di SQLite tutorial. Namun karena masih menggunakan Bahasa Inggris maka saya terjemahkan ke Bahasa Indonesia melalui Google Translate.  Selamat belajar …

Ringkasan : dalam tutorial ini, Anda akan mempelajari cara menyimpan data JSON dalam database SQLite dan memanfaatkan berbagai fungsi JSON SQLite untuk memanipulasinya secara efektif.

SQLite tidak memiliki tipe data JSON bawaan. Namun, Anda dapat menggunakan TEXT tipe data tersebut untuk menyimpan data JSON.

Selain itu, SQLite menyediakan berbagai fungsi dan operator JSON bawaan untuk memungkinkan Anda memanipulasi data JSON secara efektif.

Misalnya, pernyataan berikut membuat tabel yang dinamakan products untuk menyimpan data produk:

CREATE TABLE products (
    id      INTEGER PRIMARY KEY,
    name    TEXT NOT NULL,
    details TEXT NOT NULL
);Bahasa kode:  SQL (Structured Query Language)  ( sql )

Dalam productstabel:

  • id adalah kolom kunci utama .
  • name Kolom menyimpan nama produk.
  • details kolom menggunakan TEXTtipe data untuk menyimpan data JSON.

Memasukkan data JSON ke dalam database

Pernyataan berikut INSERTmemasukkan data JSON ke dalam detailskolom tabel products:

INSERT INTO products (name, details) VALUES ('iPhone 13', '{"category": "Electronics", "price": 999, "colors": ["Black", "Blue", "White"]}'), ('Samsung Galaxy S21', '{"category": "Electronics", "price": 899, "colors": ["Phantom Black", "Phantom Silver"]}'), ('Nike Air Force 1', '{"category": "Shoes", "price": 100, "colors": ["White", "Black"]}'), ('Adidas Ultraboost', '{"category": "Shoes", "price": 180, "colors": ["Core Black", "Cloud White"]}'), ('MacBook Pro', '{"category": "Electronics", "price": 1299, "colors": ["Silver", "Space Gray"]}'), ('Amazon Kindle', '{"category": "Electronics", "price": 79, "colors": ["Black"]}'), ('Sony PlayStation 5', '{"category": "Electronics", "price": 499, "colors": ["White"]}'), ('Cuisinart Coffee Maker', '{"category": "Home & Kitchen", "price": 99, "colors": ["Stainless Steel", "Black"]}'), ('Dyson V11 Vacuum Cleaner', '{"category": "Home & Kitchen", "price": 599, "colors": ["Iron", "Nickel"]}');

 

Berikut isi tabelnya products:

SELECT * FROM products;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

id | name                     | details
---+--------------------------+-----------------------------------------------------------------------------------------
1  | iPhone 13                | {"category": "Electronics", "price": 999, "colors": ["Black", "Blue", "White"]}
2  | Samsung Galaxy S21       | {"category": "Electronics", "price": 899, "colors": ["Phantom Black", "Phantom Silver"]}
3  | Nike Air Force 1         | {"category": "Shoes", "price": 100, "colors": ["White", "Black"]}
4  | Adidas Ultraboost        | {"category": "Shoes", "price": 180, "colors": ["Core Black", "Cloud White"]}
5  | MacBook Pro              | {"category": "Electronics", "price": 1299, "colors": ["Silver", "Space Gray"]}
6  | Amazon Kindle            | {"category": "Electronics", "price": 79, "colors": ["Black"]}
7  | Sony PlayStation 5       | {"category": "Electronics", "price": 499, "colors": ["White"]}
8  | Cuisinart Coffee Maker   | {"category": "Home & Kitchen", "price": 99, "colors": ["Stainless Steel", "Black"]}
9  | Dyson V11 Vacuum Cleaner | {"category": "Home & Kitchen", "price": 599, "colors": ["Iron", "Nickel"]}

(9 rows)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Mengekstrak nilai dari data JSON

Untuk mengekstrak nilai dari data JSON, Anda menggunakan json_extract()fungsi:

json_extract(json, path)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Fungsi ini json_extract()mengekstrak nilai dari data JSON menggunakan jalur yang ditentukan. Jalur tersebut menemukan nilai dalam data JSON yang ingin Anda ekstrak.

Pernyataan berikut menggunakan json_extract()fungsi untuk mengekstrak harga dari data JSON yang disimpan di detailskolom productstabel:

SELECT
  name,
  json_extract (details, '$.price') AS price
FROM
  products;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

name                     | price
-------------------------+------
iPhone 13                | 999
Samsung Galaxy S21       | 899
Nike Air Force 1         | 100
Adidas Ultraboost        | 180
MacBook Pro              | 1299
Amazon Kindle            | 79
Sony PlayStation 5       | 499
Cuisinart Coffee Maker   | 99
Dyson V11 Vacuum Cleaner | 599

(9 rows)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Menggunakan fungsi json_extract() dalam klausa WHERE

Pernyataan berikut mengambil produk dengan kategori 'Electronics'. Pernyataan ini membandingkan nilai yang diekstrak dari data JSON di detailskolom dan membandingkannya dengan string 'Electronics':

SELECT
  name
FROM
  products
WHERE
  json_extract (details, '$.category') = 'Electronics';Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

name
------------------
iPhone 13
Samsung Galaxy S21
MacBook Pro
Amazon Kindle
Sony PlayStation 5

(5 rows)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Memasukkan nilai JSON

Untuk memasukkan nilai ke dalam dokumen JSON, Anda menggunakan json_insert()fungsi:

json_insert(json, path, value)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Fungsi json_insert()memasukkan valueke dalam jsonmenggunakan yang ditentukan path. Jika pathtidak ada, fungsi membuat elemen. Jika jsonelemen sudah ada, fungsi tidak akan menimpa.

Misalnya, pernyataan berikut memasukkan stockatribut dengan nilai 10ke dalam dokumen JSON dengan id 1:

UPDATE products
SET
  details = json_insert (details, '$.stock', 10)
WHERE
  id = 1;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Verifikasi sisipan:

SELECT * FROM products
WHERE id = 1;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

id | name      | details
---+-----------+------------------------------------------------------------------------------------
1  | iPhone 13 | {"category":"Electronics","price":999,"colors":["Black","Blue","White"],"stock":10}

(1 row)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Memperbarui nilai JSON

Untuk memperbarui nilai JSON yang ada, Anda dapat menggunakan json_replace()fungsi:

json_replace(json, path, value)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Fungsi ini json_replace()menggantikan nilai yang ditentukan oleh jalur dalam data json. Jika nilai tersebut tidak ada, fungsi tersebut tidak akan membuat nilai tersebut.

Misalnya:

UPDATE products
SET details = json_replace(details, '$.stock', 0)
WHERE id = 1;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Verifikasi pembaruan:

SELECT * FROM products
WHERE id = 1;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

id | name      | details
---+-----------+-----------------------------------------------------------------------------------
1  | iPhone 13 | {"category":"Electronics","price":999,"colors":["Black","Blue","White"],"stock":0}

(1 row)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Menghapus nilai JSON

Untuk menghapus nilai json, Anda menggunakan json_remove()fungsi:

json_remove(json, path)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Misalnya:

UPDATE products
SET details = json_remove(details, '$.stock')
WHERE id = 1;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Verifikasi penghapusan:

SELECT * FROM products
WHERE id = 1;Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

id | name      | details
---+-----------+-------------------------------------------------------------------------
1  | iPhone 13 | {"category":"Electronics","price":999,"colors":["Black","Blue","White"]}

(1 row)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Menggabungkan data ke dalam array JSON

Untuk menggabungkan nilai ke dalam array JSON, Anda menggunakan json_group_array()fungsi berikut. Misalnya, pernyataan berikut menggabungkan nama produk dengan kategori sepatu ke dalam array JSON:

SELECT json_group_array(name)
FROM products
WHERE json_extract (details, '$.category') = 'Shoes';Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

json_group_array(name)
----------------------------------------
["Nike Air Force 1","Adidas Ultraboost"]

(1 row)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Menggabungkan data menjadi objek JSON

Untuk menggabungkan nilai ke dalam objek JSON, Anda menggunakan json_group_object()fungsi:

json_group_object(name, value)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Misalnya, pernyataan berikut menggunakan json_group_object untuk menggabungkan nama produk dan ID-nya dalam Shoeskategori menjadi objek JSON:

SELECT json_group_object(name, id)
FROM products
WHERE json_extract (details, '$.category') = 'Shoes';Bahasa kode:  SQL (Structured Query Language)  ( sql )

Keluaran:

json_group_object(name, id)
--------------------------------------------
{"Nike Air Force 1":3,"Adidas Ultraboost":4}

(1 row)Bahasa kode:  SQL (Structured Query Language)  ( sql )

Ringkasan

  • SQLite menggunakan TEXTtipe data untuk menyimpan data JSON.
  • Gunakan json_extract()fungsi ini untuk mengekstrak nilai dari data JSON.
  • Gunakan json_replace()fungsi ini untuk mengganti nilai dalam data JSON.
  • Gunakan json_remove()fungsi ini untuk menghapus nilai dari data JSON.
  • Gunakan json_group_array()fungsi ini untuk menggabungkan nilai ke dalam array JSON.
  • Gunakan json_group_object()fungsi ini untuk menggabungkan nilai menjadi objek JSON.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.