Discuz!X 后台增加或删除数据表及字段常用SQL语句
很多朋友经常问到discuz后台数据库升级的问题,按情况, 数据库的升级代码可以分三个类别:
1. 建立一个或多个数据表;
2. 建立一个或多个字段(及如何更改字段长度);
3. 添加一个或多个字段的值;
针对以上情况,我们应该怎么判断我们升级的数据库代码属于哪一种类型的呢?
让我们拿作品<鲜花鸡蛋送给作者>来说吧, 这个插件就要用到上面的前两个类别,让我们先来看看第一类:
一、 建立一个表:CREATE TABLE `cdb_felog` (
`id` mediumint( 20 ) unsigned NOT NULL AUTO_INCREMENT ,
`fromuser` varchar( 15 ) NOT NULL default '',
`touser` varchar( 15 ) NOT NULL default '',
`asfe` varchar( 8 ) NOT NULL default '',
`score` int( 10 ) NOT NULL default '0',
`tid` varchar( 15 ) NOT NULL default '',
`aswhat` varchar( 100 ) NOT NULL default '',
PRIMARY KEY ( `id` )
) TYPE = MYISAM
判断依据: 以 CREATE TABLE 开头,后面跟数据表的名字: CDB_XXX
结束标致: TYPE = ……
这类就属于上述的第一个类别:添加一个数据表!
反安装方法:
DROP TABLE CDB_XXX
方法简述:这类升级代码的反安装方法很简单,不管这个表有多大,你可需要用DROP TABLE后跟数据表的名字即可,例如我的鲜花鸡蛋插件以上的升级代码,反安装的代码如下:
DROP TABLE cdb_felog
二、建立一个或多个字段:ALTER TABLE `cdb_posts` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
ALTER TABLE `cdb_posts` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
ALTER TABLE `cdb_threads` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
ALTER TABLE `cdb_threads` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
或:
ALTER TABLE `cdb_members` ADD `putsum` INT( 8 ) NOT NULL ,
ADD `audsum` INT( 8 ) NOT NULL ,
ADD `groomsum` INT( 8 ) NOT NULL ,
ADD `delesum` INT( 8 ) NOT NULL ,
ADD `audit` VARCHAR( 1 ) NOT NULL ;
判断依据: 以 ALTER TABLE 开头,后面跟数据表的名字: CDB_XXX,再跟 ADD,再跟字段的名称!
注意事项: 这类升级代码有种简写的方式,如果升级一个表内的字段多于一个,就可以用简化方式写
上面第一个升级代码是完整的写法,第二个写法最简写;
两者的区别就在于不用多写 ALTER TABLE `数据表`
在同一个数据表里升级两个或以上的字段,就可以使用这种升级方式了。
反安装方法:ALTER TABLE `数据表1` DROP `字段名1`;
ALTER TABLE `数据表2` DROP `字段名1`;
或
ALTER TABLE `数据表`
DROP `字段名1`,
DROP `字段名1`,
DROP `字段名1`;
方法简述:不管是第一个方法还是第二种方法,都可以完成对添加字段的反安装
只要把“数据表1"的名字替换成添加字段的表“CDB_XXX",再把“字段名1”替换成添加的字段名(ADD后的名字)。
例子:上面第一个代码写法的反安装代码为:
ALTER TABLE `cdb_posts` DROP `flower;
ALTER TABLE `cdb_posts` DROP `egg`;
ALTER TABLE `cdb_threads` DROP `flower`;
ALTER TABLE `cdb_threads` DROP `egg`;
上面第二个代码写法的反安装代码为:
ALTER TABLE `cdb_members` DROP `,
DROP `audsum`,
DROP `groomsum` ,
DROP `delesum` ,
DROP `audit` ;
其实大家仔细观察一下就可以看出来,这类反安装代码其实就是把升级代码中的ADD改为DROP,并把字段名后的部分代码删除即可。
清空字段信息:
例如:把pre_ucenter_member表中的secques字段清空update pre_ucenter_member set secques='';
SQL更改字段长度:
alter table 表名 modify column 字段名 类型;
例如:修改数据库中pre_forum_thread表的secondsubject字段,将其长度更改为char(85)可以用:alter table pre_forum_thread modify column secondsubject char(85) ;
三、添加一个或多个字段的值:INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('attaopen', '1');
INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('attacoun', '15');
这类升级代码很少用,一段是用在SETTINGS表里。
其标致为:以INSERT INTO开头,后面是数据表的名字,第一个括号里面的是要加给值的字段名,第二个括号里的值是与第一个括号里对应的,分别是加到第一个括号里字段里的。
反安装代码:DELETE FROM `cdb_settings` WHERE `variable` = 'attaopen' AND `value` = '1' ;
DELETE FROM `cdb_settings` WHERE `variable` = 'attacoun' AND `value` = '15' ;
方法简述:
先将升级代码中的INSERT INTO改为DELETE FROM, 在第一个括号前加个“ WHERE ”,然后是第一个括号里的值“variable”,再加“=”号,再加第二个括号里的第一个值“attaopen”,如果括号里的值不止一个,那再加“ ADD ”,再加第一个括号里的第二个值“value”,再加“=”号,再另第二个括号里的第二个值“1”,如果还有更多那就再加“ADD”再加第一个括号里的第三个……
这就是数据库反安装的基本方法。希望大家认真掌握自己动手进行数据库信息的增加与删除!
此处评论已关闭