楼上说的部分是对的,但有几点需要指出。如果你的id字段是自增的标识字段的话,它的序号是不可逆的(我说的是自动,当然手动可是实现重新顺序编号),再就是sql200中你不能在两行记录之间再插入一行的(让新插入的记录再原记录之间)。
1、像你说方法在形式上可以达到预想的效果:看上去好像在原来的第2行记录与第3行记录之间“插入”了一条新记录,但是前面的ID列(如果是自增的话)是不会再按1、2、3、4的顺序重新编号的,他是不会自动重新顺序编号的,他会变成1、2、4、5……
2、你的想法是完全没有必要的。对于数据库每条记录之间是完全平等的关系,不管数据库中谁在上谁在下。数据库只是一个存放数据的仓库,如果要向用户展示里面的数据的话是要用视图或者查询的,不会直接取数据表中人为的找的,要是那样也就失去数据库的本质变成了一般的数据文件了。
3、数据库一般都会结合某种应用程序联合应用,起到快速检索用户所需数据的作用,并能实现一定的排序、分组、统计等功能。
综上建议你不要继续你的工作。
关系数据库不关心数据的物理存储顺序,所以不能像EXCEL一样将一行数据插入到指定行之前。
建议你在表上增加一列排序列,在输出的时候按照排序列进行排序。
ID 姓名 年龄 Sort_Order
1 sss 15 10
2 fffff 20 20
3 ddd 16 30
插入新行时指定 Sort_Order值在10和20之间就行。例如:
insert into 表名 vaules(4, 'eee', 18, 25)
您的方案估计不太好,假如有1000条数据,那么怎么办,需要复制1000条数据么?肯定不是。
其实我觉得,或者以我的经验来说,数据库表只是装着数据,具体存放在哪其实无关紧要,数据库是为别的应用程序做服务的,所以可以在程序中想象如何理想化的调用数据。比如,做好排序,可以增加一个字段,专门做排序用的,里面放上数字。或者增加时间日期字段,然后做相应的调整。总之我的意思就是在数据读出的时候进行调整。否则这次您需要在2,3之前插数据,下回再5,6之间插入数据,那岂不是很麻烦,所以,设计好数据库,和良好的读取数据准则很重要。希望可以帮到您。
首先要确定这个表的ID是不是可以更改,看情况这个ID只是一个序号而已。
然后把需要插入的记录以下的ID值全部+1,UPDATA什么的,这个自己写吧。
然后INSERT INTO什么的插入需要的行。
估计不太好,假如有1000条数据,那么怎么办,需要复制1000条数据么?肯定不是。
其实我觉得,或者以我的经验来说,数据库表只是装着数据,具体存放在哪其实无关紧要,数据库是为别的应用程序做服务的,所以可以在程序中想象如何理想化的调用数据。比如,做好排序,可以增加一个字段,专门做排序用的,里面放上数字。或者增加时间日期字段,然后做相应的调整。总之我的意思就是在数据读出的时候进行调整。否则这次您需要在2,3之前插数据,下回再5,6之间插入数据,那岂不是很麻烦,所以,设计好数据库,和良好的读取数据准则很重要