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

เพิ่มข้อมูล JSON ลงในตาราง MySQL

การสร้างตารางด้วย JSON Column

mysql> CREATE TABLE DemoTable1876 (
    EmployeeInformation JSON
);

Insert ข้อมูล JSON Object

mysql> INSERT INTO DemoTable1876 VALUES('{
    "EmployeeData": {
        "Name": "Chris",
        "Age": 27
    }
}');

mysql> INSERT INTO DemoTable1876 VALUES('{
    "EmployeeData": {
        "Name": "David",
        "Age": 24
    }
}');

แสดงข้อมูล (MySQL จัดรูปแบบ JSON ให้อัตโนมัติ)

mysql> SELECT * FROM DemoTable1876;

ผลลัพธ์:

+------------------------------------------------+
| EmployeeInformation                            |
+------------------------------------------------+
| {"EmployeeData": {"Age": 27, "Name": "Chris"}} |
| {"EmployeeData": {"Age": 24, "Name": "David"}} |
+------------------------------------------------+

ข้อดีของ JSON Data Type (MySQL 5.7+)

  • Validation: Reject Invalid JSON อัตโนมัติ
  • Storage: Binary Format (Parsed) เร็วกว่า TEXT
  • Functions: JSON_EXTRACT, JSON_CONTAINS, JSON_SET, JSON_ARRAY_APPEND ฯลฯ
  • Indexing: Virtual Column + Index สำหรับ Path เฉพาะ

ฟังก์ชัน JSON ที่น่าสนใจ

-- ดึงค่า (-> คืน JSON, ->> คืน Text)
SELECT EmployeeInformation->'$.EmployeeData.Name' AS name FROM DemoTable1876;
SELECT EmployeeInformation->>'$.EmployeeData.Name' AS name FROM DemoTable1876;

-- ค้นหา
SELECT * FROM DemoTable1876 
WHERE JSON_CONTAINS(EmployeeInformation, '"Chris"', '$.EmployeeData.Name');

-- อัปเดต
UPDATE DemoTable1876 
SET EmployeeInformation = JSON_SET(EmployeeInformation, '$.EmployeeData.Age', 28)
WHERE JSON_EXTRACT(EmployeeInformation, '$.EmployeeData.Name') = '"Chris"';

สร้าง Index บน JSON Path

ALTER TABLE DemoTable1876
ADD COLUMN name_virtual VARCHAR(50) 
GENERATED ALWAYS AS (EmployeeInformation->>'$.EmployeeData.Name') VIRTUAL,
ADD INDEX idx_name (name_virtual);