MySQL 8文檔存儲是一種新功能,它允許我們將半結(jié)構(gòu)化數(shù)據(jù)存儲在JSON格式的文檔中,通過簡單的語法,可以在MySQL數(shù)據(jù)庫中創(chuàng)建、讀取、更新和刪除文檔。
在MySQL 8中,文檔存儲使用了一個新的數(shù)據(jù)類型:JSON數(shù)據(jù)類型。這個新的數(shù)據(jù)類型可以用來存儲半結(jié)構(gòu)化的數(shù)據(jù),而不需要創(chuàng)建復(fù)雜的數(shù)據(jù)模型。
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, contact JSON NOT NULL );
我們可以使用JSON的語法來插入數(shù)據(jù)并存儲到文檔中:
INSERT INTO users (name, contact) VALUES ('John Smith', '{"email": "john.smith@example.com", "phone": "555-1234"}');
現(xiàn)在我們可以使用JSON的語法來查詢文檔中的數(shù)據(jù):
SELECT contact->'$.email' AS email FROM users WHERE name = 'John Smith';
還可以使用JSON的語法來更新文檔中的數(shù)據(jù):
UPDATE users SET contact = JSON_REPLACE(contact, '$.phone', '555-4321') WHERE name = 'John Smith';
除了JSON數(shù)據(jù)類型之外,MySQL 8還引入了一種新的語法:JSON表達(dá)式,它允許在SELECT語句中查詢文檔中的數(shù)據(jù)。例如:
SELECT name, contact->'$.email' AS email, JSON_EXTRACT(contact, '$.phone') AS phone FROM users WHERE JSON_CONTAINS(contact, '{"email": "john.smith@example.com"}');
總之,MySQL 8文檔存儲為存儲和查詢半結(jié)構(gòu)化數(shù)據(jù)提供了一種簡單、靈活和強大的解決方案。