Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

数据库反安装教程 By oytktk

[复制链接]
oytktk 发表于 2006-1-13 10:53:01 | 显示全部楼层 |阅读模式
看到很多朋友都一直在问这个问题,每个数据库都要像作者索求反安装代码,这样有两点不好:

1. 会让作者感觉很难过,自己辛苦写的插件不被认同;
2. 每一个想要反安装的插件都向作者要...是不是很麻烦?

那么就教你如何自己学会反安装数据库的升级代码.

原创: oytktk(靖飒)

按情况, 数据库的升级代码可以分三个类别:


1. 建立一个或多个数据表;
2. 建立一个或多个字段;
3. 添加一个或多个字段的值;

针对以上情况,我们应该怎么判断我们升级的数据库代码属于哪一种类型的呢?

好让我们拿我的作品<鲜花鸡蛋送给作者>来说吧, 这个插件就要用到上面的前两个类别,让我们先来看看第一类:

一、 建立一个表:

  1. CREATE TABLE `cdb_felog` (
  2. `id` mediumint( 20 ) unsigned NOT NULL AUTO_INCREMENT ,
  3. `fromuser` varchar( 15 ) NOT NULL default '',
  4. `touser` varchar( 15 ) NOT NULL default '',
  5. `asfe` varchar( 8 ) NOT NULL default '',
  6. `score` int( 10 ) NOT NULL default '0',
  7. `tid` varchar( 15 ) NOT NULL default '',
  8. `aswhat` varchar( 100 ) NOT NULL default '',
  9. PRIMARY KEY ( `id` )
  10. ) TYPE = MYISAM
复制代码


判断依据: 以   CREATE TABLE   开头,后面跟数据表的名字:  CDB_XXX
结束标致: TYPE = ……

这类就属于上述的第一个类别:添加一个数据表!

反安装方法:

  1. DROP TABLE CDB_XXX
复制代码


方法简述:这类升级代码的反安装方法很简单,不管这个表有多大,你可需要用DROP TABLE后跟数据表的名字即可,例如我的鲜花鸡蛋插件以上的升级代码,反安装的代码如下:

  1. DROP TABLE cdb_felog
复制代码



二、建立一个或多个字段:

1)
  1. ALTER TABLE `cdb_posts` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
  2. ALTER TABLE `cdb_posts` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
  3. ALTER TABLE `cdb_threads` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
  4. ALTER TABLE `cdb_threads` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
复制代码


或:

2)
  1. ALTER TABLE `cdb_members` ADD `putsum` INT( 8 ) NOT NULL ,
  2. ADD `audsum` INT( 8 ) NOT NULL ,
  3. ADD `groomsum` INT( 8 ) NOT NULL ,
  4. ADD `delesum` INT( 8 ) NOT NULL ,
  5. ADD `audit` VARCHAR( 1 ) NOT NULL ;
复制代码


判断依据: 以   ALTER TABLE   开头,后面跟数据表的名字:  CDB_XXX,再跟 ADD,再跟字段的名称!
注意事项: 这类升级代码有种简写的方式,如果升级一个表内的字段多于一个,就可以用简化方式写

以上1)升级代码是完整的写法,2)最简写;

两者的区别就在于不用多写  ALTER TABLE `数据表`
在同一个数据表里升级两个或以上的字段,就可以使用这种升级方式了。

反安装方法:

1)
  1. ALTER TABLE `数据表1` DROP `字段名1`;
  2. ALTER TABLE `数据表2` DROP `字段名1`;
复制代码


2)
  1. ALTER TABLE `数据表`
  2. DROP `字段名1`,
  3. DROP `字段名1`,
  4. DROP `字段名1`;
复制代码


方法简述:不管是第一个方法还是第二种方法,都可以完成对添加字段的反安装

只要把“数据表1"的名字替换成添加字段的表“CDB_XXX",再把“字段名1”替换成添加的字段名(ADD后的名字)。

例子:

以上1)的反安装代码为:

  1. ALTER TABLE `cdb_posts` DROP `flower;
  2. ALTER TABLE `cdb_posts` DROP `egg`;
  3. ALTER TABLE `cdb_threads` DROP `flower`;
  4. ALTER TABLE `cdb_threads` DROP `egg`;
复制代码


2)的反安装代码为:

  1. ALTER TABLE `cdb_members` DROP `,
  2. DROP `audsum`,
  3. DROP `groomsum` ,
  4. DROP `delesum` ,
  5. DROP `audit` ;
复制代码


其实大家仔细观察一下就可以看出来,这类反安装代码其实就是把升级代码中的ADD改为DROP,并把字段名后的部分代码删除即可。

三、添加一个或多个字段的值:

  1. INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('attaopen', '1');
  2. INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('attacoun', '15');
复制代码


这类升级代码很少用,一段是用在SETTINGS表里。

其标致为:以INSERT INTO开头,后面是数据表的名字,第一个括号里面的是要加给值的字段名,第二个括号里的值是与第一个括号里对应的,分别是加到第一个括号里字段里的。

反安装代码:

  1. DELETE FROM `cdb_settings` WHERE `variable` = 'attaopen' AND `value` = '1' ;
  2. DELETE FROM `cdb_settings` WHERE `variable` = 'attacoun' AND `value` = '15' ;
复制代码


方法简述:

先将升级代码中的INSERT INTO改为DELETE FROM, 在第一个括号前加个“ WHERE ”,然后是第一个括号里的值“variable”,再加“=”号,再加第二个括号里的第一个值“attaopen”,如果括号里的值不止一个,那再加“ ADD ”,再加第一个括号里的第二个值“value”,再加“=”号,再另第二个括号里的第二个值“1”,如果还有更多那就再加“ADD”再加第一个括号里的第三个……

这就是数据库反安装的基本方法。希望大家认真掌握自己动手进行数据库的反安装!

[ 本帖最后由 oytktk 于 2007-8-24 09:08 编辑 ]

评分

2

查看全部评分

linsie 发表于 2006-1-13 10:54:11 | 显示全部楼层
沙发
回复

使用道具 举报

linsie 发表于 2006-1-13 10:54:50 | 显示全部楼层
oytktk 帮我看看我出现的那个错误怎么解决

http://discuz.net/viewthread.php?tid=221877&extra=page%3D2

[ 本帖最后由 linsie 于 2006-1-13 10:56 编辑 ]
回复

使用道具 举报

grandness 发表于 2006-1-13 10:55:36 | 显示全部楼层
好贴呀,怎么都没人顶呀!
回复

使用道具 举报

Tuscani 发表于 2006-1-13 10:56:34 | 显示全部楼层
不错
回复

使用道具 举报

alantam 发表于 2006-1-13 11:03:48 | 显示全部楼层
一个很合适新人看的教程!!!

不错不错!!!支持啦!!!!
回复

使用道具 举报

咕咕 发表于 2006-1-13 11:18:34 | 显示全部楼层
支持@!@@@@@@@@@@
回复

使用道具 举报

547127256 发表于 2006-1-13 11:20:45 | 显示全部楼层
支持,顶啊
回复

使用道具 举报

紫云杉 发表于 2006-1-13 11:21:29 | 显示全部楼层
支持噢
回复

使用道具 举报

karl907 发表于 2006-1-13 11:27:43 | 显示全部楼层
留位!!哈哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 07:09 , Processed in 0.030602 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表