插件作者的标准出来了!Manyou诚邀开发者加盟!
《站长》&《程序员》杂志火热征集开发者
立即免费下载 Discuz!6.1.0正式版
Discuz! 6.1.0 使用说明
Discuz!NT2.5正式版发布
开放源码下载
UCenter Home 1.2 正式版发布
官方站 | 帮助文档
基于ECShop的网店托管-卖否
PHP就业培训直通车 | LAMP培训大连
Discuz!收费服务内容及价格
论坛免费升级 手握手
Discuz!/ECShop 专用官方虚拟主机
【九城-奇迹世界】专题活动开始了!
Comsenz 招聘信息
网店系统ECShop v2.6.0正式版火热发布
基于Discuz!的免费论坛空间5D6D
参与有奖社区调查 赢取台湾5日游
 33 1234
发新话题
打印

我眼中的数据库——不懂数据库及数据库升级的进来瞟两眼

我眼中的数据库——不懂数据库及数据库升级的进来瞟两眼

在论坛也呆了一段时间了,
可惜就是技术不好,
没有留下有价值的一些东西。
不过也对某些东西有了一定的了解,
今天拿出来与大家共同分享。

注:此贴不是很有价值的技术帖子,
而且有些东西都只是个人的想法,
看看即可。

目录:
2楼 数据库及数据表
3楼 升级数据库
4楼 参考资料
14楼为老龙额外补充的知识

谢谢老龙啦!!

[ 本帖最后由 羽扇纶巾 于 2006-7-11 16:36 编辑 ]

[ 本帖最后由 羽扇纶巾 于 2006-7-12 09:11 编辑 ]
本帖最近评分记录
  • SystemMessage 威望 +3 精品文章 2007-5-13 21:53
  • SystemMessage 金币 +3 精品文章 2007-5-13 21:53
  • lu5266 威望 +5 支持多多发表类似教程下 2007-2-3 12:45
  • lu5266 金币 +5 支持多多发表类似教程下 2007-2-3 12:45
高中最后一个假期结束了。这不仅意味着今后十几个月没有了超过5天的假期,更意味着我的高中生活快要接近尾声。世态炎凉啊。。
眼前是一段艰难的路,我不仅要走,还要走好!因此,さようなら,Discuz! & ALL MY FRIENDS from Discuz!!.今天的分别是为了明天更好的再相会~
1.数据库
数据库是一个论坛的灵魂,
因为论坛所以数据全部存在数据库中。
所以我们应该对数据库十分重视。
一方面要爱护数据库,不随便更改其参数,
另一方面还要做好数据的保护工作,
且莫将论坛的数据对外。


2.数据表(table)
数据库是有数据表构成的。
在现在的Discuz! 4.1.0中,共有59个数据表。
每个数据表都存放着不同的论坛数据。
现将数据表做一个简单的分析。

(1)表名
Discuz! 4.1.0中的数据表都是以cdb_开头的,
后接一个英文单词,大概可以表示所存放的数据的内容。
(2)表中的项目
字段
类型(type)
Null
默认(value)
链接倒
MIME

本人技术有限,不知道这些项目是干吗的。
不过这里列举些类型:
smallint
tinyint
char
int
tinyint
mediumint

这些词语之后会有个被括号围住的数字
具体是什么别问我。。。
(3)构成
数据表是由数据行(row)和数据列(colume)构成的
一个数据行就是数据表内的一条记录(record)
一个记录一般包含多个信息,数据表中的每一个数据列都对应着一个信息
关系:把存放在某个数据表内的信息和存放在另一个数据表内的信息通过某种方式关联起来,而这种关联就是通过查找两个数据表有无共同的元素来实现的。

注:新手看表的话,一般看看字段和注释就行了。
高中最后一个假期结束了。这不仅意味着今后十几个月没有了超过5天的假期,更意味着我的高中生活快要接近尾声。世态炎凉啊。。
眼前是一段艰难的路,我不仅要走,还要走好!因此,さようなら,Discuz! & ALL MY FRIENDS from Discuz!!.今天的分别是为了明天更好的再相会~
在安装一些插件,
或者批量修改论坛的一些参数时,
由于数据库不支持或者批量修改的麻烦,
这就要需要对数据库进行升级。


现在通过一些常用的升级数据库的语句做一些本人肤浅的阐释(有些解释可能不规范,见谅,见谅):

1.增加一个表
复制内容到剪贴板
代码:
CREATE TABLE table_name
(ziduan1 ziduanshuxing
……
);
说明:
CREATE TABLE是建表的意思,
table_name 是所建表的表名,
括号内是表中的字段及其属性。
表名、字段两端应该有这个符号(`,键盘上esc键下的那个键,注意要在英文状态)
举例:
复制内容到剪贴板
代码:
CREATE TABLE `cdb_lottery` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `username` varchar(15) NOT NULL default '',
  `isadmin` int(10) NOT NULL default '0',
  `lottery` int(10) NOT NULL default '0',
  `timing` int(10) NOT NULL default '0',
  `times` int(10) NOT NULL default '0',
  `finalno` int(10) NOT NULL default '0',
  `buytime` int(10) NOT NULL default '0',
  `winner` varchar(15) NOT NULL default '',
  `total` int(10) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=149 ;
看了例子就应该很明白了吧。
(“)”后的那句我不懂。。。)
注:上述语句来源:
http://www.discuz.net/thread-263392-1-1.html

2.增加一个字段
复制内容到剪贴板
代码:
ALTER TABLE table_name ADD COLUMN column_name type default value;
说明:
ALTER TABLE是改变表的意思,
column_name 是所增加的字段,
后为其属性。
表名、字段两端应该有这个符号(`,键盘上esc键下的那个键,注意要在英文状态)
举例:
复制内容到剪贴板
代码:
ALTER TABLE `mytable` ADD COLUMN `new_column` varchar(10) default '';
3.增加一个一个列做为主键
复制内容到剪贴板
代码:
ALTER TABLE table_name ADD COLUMN column_name type auto_increment PRIMARY KEY;
举例:
复制内容到剪贴板
代码:
ALTER TABLE `store` ADD COLUMN `book` int(10) auto_increment PRIMARY KEY;
4.更改一个字段名
复制内容到剪贴板
代码:
ALTER TABLE table_name CHANGE name1 name2 type default value;
name1为原来的字段名,name2为修改后的字段名。
举例:
复制内容到剪贴板
代码:
ALTER TABLE` myinfo` change `mobilephone` `cellphone` int(3) unsigned default 1;
5.更改一个字段的默认值
复制内容到剪贴板
代码:
ALTER TABLE table_name ALTER column_name set default value;
举例:
复制内容到剪贴板
代码:
ALTER TABLE `store` ALTER `book` set default '0';
6.更改一个字段的数据类型
复制内容到剪贴板
代码:
ALTER TABLE table_name CHANGE COLUMN column_name column_name type;
举例:
复制内容到剪贴板
代码:
ALTER TABLE `store` CHANGE COLUMN `book` varchar(20);
7.插入新数据
复制内容到剪贴板
代码:
INSERT INTO table_name VALUES ('','',1);
举例:
复制内容到剪贴板
代码:
INSERT INTO cdb_settings VALUES ('allowpay', '0');
INSERT INTO cdb_settings VALUES ('allowmedalpay', '0');
INSERT INTO cdb_settings VALUES ('senddays', '30');
INSERT INTO cdb_settings VALUES ('holidaypay', '0');
INSERT INTO cdb_settings VALUES ('allowpaylist', '0');
INSERT INTO cdb_settings VALUES ('allowlist', '0');
INSERT INTO cdb_settings VALUES ('listauthor', '0');
INSERT INTO cdb_settings VALUES ('listforum', '0');
INSERT INTO cdb_settings VALUES ('ae1', '0');
INSERT INTO cdb_settings VALUES ('ae2', '0');
INSERT INTO cdb_settings VALUES ('ae3', '0');
INSERT INTO cdb_settings VALUES ('ae4', '0');
INSERT INTO cdb_settings VALUES ('ae5', '0');
INSERT INTO cdb_settings VALUES ('ae6', '0');
INSERT INTO cdb_settings VALUES ('ae7', '0');
INSERT INTO cdb_settings VALUES ('ae8', '0');
INSERT INTO cdb_settings VALUES ('ld', '0');
注:上述语句来源:
http://www.discuz.net/thread-319090-1-1.html

8.其他操作
这些操作很实用的。
这部分我不想写了,
论坛上有现成的。
转过来用一下。
来源:
http://www.discuz.net/viewthread.php?tid=211633
引用:
1.打开论坛内所有版区 回收站
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `recyclebin` = '1' ;
2.允许论坛内所有版区斑竹自行添加版规 不支持html
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `alloweditrules` = '1';
3.允许论坛内所有版区斑竹自行添加版规 支持html
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `alloweditrules` = '2';
4.论坛内所有版区 按最后回复时间自动关闭 31天
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `autoclose` = '-31';
5.论坛内所有版区 按发布时间自动关闭 31天
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `autoclose` = '31';
6.论坛内所有版区 不自动关闭
[quote]UPDATE `cdb_forums` SET `autoclose` = '0';
7.论坛内所有版区 支付宝关闭
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `allowtrade` = '0';
8.论坛内所有会员 拓展1积分变为100
复制内容到剪贴板
代码:
UPDATE `cdb_members` SET `extcredits1` = '100';
9.论坛内所有会员 拓展1积分加100
复制内容到剪贴板
代码:
UPDATE `cdb_members` SET `extcredits1` = extcredits1 +100;
10.论坛内所有版区 干扰码关闭
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `jammer` = '0';
11.论坛内所有版区 干扰码开启
复制内容到剪贴板
代码:
UPDATE `cdb_forums` SET `jammer` = '1';
[/quote]

说了这么多,
其实了解下这些东东还是很有用的。
比如安装插件,
就可以判断数据库到底是怎么处理了一下~。
高中最后一个假期结束了。这不仅意味着今后十几个月没有了超过5天的假期,更意味着我的高中生活快要接近尾声。世态炎凉啊。。
眼前是一段艰难的路,我不仅要走,还要走好!因此,さようなら,Discuz! & ALL MY FRIENDS from Discuz!!.今天的分别是为了明天更好的再相会~
参考资料
1.附件里的那个很不错的,
虽然是4.0的,但是有用就行。
2.以下帖子参考了一下,版权归该帖子的作者所有:
http://www.discuz.net/thread-263392-1-1.html
http://www.discuz.net/thread-319090-1-1.html
http://www.discuz.net/viewthread.php?tid=211633
http://www.phpx.com/happy/viewth ... 1%26filter%3Ddigest

附件

Discuz!4数据字典.rar (46.41 KB)

2006-7-11 14:31, 下载次数: 612

高中最后一个假期结束了。这不仅意味着今后十几个月没有了超过5天的假期,更意味着我的高中生活快要接近尾声。世态炎凉啊。。
眼前是一段艰难的路,我不仅要走,还要走好!因此,さようなら,Discuz! & ALL MY FRIENDS from Discuz!!.今天的分别是为了明天更好的再相会~

这个太棒了!

  不错不错!这个太有用了!对新手有相当的帮助!希望所有的新手进来学习学习!

  支持你,加精华啦!

  不可多得~~~~
高中最后一个假期结束了。这不仅意味着今后十几个月没有了超过5天的假期,更意味着我的高中生活快要接近尾声。世态炎凉啊。。
眼前是一段艰难的路,我不仅要走,还要走好!因此,さようなら,Discuz! & ALL MY FRIENDS from Discuz!!.今天的分别是为了明天更好的再相会~
支持下.......
引用:
原帖由 羽扇纶巾 于 2006-7-11 17:24 发表
知识是拿来用的,如果自己学习了以后还可以让别人也得到学习的机会,那就是一种境界啦!

支持你,努力,相信你一定不错…………
这个怎能不加精?好
树上树下,中学论坛
www.sttree.com
DST成员 -消失一年再回来
记得点我http://www.discuzsupport.net/register.php?fromuid=127
谢谢~!
 33 1234
发新话题
版块跳转