MySQL 是一款流行的關系型數據庫,使用它可以方便地展現樹形結構數據。這里將演示如何使用 MySQL 展示樹形結構數據。
首先,定義一個包含父子關系的表,例如:
CREATE TABLE category ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, parent_id INT, FOREIGN KEY (parent_id) REFERENCES category(id) ON DELETE CASCADE );
其中,id
字段是自增的主鍵,name
字段用于存儲節點的名稱,parent_id
字段表示節點的父節點 ID。
接下來,插入一些數據,例如:
INSERT INTO category (name, parent_id) VALUES ('A', NULL), ('A1', 1), ('A2', 1), ('A1-1', 2), ('A1-2', 2), ('A2-1', 3), ('A2-2', 3);
這樣就生成了一棵樹形結構,如下圖所示:
A ├── A1 │ ├── A1-1 │ └── A1-2 └── A2 ├── A2-1 └── A2-2
為了查詢整個樹,可以使用如下 SQL 語句:
SELECT t1.id, t1.name, t1.parent_id, CONCAT(REPEAT(' ', COUNT(t2.parent_id) - 1), t1.name) AS tree_name FROM category AS t1 LEFT JOIN category AS t2 ON t1.parent_id = t2.id GROUP BY t1.id ORDER BY tree_name;
這段 SQL 語句使用了自連接(LEFT JOIN
)查詢整個樹,然后使用遞歸計數和字符串連接生成了帶有縮進的樹形結構。
最終的輸出結果如下:
+----+-------+-----------+------------+ | id | name | parent_id | tree_name | +----+-------+-----------+------------+ | 1 | A | NULL | A | | 2 | A1 | 1 | ├── A1 | | 4 | A1-1 | 2 | | └── A1-1 | | 5 | A1-2 | 2 | | └── A1-2 | | 3 | A2 | 1 | └── A2 | | 6 | A2-1 | 3 | └── A2-1 | | 7 | A2-2 | 3 | └── A2-2 | +----+-------+-----------+------------+
最后,可以使用編程語言(如 PHP)或工具(如 MySQL Workbench)將結果展示為樹形結構。