1. บทนำ
1.1 ความสำคัญของ JSON
ในการพัฒนาเว็บสมัยใหม่ การแลกเปลี่ยนข้อมูลมีความซับซ้อนมากขึ้นเรื่อยๆ JSON (JavaScript Object Notation) เป็นรูปแบบข้อมูลที่มีน้ำหนักเบาและมีโครงสร้างชัดเจน ถูกนำมาใช้อย่างแพร่หลายในการส่งต่อและเก็บข้อมูล MySQL ตั้งแต่เวอร์ชัน 5.7 ได้รองรับชนิดข้อมูล JSON ทำให้การจัดการข้อมูล JSON ในฐานข้อมูลง่ายขึ้น
1.2 การใช้งาน JSON ใน MySQL
บทความนี้จะอธิบายตั้งแต่การใช้งาน JSON พื้นฐานใน MySQL การพิจารณาด้านประสิทธิภาพ ไปจนถึงวิธีการใช้งานจริง เหมาะทั้งสำหรับผู้เริ่มต้นจนถึงผู้เชี่ยวชาญ เพื่อให้สามารถใช้ JSON ใน MySQL ได้อย่างมีประสิทธิภาพ
2. JSON ใน MySQL คืออะไร
2.1 พื้นฐานของ JSON
JSON เป็นรูปแบบที่ใช้จัดโครงสร้างข้อมูลในลักษณะคู่ของคีย์และค่า ถูกใช้กันอย่างกว้างขวางใน Web API และการส่งข้อมูล จุดเด่นคือมีน้ำหนักเบาและอ่านเข้าใจง่าย ใน MySQL คุณสามารถเก็บและจัดการข้อมูล JSON ได้โดยตรงด้วยชนิดข้อมูล JSON
2.2 ชนิดข้อมูล JSON ใน MySQL
ชนิดข้อมูล JSON ที่ถูกเพิ่มเข้ามาใน MySQL 5.7 ใช้พื้นที่เก็บข้อมูลเช่นเดียวกับ LONGBLOB และ LONGTEXT นอกจากนี้ MySQL ยังตรวจสอบความถูกต้องของ JSON เมื่อมีการแทรกข้อมูล เพื่อป้องกันไม่ให้ข้อมูล JSON ที่ไม่ถูกต้องถูกบันทึก
2.3 กรณีการใช้งาน JSON
กรณีหลักที่นิยมใช้ JSON ใน MySQL ได้แก่:
- การเก็บข้อมูลที่มีโครงสร้างซับซ้อน
- การเก็บข้อมูลจาก API โดยตรง
- การจัดการข้อมูลที่มีสคีมาเปลี่ยนแปลงบ่อย

3. การใช้งาน JSON เบื้องต้นใน MySQL
3.1 การสร้างคอลัมน์ JSON
หากต้องการสร้างคอลัมน์เพื่อเก็บข้อมูล JSON ให้ระบุชนิดข้อมูลเป็น json
ดังนี้:
CREATE TABLE json_data (
doc JSON
);
3.2 การแทรกข้อมูล JSON
การแทรกข้อมูล JSON สามารถทำได้ด้วยคำสั่ง INSERT
MySQL จะตรวจสอบว่าข้อมูลอยู่ในรูปแบบ JSON ที่ถูกต้อง หากไม่ถูกต้องจะส่งกลับเป็นข้อผิดพลาด
INSERT INTO json_data(doc) VALUES ('{"a": {"b": ["c", "d"]}, "e": "f"}');
คุณยังสามารถใช้ฟังก์ชัน JSON_OBJECT
เพื่อสร้างออบเจ็กต์ JSON จากคู่ของคีย์และค่าได้
INSERT INTO json_data(doc) VALUES (JSON_OBJECT('key1', 'value1', 'key2', 'value2'));
3.3 การค้นหาข้อมูล JSON
ในการค้นหาข้อมูล JSON สามารถใช้ฟังก์ชัน JSON_EXTRACT
เพื่อดึงค่าจากตำแหน่งที่ระบุในออบเจ็กต์ JSON
SELECT * FROM json_data WHERE JSON_EXTRACT(doc, '$.e') = 'f';
นอกจากนี้ยังสามารถใช้โอเปอเรเตอร์ ->
เป็นรูปแบบย่อได้เช่นกัน
SELECT * FROM json_data WHERE doc->'$.e' = 'f';
3.4 การอัปเดตข้อมูล JSON
หากต้องการอัปเดตบางส่วนของ JSON ให้ใช้ฟังก์ชัน JSON_SET
ซึ่งจะอัปเดตเฉพาะฟิลด์ที่ระบุและคืนค่าเป็นออบเจ็กต์ JSON ใหม่
UPDATE json_data SET doc = JSON_SET(doc, '$.a.b[0]', 'new_value');