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 products
tabel:
id
adalah kolom kunci utama .name
Kolom menyimpan nama produk.details
kolom menggunakanTEXT
tipe data untuk menyimpan data JSON.
Memasukkan data JSON ke dalam database
Pernyataan berikut INSERT
memasukkan data JSON ke dalam details
kolom 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 details
kolom products
tabel:
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 details
kolom 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 value
ke dalam json
menggunakan yang ditentukan path
. Jika path
tidak ada, fungsi membuat elemen. Jika json
elemen sudah ada, fungsi tidak akan menimpa.
Misalnya, pernyataan berikut memasukkan stock
atribut dengan nilai 10
ke 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 Shoes
kategori 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
TEXT
tipe 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.