怎么把下面表格用父子的形式导入MYSQL数据库在数据库显示树状形式

怎么把下面表格用父子的形式导入MYSQL数据库在数据库显示树状形式,第1张

方法/步骤

首先我们需要在mysql管理工具上面新建一个表,也可以用mysql命令创建,表建立完成之后,你需要将表中的字段名字告诉给填写excel表的人员

打开excel表,按照程序提供的字段填写相应的数据此时注意下面几点:名字(我用红色标示出来了)需要跟程序提供的一样,其他的描述,表头可以不写都行

我使用的mysql管理工具是Navicat for MySQL,打开工具,选择表所在的数据库,然后点击数据库名字,右键数据,出来下拉菜单选择import wizard ,有汉化版本的更明确d出一个选择界面,我们选择excel file文件

点击next(下一步),我们选择我们对应的excel文件就行,然后再下面选在我们的文件内容在哪一个sheet中,也就是你的内容写在excel什么地方,这点需要注意,也是关键的地方,我的内容在sheet3中,所以我选择sheet3 ,如图:

点击next (此步骤也是关键步骤),需要注意2点: 1:filed name row 就是你的字段所在excel中的位置,也就是第几行(简单办法,一般就是英文对应的那一列)2:first data row(从哪一行开始执行),数据从哪一行开始呢,我这里选择的是3,4

点击next 我们选择 target table 目标对应的数据库,选择你要导入到哪个数据库中表中

如果到上面一步没有问题的话,我们默认next到最后 就行了然后打开表就能看到数据跟excel表中的一样

数据库是什么数据库

我先假设你是 Oracle 吧。

CREATE TABLE test_tree (

test_id INT NOT NULL,

pid INT,

test_val VARCHAR(10),

PRIMARY KEY (test_id)

);

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

INSERT INTO test_tree VALUES(2, 1, 'C#');

INSERT INTO test_tree VALUES(3, 1, 'J#');

INSERT INTO test_tree VALUES(4, 1, 'ASPNET');

INSERT INTO test_tree VALUES(5, 1, 'VBNET');

INSERT INTO test_tree VALUES(6, NULL, 'J2EE');

INSERT INTO test_tree VALUES(7, 6, 'EJB');

INSERT INTO test_tree VALUES(8, 6, 'Servlet');

INSERT INTO test_tree VALUES(9, 6, 'JSP');

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

INSERT INTO test_tree VALUES(11, 10, 'DB2');

INSERT INTO test_tree VALUES(12, 10, 'MySQL');

INSERT INTO test_tree VALUES(13, 10, 'Oracle');

INSERT INTO test_tree VALUES(14, 10, 'SQL Server');

INSERT INTO test_tree VALUES(15, 13, 'PL/SQL');

INSERT INTO test_tree VALUES(16, 15, 'Function');

INSERT INTO test_tree VALUES(17, 15, 'Procedure');

INSERT INTO test_tree VALUES(18, 15, 'Package');

INSERT INTO test_tree VALUES(19, 15, 'Cursor');

INSERT INTO test_tree VALUES(20, 14, 'T-SQL');

使用 START WITH CONNECT BY 语句实现树状查询

通过根节点 向下查询子节点

SELECT

LPAD(' ', 2(LEVEL-1)) || test_val AS test_val

FROM

test_tree

START WITH

test_id IN (1, 6, 10)

CONNECT BY PRIOR test_id = pid;

TEST_VAL

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

NET

C#

J#

ASPNET

VBNET

J2EE

EJB

Servlet

JSP

Database

DB2

TEST_VAL

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

MySQL

Oracle

PL/SQL

Function

Procedure

Package

Cursor

SQL Server

T-SQL

20 rows selected

先从数据结构的角度来答

题主应该知道B-树和B树最重要的一个区别就是B树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域

这就决定了B树更适合用来存储外部数据,也就是所谓的磁盘数据

从Mysql(Inoodb)的角度来看,B树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上

那么Mysql如何衡量查询效率呢?磁盘IO次数,B-树(B类树)的特定就是每层节点数目非常多,层数很少,目的就是为了就少磁盘IO次数,当查询数据的时候,最好的情况就是很快找到目标索引,然后读取数据,使用B树就能很好的完成这个目的,但是B-树的每个节点都有data域(指针),这无疑增大了节点大小,说白了增加了磁盘IO次数(磁盘IO一次读出的数据量大小是固定的,单个数据变大,每次读出的就少,IO次数增多,一次IO多耗时啊!),而B树除了叶子节点其它节点并不存储数据,节点小,磁盘IO次数就少

这是优点之一

另一个优点是什么,B树所有的Data域在叶子节点,一般来说都会进行一个优化,就是将所有的叶子节点用指针串起来

这样遍历叶子节点就能获得全部数据,这样就能进行区间访问啦

至于MongoDB为什么使用B-树而不是B树,可以从它的设计角度来考虑,它并不是传统的关系性数据库,而是以Json格式作为存储的nosql,目的就是高性能,高可用,易扩展

首先它摆脱了关系模型,上面所述的优点2需求就没那么强烈了,其次Mysql由于使用B树,数据都在叶节点上,每次查询都需要访问到叶节点,而MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql(但侧面来看Mysql至少平均查询耗时差不多)

总体来说,Mysql选用B树和MongoDB选用B-树还是以自己的需求来选择的

查出来排个序,显示的时候做个判断,是子节点的就加个缩进,出来就是个树。

再不你就狠一点,找个树的js,比如ztree,然后按照他需要的数据格式组织好数据,出来的也是个树,而且很漂亮

//定义必要的变量

integer li_rowcount1,li_rowcount2

integer li_row1,li_row2

treeviewitem tvi1,tvi2,tvi3

long lev1,lev2,lev3

//开始画树状图

tv_1setredraw(false)

//根结点

tv_1deleteitem(lev1)//先删除整个树

tvi1pictureindex = 1//一级树显示图标

tvi1selectedpictureindex = 1//一级树选择图标(显示的和选择的图标可以不一样)

tvi1children=true//还有后代

tvi1label = 一级标题

//将treevie项tvi1作为根结点插入,同时取得根结点的句柄lev1

lev1 = tv_1insertitemlast(0,tvi1)

//第二层结点(一般使用循环)

for li_row1=1 to li_rowcount1

//获取第二级的相关数据(假设第二级就是树叶了)

tvi2pictureindex=2//二级树显示图标

tvi2selectedpictureindex=3//二级树选择图标

tvi2label = 用来显示的相关数据

tvi2data = 用来读取的相关数据

//将treevie项tvi2作为第二层结点插入为lev1的子项,同时取得根结点的句柄lev1

lev2 = tv_1insertitemlast(lev1,tvi2)

next

tv_1setredraw(true)

//从根展开整个树

//tv_1expandall(lev1)

//只展开第一层树

tv_1expanditem(lev1)

以上就是关于怎么把下面表格用父子的形式导入MYSQL数据库在数据库显示树状形式全部的内容,包括:怎么把下面表格用父子的形式导入MYSQL数据库在数据库显示树状形式、数据库表有3列,Id,Name,ParentId,已从数据库读出数据,如何递归成一棵树、怎么将数据库中存的树转化为树形列表(数据库如何存储树形结构)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10194922.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存