一、操作步骤:
- 连接MySQL数据库
$link = mysql_connect($db_config['host'], $db_config['user'], $db_config['pwd'])
//$db_config['host']=主机IP
//$db_config['user']=数据库用户名
//$db_config['pwd']=数据库密码
- 判断是否连接成功
if (!$link) {
die('Could not connect: ' . mysql_error());
}
//连接成功返回一个连接标识符,否则返回false
- 选择数据库
mysql_select_db($db_config['dbname'], $link) or die('Can\'t use foo : ' . mysql_error());
//$db_config['dbname']=数据库名
//选择一个数据库,等同于"use 库名"语句
//返回值为布尔类型
- 设置字符集
mysql_set_charset("utf8"); 等同于mysql_query("set names utf8");
- 准备SQL语句
$sql = "SELECT * FROM tb";
- 向MySQL服务发送SQL语句
mysql_query($sql,$link); -- 发送一条sql语句
//sql语句若是查询,则返回结果集,其他则返回bool值表示执行是否成功。
- 解析处理结果集
mysql_fetch_array():以关联和索引两种方式数组解析结果集
mysql_fetch_row():以索引式数组解析结果集
mysql_fetch_assoc():以关联式数组解析结果集
mysql_fetch_object():以对象方式解析结果集
- 释放结果集,关闭数据库连接
mysql_free_result():释放结果集
mysql_close():关闭数据库连接
- 其它操作函数
mysql_affected_rows():取得前一次 MySQL 操作所影响的记录行数,关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数
mysql_insert_id():取得上一步 INSERT 操作产生的 ID
Mysql数据库优化要点
1.给查询比较频繁的字段添加索引,比如新闻的标题,就要创建Normal索引,
2.如果没有特需要,数据表类型就用MyISAM,如果需要支持事务,行级锁之类的特殊功能就要用I�nnoDB,因为MyISAM的查询效率比InnoDB高。
3.WHERE查询条件里面,如果筛选出来的结果集数量比较少的条件要往前写,条件多的要往后写。有利于查询优化。
4.字段请求,少用通配符*,一般用什么字段就取什么字段,即SELECT后面的字段名,用得着什么就写什么,用不着的就不写。可以减少请求的数据量,数据量回发给PHP的少,占用内存也就不大,自然也就可以优化了查询速度。如果MYSQL交给PHP的数据量比较多,最有可能的情况就是把PHP的默认使用内存(默认8M的内存)占满。程序会直接抛出一个内存溢出的错误!
5.如果数据量特别大,又是比较单一的应用,比如纯新闻站点,单从查询优化方面讲,可以使用第三方插件,比如xunsearch(迅搜),可以实现上亿条数据秒搜的查询效率(全文索引的一个插件),官网:http://www.xunsearch.com, xunsearch的原理是类似于百度等关键词词库索引。另外基于Sphinx+MySQL,也可以实现千万级数据全文检索。
6.如果应用比较复杂的应用,模块比较多也比较杂乱,第三插件的应用成本可能也比较大,则最好采用“分库,分表,分服务器”的集群处理方案。再加上负载均衡解决并发请求问题。大型应用一般就是这种方案解决的。靠拿大量的资金堆服务器堆出来的。大型网站都是靠钱堆的,不是单靠优化PHP,优化MYSQL优化出来的。
7.能用小整型绝对不用大整型,能用4个字符串长度的,绝对不设计成8个字符串。
8.适当设计数据冗余,将A表中的一些值重新在B表里面再存一份,这样可以避免关联查询。只查B表就可以得到需要的数据了,就不需要再关联从A表中取出关联的数据了。比如A表是学生表,B表是学校表,如果查完B表要显示学生姓名,而学生姓名存在A表中,B表中以前只有学生ID,没有学生姓名,这时候这种需求就建议将A表中的学生姓名在B表中再建个字段再存一份,这就是数据冗余思想。
9.将多条记录化为一条记录的方案:即多个值存到一个字段里,例如:投票系统中的用户信息。本来每个用户投一次需要生成一行新的记录,但是如果每天每个被投票对象只能被投100票,这种情况就不需要生成新记录,将多个值不断用PHP处理,然后UPDATE放在同一个字段里就可以了。
任务
创建增,删,查,改,连接数据库五个函数,最后通过函数的调用完成MySQL的增删查改的功能;
网友评论