一、數組類型是什麼?
MySQL中有兩種數組類型:JSON
和 Array
。這兩種類型都能存儲多個值,但使用方法有所不同。
JSON,全稱為JavaScript Object Notation,是一種輕量級的數據交換格式。它是基於JavaScript編程語言的一個子集,但其格式是獨立於編程語言的。在MySQL中,JSON類型存儲的是一個JSON對象,可以直接用JSON函數進行操作。
Array類型在MySQL中又稱為SET類型,其存儲的數據是按照索引順序排序的,並且每個索引只能存儲一種值。可以通過通過位運算符來操作SET類型的數據。
二、創建數組類型
在MySQL中創建數組類型,需要在創建表時指明字段的類型。JSON類型的字段類型是JSON,SET類型的字段類型則是SET。
CREATE TABLE example (
json_col JSON,
set_col SET('value1', 'value2', 'value3')
);
三、操作數組類型
1、JSON操作
JSON類型的操作使用MySQL內置的JSON函數,例如:
JSON_OBJECT(key1, value1, key2, value2, ...)
:創建一個JSON對象。JSON_ARRAY(value1, value2, ...)
:創建一個JSON數組。JSON_EXTRACT(json_doc, path)
:從JSON文檔中提取指定路徑的值。JSON_SEARCH(json_doc, one_or_all, search_str, escape_char, ...)
:查詢JSON文檔中是否包含某個值。
例如,我們可以使用以下語句向表中插入一個JSON對象:
INSERT INTO example(json_col)
VALUES ('{"name": "Alice", "age": 20, "hobbies": ["reading", "swimming"]}');
我們可以使用以下語句來提取JSON對象中的值:
SELECT JSON_EXTRACT(json_col, '$.name') AS name,
JSON_EXTRACT(json_col, '$.age') AS age,
JSON_EXTRACT(json_col, '$.hobbies[0]') AS hobby1,
JSON_EXTRACT(json_col, '$.hobbies[1]') AS hobby2
FROM example;
以上語句會返回如下結果:
+-------+-----+---------+----------+
| name | age | hobby1 | hobby2 |
+-------+-----+---------+----------+
| Alice | 20 | reading | swimming |
+-------+-----+---------+----------+
2、SET操作
SET類型的操作使用MySQL內置的位運算符,例如:
|
:用於將值加入SET類型中。&
:用於判斷SET類型中是否包含某個值。^
:用於從SET類型中刪除某個值。~
:用於取反SET類型。
例如,我們可以使用以下語句向表中插入一個SET對象:
INSERT INTO example(set_col)
VALUES ('value1,value2');
我們可以使用以下語句來判斷SET對象中是否包含某個值:
SELECT set_col,
(set_col & 'value1') AS contains_value1,
(set_col & 'value3') AS contains_value3
FROM example;
以上語句會返回如下結果:
+-----------------+----------------+----------------+
| set_col | contains_value1 | contains_value3 |
+-----------------+----------------+----------------+
| value1,value2 | 1 | 0 |
+-----------------+----------------+----------------+
如果需要刪除SET類型中的某個值,可以使用以下語句:
UPDATE example
SET set_col = set_col ^ 'value1'
WHERE id = 1;
四、數組類型的限制和注意事項
在使用數組類型時,需要注意以下幾點:
- JSON類型的值必須是合法的JSON格式。
- SET類型中每個值的長度不能超過64個字符。
- SET類型最多只能存儲64個值。
五、總結
MySQL的數組類型為我們在存儲多重數據類型時提供了方便的方式。操作起來也比較簡單,只需要使用內置的函數和運算符即可。但同時,我們也需要注意每個類型的限制和注意事項,以避免因類型錯誤導致的數據庫問題。
原創文章,作者:YNUDZ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/371456.html