Mysql的优势,就是PHP的优势

今天压力聚减,感觉轻松了好多。正好这两天解决问题有了些新的想法,做一下总结。

虽然做PHP很久了,但写关于PHP的文章,还是没有ASP多。PHP在最近的语言排行榜上虽然略有下降的趋势,但它在网络程序开发中仍然是最有优势的。PHP虽然作为一种脚本语言,但很多功能上可与其它高级语言一较。面向对象的逐步完善,错误等级,弱类型以及强制的类型转换,都给开发者莫大的方便及自由。

Mysql作为PHP的最佳搭档,它的优势一点也不弱。虽然定位上只算是中小型数据库,但它开放源代码,功能强大(也在不断完善中),安装使用都非常方便。PHP的流行,Mysql是功不可没的。

Mysql使用方便。支持LIMIT语法。

这使得对数学比较头痛的编程者可以轻易地做出分页的功能。当然,基本上很多数据库都可以实现分页的语法,只是复杂度和效率上各有千秋,实在不如Mysql一句LIMIT来得直接。

Mysql FIND_IN_SET函数。

也许很多经常使用的人都不太了解这个函数。这个函数支持在Mysql里直接查询一个字符串是否在另一个字符串中有完整的包含,格式如下:

FIND_IN_SET(str,strlist) 

其中两个参数都可以是字段名,也可以是字符串

str:普通字符串,但是不能包含 , 否则会出错

strlist:字符串列表,是一串由 , 分割的多个字符串

比较常用数据设计的人都会用到字符串列表,要判断一个字符串是否在字符串列表中,程序语言中很容易判断,一种是用strpos、indexOf、InStr等类似的方法,但要排除不完整的包含。一种是转换成数组判断。在数据库里如果要直接判断,一般是用InStr类似的函数判断。

 

SQL Server
SELECT * FROM Table Where CHARINDEX(','+ Field+',', ',a,b,c,de,' )>0

Mysql
SELECT * FROM Table Where FIND_IN_SET(Field, 'a,b,c,de' )>0
Mysql GROUP_CONCAT 函数

 

支持在GROUP BY语句中将多个关联字段组合起来

GROUP_CONCAT([DISTINCT] expr [,expr ...]

             [ORDER BY {unsigned_integer | col_name | expr}

                 [ASC | DESC] [,col_name ...]]

             [SEPARATOR str_val])
MySQL

SELECT pid,GROUP_CONCAT(DISTINCT id) FROM Test GROUP BY pid
说到这里,顺带提一下,Mysql支持在GROUP BY 语句中直接写未分组的字段,而SQL Server等必须使用聚合函数取字段。

 

时间紧迫,暂时记录这么多吧,稍后再续。