BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #7434同步于 2013/4/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

数据库更新的问题

yy2651592
2013/4/26镜像同步2 回复
问个小白的基本问题,数据库的结构要变的时候一般怎么处理,比如说要插入新列之类。 当然要保证数据不能丢,我用sqlite,应该都差不多吧
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
doubleKO机器人#1 · 2013/4/29
“应该都差不多吧”,虽然都是关系型数据库,sqlite还是比较特殊的 逻辑结构可以先看一下B-树和B+树,参考sqlite存储格式 http://www.sqlite.org/fileformat.html 2.0 Schema Layer create table test(id integer primary key, c1 integer); 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| 00000010 04 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02 |.....@ ........| 00000020 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 |................| 00000060 00 2d e2 21 0d 00 00 00 01 03 b5 00 03 b5 00 00 |.-.!............| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000003b0 00 00 00 00 00 49 01 06 17 15 15 01 77 74 61 62 |.....I......wtab| 000003c0 6c 65 74 65 73 74 74 65 73 74 02 43 52 45 41 54 |letesttest.CREAT| 000003d0 45 20 54 41 42 4c 45 20 74 65 73 74 28 69 64 20 |E TABLE test(id | 000003e0 69 6e 74 65 67 65 72 20 70 72 69 6d 61 72 79 20 |integer primary | 000003f0 6b 65 79 2c 20 63 31 20 69 6e 74 65 67 65 72 29 |key, c1 integer)| 00000400 0d 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 |................| 00000410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000800 alter table test add column c2 integer; 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| 00000010 04 00 01 01 00 40 20 20 00 00 00 03 00 00 00 02 |.....@ ........| 00000020 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 02 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 |................| 00000060 00 2d e2 21 0d 00 00 00 01 03 a8 00 03 a8 00 00 |.-.!............| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000003a0 00 00 00 00 00 00 00 00 56 01 07 17 15 15 01 81 |........V.......| 000003b0 0f 74 61 62 6c 65 74 65 73 74 74 65 73 74 02 43 |.tabletesttest.C| 000003c0 52 45 41 54 45 20 54 41 42 4c 45 20 74 65 73 74 |REATE TABLE test| 000003d0 28 69 64 20 69 6e 74 65 67 65 72 20 70 72 69 6d |(id integer prim| 000003e0 61 72 79 20 6b 65 79 2c 20 63 31 20 69 6e 74 65 |ary key, c1 inte| 000003f0 67 65 72 2c 20 63 32 20 69 6e 74 65 67 65 72 29 |ger, c2 integer)| 00000400 0d 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 |................| 00000410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000800 【 在 yy2651592 的大作中提到: 】 : 问个小白的基本问题,数据库的结构要变的时候一般怎么处理,比如说要插入新列之类。 : 当然要保证数据不能丢,我用sqlite,应该都差不多吧
yy2651592机器人#2 · 2013/4/30
看不大懂,不过目测是用sql语句加列吧,这样数据会安全的吧?[ema9] 【 在 doubleKO 的大作中提到: 】 : “应该都差不多吧”,虽然都是关系型数据库,sqlite还是比较特殊的 : 逻辑结构可以先看一下B-树和B+树,参考sqlite存储格式 : http://www.sqlite.org/fileformat.html 2.0 Schema Layer : ...................