Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จัดเก็บชุดข้อมูลในเซลล์เดียวด้วย JSON ใน MySQL

การสร้างตารางด้วยคอลัมน์ JSON

mysql> CREATE TABLE DemoTable1828 (
    EmployeeId INT,
    EmployeeRecords JSON
);

เพิ่มข้อมูล JSON Array

mysql> INSERT INTO DemoTable1828 VALUES(1,
    '[{"EmployeeName":"Chris","EmployeeAge":29},{"EmployeeName":"David","EmployeeAge":27}]');
mysql> INSERT INTO DemoTable1828 VALUES(2,
    '[{"EmployeeName":"John","EmployeeAge":36},{"EmployeeName":"Mike","EmployeeAge":32}]');

แสดงข้อมูล

mysql> SELECT * FROM DemoTable1828;

ผลลัพธ์ (MySQL จัดรูปแบบ JSON ให้อัตโนมัติ):

+------------+--------------------------------------------------+
| EmployeeId | EmployeeRecords                                  |
+------------+--------------------------------------------------+
|          1 | [{"EmployeeAge": 29, "EmployeeName": "Chris"}, 
             |  {"EmployeeAge": 27, "EmployeeName": "David"}]  |
|          2 | [{"EmployeeAge": 36, "EmployeeName": "John"}, 
             |  {"EmployeeAge": 32, "EmployeeName": "Mike"}]   |
+------------+--------------------------------------------------+

ข้อดีของการใช้ JSON

  • จัดเก็บโครงสร้างข้อมูลซับซ้อนในคอลัมน์เดียว
  • รองรับการ Query เข้าไปใน JSON ด้วยฟังก์ชัน JSON_*
  • ยืดหยุ่น ไม่ต้องกำหนด Schema คงที่
  • Validation อัตโนมัติป้องกันข้อมูลผิดรูปแบบ

ตัวอย่างการ Query ข้อมูลใน JSON

-- ดึงชื่อพนักงานคนแรก
SELECT JSON_EXTRACT(EmployeeRecords, '$[0].EmployeeName') FROM DemoTable1828;

-- ค้นหาพนักงานอายุ > 30
SELECT * FROM DemoTable1828 
WHERE JSON_EXTRACT(EmployeeRecords, '$[*].EmployeeAge') > 30;