Discuz的Mysql数据库的一些常识
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)
一个记录一般包含多个信息,数据表中的每一个数据列都对应着一个信息
关系:把存放在某个数据表内的信息和存放在另一个数据表内的信息通过某种方式关联起来,而这种关联就是通过查找两个数据表有无共同的元素来实现的。
注:新手看表的话,一般看看字段和注释就行了。
在安装一些插件,
或者批量修改论坛的一些参数时,
由于数据库不支持或者批量修改的麻烦,
这就要需要对数据库进行升级。
现在通过一些常用的升级数据库的语句做一些本人肤浅的阐释(有些解释可能不规范,见谅,见谅):
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
Tag:
- 林肯公园's blog
- 19624 reads