返回信息流问个小白的基本问题,数据库的结构要变的时候一般怎么处理,比如说要插入新列之类。
当然要保证数据不能丢,我用sqlite,应该都差不多吧
这是一条镜像帖。来源:北邮人论坛 / database / #7434同步于 2013/4/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
数据库更新的问题
yy2651592
2013/4/26镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
“应该都差不多吧”,虽然都是关系型数据库,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,应该都差不多吧
看不大懂,不过目测是用sql语句加列吧,这样数据会安全的吧?[ema9]
【 在 doubleKO 的大作中提到: 】
: “应该都差不多吧”,虽然都是关系型数据库,sqlite还是比较特殊的
: 逻辑结构可以先看一下B-树和B+树,参考sqlite存储格式
: http://www.sqlite.org/fileformat.html 2.0 Schema Layer
: ...................