MYSQL论坛(MySQL中文论坛,分享技术精华)
一、PHP+MySQL数据库论坛简易通
校园论坛是校园网中不可缺少的部分之一虽然基于ASP+ACCESS的论坛使用简洁安装方便但MySQL数据库以它短小方便速度快免费等优点成为很多站点目前首选数据库加上PHP语言也具有可跨平台移植性高安全可靠快速高效的优点因此目前很多流行论坛程序都采用了PHP+MySQL相结合来开发不过对于我等菜鸟们来说在服务器上安装PHP+MySQL论坛可不像ASP+ACCESS那么简单只需要直接放到站点目录下即可运行因为大多数PHP+MySQL论坛在使用前都需要安装
如果你打算购买虚拟空间来运行PHP+MySQL论坛程序那么你首先得购买一个支持PHP+MySQL的空间一般的适合运行小型论坛(人左右同时在线)程序的虚拟空间每年最低费用一般元左右除此而外还得建立MySQL数据库创建用户名和密码才能顺利安装PHP+MySQL论坛有的虚拟空间商直接提供这些信息给你无需自己动手设置例如上海E动网的K虚拟主机在后台建立了名称为itlm的数据库后就自动创建了itlm_f itlm_r itlm_w三个用户(密码都是自己设定的)这样安装时就可以直接使用了
如果学校有自己的服务器(Windows系统)那么就按照下面的步骤一先设置好服务器的运行环境让服务器支持PHP+MySQL
服务器端软件安装
PHP+MySQL论坛程序在大多数情况下都是运行在Linux UNIX等系统下但是安装Linux UNIX系统再配置PHP+MySQL对于我等菜鸟们来说可不是想玩就可以玩起来的!这里笔者向大家推荐一款Win平台下的一款Web服务器软件 EasyAPM Server EasyAPM Server是Win/XP/系统下的Apache+PHP+MySQL运行环境快速集成安装套件只要一次安装就自动包含以下程序 Apache v(Win) PHP v(Win) Zend Optimizer v a(Win) MySQL v(Win) phpMyAdmin v pl用户无须修改任何配置文件对初学者来说是安装最方便最快速的一款WEB服务器平台!
第步从以下地址下载EasyAPM Server
// byshell net/Sofare/Catalog/
第步将下载的文件解压到服务器d:usr
第步在服务器上运行d:usrinstall bat安装Apache+PHP+MySQL集成套件这样几分钟之内就让你的服务器(或个人电脑)立刻变成了一台支持PHP+MySQL的服务器
第步建立MySQL数据库在服务器IE地址栏输入//localhost/phpmyadmin/使用phpMyAdmin来建立一个名为itlm的数据库
注意
()如果服务器原来已经安装IIS服务请在安装EasyAPM Server前停止服务或改变默认端口否则会无法正常安装
()EasyAPM Server安装后默认登录用户名: root密码: micronsky net进入后台后可以使用权限项来更新MySQL数据库的默认密码添加新的MySQL用户设置用户权限等操作这里我们新增了一个用户 itlm_f
()更多操作请查看EasyAPM Server内的说明文档
安装phpwind
免费个人版论坛程序
第步下载解压phpwind安装包从// phpwind/download php?action=do&&p= PWForums&&v=&&n=PHPWind_GBK_ zip下载PHPWind正式版(PHP+MySQL)高速论坛程序
第步上传phpwind程序文件如果使用的是虚拟主机只要用FTP软件将解压后的所有文件上传到网站根目录下确保在根目录下能看到install php就可以了!
如果是自己的服务器安装的EasyAPM Server只要先删除D:usr下除phpmyadmin文件夹(在线管理数据库用)外的所有文件然后将phpwind zip内的所有文件解压到D:usr下确保D:usr下能看到install php文件这些就是phpwind的论坛的安装程序文件
第步设置相关目录和文件的属性(服务器如果是Windows平台的此步可省略直接将相关文件或文件夹设置为可写即可)先确认以下目录或文件属性为()可写模式
data data/sql_config php attachment data/bbscache data/groupdb data/style _data template template/wind template/admin image/upload image/attach
PHP编程免费提供,内容来源于互联网,本文归原作者所有。二、MYSQL使用基础、进阶分享
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,属于Oracle旗下产品,是最流行的关系型数据库管理系统之一。
端口是3306。
表很多时,使用linux脚本,需要根据需要修改一下:
和创建一样,可以加上 if exists
可两篇文章:
如:
用于在已有的表中添加、删除或修改列。
添加 ADD
或
默认是添加到最后,但可以指定位置。 FIRST:添加最前
AFTER字段名>:添加指定字段之后
例子:
删除 DROP
修改 MODIFY主要修改原列的类型或约束条件同样可以用 FIRST和 AFTER字段名>,代表的是修改到哪里。
修改字段名 CHANGE
可以把表2的数据复制到表1中,但不能复制约束性条件。
单行
多行,注意只有一个VALUES:
不写(行1,行2...)这一部分的话,默认一一对应
除了以上方法外,还可以用SET为每一行附上相应的值。
假如没有筛选的话,就给全部都修改了。可以用 WHERE筛选。
假如没有筛选的话,就给全部删除了。相当于清空。
清空
先把表删除,然后再建一个。与 DELETE FROM相比, TRUNCATE的效率更快,因为 DELETE FROM是把记录逐条删除的。
查询执行的顺序
FROM-->WHERE-->SELECT-->GROUP BY-->HAVING-->ORDER BY-->LIMIT
注意
当数据很大,上百万的时候,使用LIMIT... OFFSET..的方式进行分页十分浪费资源且耗时长。最好是结合WHERE使用,如:
REGEXP使用正则表达进行匹配。查询时,需要搭配WHERE或HAVING使用。
两个表之间有交集且要用到两个表的数据时,可以使用内连接查询。
LEFT JOIN关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
用法:
RIGHT JOIN关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。把LEFT JOIN的表1、表2调换顺序,就是REGHT JOIN。
FULL OUTER JOIN关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.相当于结合了 LEFT JOIN和 RIGHT JOIN的结果。
但 MySQL中不支持 FULL OUTER JOIN。
即SELECT嵌套。
IN一个查询结果作为另一个查询的条件。如:
EXISTS用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。True时执行。如:
索引的本质是一种排好序的数据结构。利用索引可以提高查询速度。
常见的索引有:
MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。外键的使用条件:
外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。
对已有的两个表增加外键比如:主表为A,子表为B,外键为aid,外键约束名字为a_fk_b
为子表添加一个字段,当做外键
为子表添加外键约束条件
假如删除记录报错: [Err] 1451-Cannot deleteorupdatea parent row: aforeignkeyconstraintfails(...)
这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。可以通过设置 FOREIGN_KEY_CHECKS变量来避免这种情况。第一步:禁用外键约束,我们可以使用: SETFOREIGN_KEY_CHECKS=0;第二步:删除数据第三步:启动外键约束,我们可以使用: SETFOREIGN_KEY_CHECKS=1;查看当前FOREIGN_KEY_CHECKS的值,可用如下命令: SELECT@@FOREIGN_KEY_CHECKS;
使用 UNION来组合两个查询,如果第一个查询返回 M行,第二个查询返回 N行,那么组合查询的结果一般为 M+N行。
每个查询必须包含相同的列、表达式和聚集函数。
默认会去除相同行,如果需要保留相同行,使用 UNION ALL。
只能包含一个 ORDER BY子句,并且必须位于语句的最后。
内置函数很多,见: MySQL函数
我们一般使用 START TRANSACTION或 BEGIN开启事务, COMMIT提交事务中的命令, SAVEPOINT:相当于设置一个还原点, ROLLBACK TO:回滚到某个还原点下
一般的使用格式如下:
开启事务时,默认加锁
根据类型可分为共享锁(SHARED LOCK)和排他锁(EXCLUSIVE LOCK)或者叫读锁(READ LOCK)和写锁(WRITE LOCK)。
根据粒度划分又分表锁和行锁。表锁由数据库服务器实现,行锁由存储引擎实现。
除此之外,我们可以显示加锁
加锁时,如果没有索引,会锁表,如果加了索引,就会锁行
InnoDB默认支持行锁,获取锁是分步的,并不是一次性获取所有的锁,因此在锁竞争的时候就会出现死锁的情况
解决方法:
即ACID特性:
由于并发事务会引发上面这些问题,我们可以设置事务的隔离级别解决上面的问题.
MySQL的默认隔离级别(可重复读)
查看当前会话隔离级别
方式1
方式2
设置隔离级别
主从集群的示意图如下:
主要涉及三个线程: binlog线程、 I/O线程和 SQL线程。
同步流程:
由于MySQL主从集群只会从主节点同步到从节点,不会反过来同步,所以需要读写分离
读写分离需要在业务层面实现,写数据只能在主节点上完成,而读数据可以在主节点或从节点上完成
索引是帮助MySQL高效获取数据的排好序的数据结构
MySQL的索引有
推荐两个在线工具:
简单来说, B树是在红黑树(一个平衡二叉树)的基础上将一个节点存放多个值,实现的,降低了树的高度,每个节点都存放索引及对应数据指针,同一层的节点是递增的
而B+树在B树的基础上进行优化,非叶子节点存放子节点的开始的索引,叶子节点存放索引和数据的指针,且叶子节点之间有双向的指针
如下示意图:
不同的引擎,主键索引存放的数据也不一样,比如常见的 MyISAM和 InnoDB
MyISAM的B+树叶子节点存放表数据的指针, InnoDB的B+树叶子节点存放处主键外的数据
其他的:
即多个列组成一个索引,语法:
由于联合索引的B+树的结构,根据列建立,所以我们的查找条件也要根据索引列的顺序( where column1=x, column2=y,columnN...),否则会全表扫描
如果你对列进行了(+,-,*,/,!),那么都将不会走索引。
OR引起的索引失效
OR导致索引是在特定情况下的,并不是所有的 OR都是使索引失效,如果OR连接的是同一个字段,那么索引不会失效,反之索引失效。
这个我相信大家都明白,模糊搜索如果你前缀也进行模糊搜索,那么不会走索引。
这两种用法,也将使索引失效。另 IN会走索引,但是当IN的取值范围较大时会导致索引失效,走全表扫描,见: MySQL中使用IN会不会走索引
不走索引。
走索引。
所以设计表的时候,建议不可为空,而是将默认值设置为""( NOT NULL DEFAULT"")
三、《MySQL必知必会》pdf下载在线阅读,求百度网盘云资源
《MySQL必知必会》([英] Ben Forta)电子书网盘下载免费在线阅读
链接:提取码:0hj2
书名:MySQL必知必会
作者:[英] Ben Forta
译者:刘晓霞
豆瓣评分:8.4
出版社:人民邮电出版社
出版年份:2009-1
页数:241
内容简介:
《MySQL必知必会》MySQL是世界上最受欢迎的数据库管理系统之一。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增。
作者简介:
Ben Forta是世界知名的技术作家,也是Ad。be技术界最为知名的专家之一,目前担任Adobe公司的高级技术推广专家。他具有计算机行业20多年工作经验,多年来撰写了十几本技术图书,其中不少是世界畅销书,已被翻译为十几种文字。除本书外,他撰写的《正则表达式必知必会》也即将由人民邮电出版社出版。读者可以通过他的个人网站http://www.forta.com了解更多信息。