1、创建数据表
create table category(
id int primary key auto_increment,
lft int not null,
name varchar(20) not null,
rgt int not null);
2、插入数据
insert into category(id,lft,name,rgt)values(null,1,'水果',2),
(null,3,'蔬菜',4),(null,5,'肉类',6);
插入结果如下图:
对应的树结构如下:
|-水果
|-蔬菜
|-肉类
3、插入顶级节点
insert into category(id,lft,name,rgt)values(null,1,'食物',8);
update category set lft=lft+1,rgt=rgt+1 where rgt>1 and rgt<8;
执行结果如下:
对应的树结构如下:
|-食物
|--水果
|--蔬菜
|--肉类
4、插入子孙节点
update category set rgt=rgt+2 where rgt>=3;
update category set lft=lft+2 where lft>2;
insert into category(id,lft,name,rgt)values(null,3,'苹果',4)
执行结果如下:
对应的树结构如下:
|-食物
|--水果
|---苹果
|--蔬菜
|--肉类
5、一次性插入多个子孙节点
update category set rgt=rgt+2*2 where rgt>=3+2;
update category set lft=lft+2*2 where lft>3+2;
insert into category(id,lft,name,rgt)values(null,5,'香蕉',6),(null,7,'葡萄',8);
执行结果如下:
对应的树结构如下:
|-食物
|--水果
|---苹果
|---香蕉
|---葡萄
|--蔬菜
|--肉类
6、插入子孙的儿子节点
update category set rgt=rgt+2 where rgt>=4;
update category set lft=lft+2 where lft>=4;
insert into category(id,lft,name,rgt)values(null,4,'品牌',5);
执行结果如下:
|-食物
|--水果
|---苹果
|----品牌
|---香蕉
|---葡萄
|--蔬菜
|--肉类