MySQL 是一款流行的數據庫管理系統,但是可能會有一些人對其是否支持數組值有疑問。簡單的答案是:MySQL 并不存在數組值。
雖然 MySQL 支持可數組化的存儲,比如說 JSON 或 XML,但是它不能像 PHP 或 JavaScript 那樣使用數組。如果在 MySQL 中創建一個表,并嘗試將數組插入其中,會收到一個錯誤。
CREATE TABLE test (id INT, name VARCHAR(20), scores INT ARRAY); INSERT INTO test VALUES (1, 'John', [90, 80, 95]);
3的位置,會返回錯誤。換句話說,MySQL 并不支持像 PHP 或 JavaScript 那樣使用數組作為一個值的方式。
但是,使用關系型數據庫的優點之一是它可以支持使用關聯表來實現“數組”的功能。 例如,考慮一個學生和成績的表。
CREATE TABLE students (id INT, name VARCHAR(20)); CREATE TABLE scores (student_id INT, score INT); INSERT INTO students VALUES (1, 'John'); INSERT INTO students VALUES (2, 'Alice'); INSERT INTO scores VALUES (1, 90); INSERT INTO scores VALUES (1, 80); INSERT INTO scores VALUES (1, 95); INSERT INTO scores VALUES (2, 85); SELECT * FROM students; SELECT * FROM scores;
可以使用 SQL 查詢,將分數與學生表關聯。例如,下面的查詢會獲取每個學生的所有分數,并計算出平均分:
SELECT students.name, AVG(scores.score) FROM students INNER JOIN scores ON students.id = scores.student_id GROUP BY students.id;
這種方案避免了數組值在 MySQL 中的限制,但同概念相似。在關系型數據庫的設計中,通常使用表和關聯來解決這種問題。