当前位置:知识百科 > 正文

存树形结构的nosql

更新时间:2026-04-17 20:13 阅读量:176

求一条sql语句,树形结构

with?a?as?(

select?pk_comp,name,pk_fathercomp?from?company

union

SELECT?pk_dept,deptname,(CASE?WHEN?pk_fathedept=0?THEN?pk_comp?ELSE?pk_fathedept?END)?as?pk_comp?FROM?dept)

select?a.name,b.name?from?a?as?b

inner?join?a?on?a.pk_comp=b.pk_fathercomp

文档型数据库设计模式:如何存储树形数据

MongoDB树形数据存储

树形结构的存储是一种非常典型的需求,例如菜单、省市区、栏目等等.

将树形结构的每个节点作为一行存储,每个节点保存父节点的指针(pid).优点是简单易懂,插入修改比较简单.缺点是若要获取某个节点的所有子节点,将是一件非常恶心的事情.

在方式1中增加left和right,相当于btree的左右分支,分别存储左右分支节点的最大值和最小值.优点是查询一个节点的子节点容易,仅需做范围查询查询即可.缺点是由于树形结构存储在里面,增加或修改已存在的节点将可能产生连锁反应,操作复杂.

将整个树结构存成一个文档,文档结构即树形结构,简明易懂.缺点是文档越来越大,对所有节点的修改都集中在此文档中,并发操作受限.

将每个节点的子节点保存起来,优点是结构简单查询子节点方便,缺点是查询父节点会表麻烦.

充分利用文档型存储 schema-less的优点,受限存储一个大的树形文档,再将每个节点的其他信息单独存储.优点是操作简单,结构上的操作可直接操作树形文档,数据上的操作仅需操作单条数据.缺点,对所有节点的修改都集中在此文档中,并发操作受限.

建立一个树形结构的SQL表 3实现的功能

主要是要有ID,PID两个字段,下面是我用的一个表,仅供参考:

CREATE TABLE [dbo].[Sys_Menu](

[ID] [int] NOT NULL,

[PID] [int] NOT NULL,

[Url] [varchar](100) NULL,

[STATE] [bit] NOT NULL,

[IsSelected] [bit] NULL

) ON [PRIMARY]

GO

怎么往数据库里插入一个树形结构的表,并且用一句SQL语句将其遍历出来

树形结构统一使用下面的测试表与测试数据

CREATE TABLE test_tree (

test_id INT,

pid INT,

test_val VARCHAR(10),

PRIMARY KEY (test_id)

);

INSERT INTO test_tree VALUES(1, NULL, '.NET');

INSERT INTO test_tree VALUES(10, NULL, 'Database');

Oracle

使用 START WITH CONNECT BY

语句实现树状查询

SQL ed

Wrote file afiedt.buf

①. SELECT

SQL /

TEST_VAL

-----------------------------------------------------------

.NET

C#

J#

ASP.NET

VB.NET

EJB

Servlet

JSP

Database

MySQL

PL/SQL

Function

Procedure

Package

Cursor

SQL Server

T-SQL

使用 Common Table Expression (CTE) 来实现 递归调用.

①. WITH StepCTE

①.0 test_tree

①.1 WHERE

test_id pid test_val Lev

----------- ----------- ---------- -----------

①. NULL .NET 1

①.0 NULL Database 1

怎样在 MySQL 表中存储树形结构数据

在 MySQL 表中存储树形结构数据:

一般比较普遍的就是四种方法:(具体见 SQL Anti-patterns这本书)

Adjacency List:每一条记录存parent_id

Path Enumerations:每一条记录存整个tree path经过的node枚举

Nested Sets:每一条记录存 nleft 和 nright

Closure Table:维护一个表,所有的tree path作为记录进行保存.

以上就是日讯小常识小编为大家整理的存树形结构的nosql相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!