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' )>0Mysql 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等必须使用聚合函数取字段。
时间紧迫,暂时记录这么多吧,稍后再续。