My SQL数据库实用技术(04)
时间:2007-12-23 来源:不详 作者:迈克DB
本章前面给出了一个查询如下,确定不久要来检查但还没来诊所的牙科病人:
现在回过头来看,读者会更清楚这个查询的含义了。
7. 模式匹配
MySQL 答应查找与某个模式相配的值。这样,可以选择记录而不用提供精确的值。为了进行模式匹配运算,可使用非凡的运算符( LIKE 和NOT LIKE),并且指定一个包含通配符的串。字符“_”匹配任意单个字符,而“%”匹配任意字符序列(包括空序列)。使用L I K E或NOT LIKE 的模式匹配都是不区分大小写的。下列模式匹配以“W”或“w”开始的姓:
此查询给出了一个常见的错误,它对一个算术比较运算符使用了模式。这种比较成功的惟一可能是相应的列确实包含串“ W %”或“w %”。下列模式匹配任意位置包含“W”或“w”的姓:
MySQL 还提供基于扩展正规表达式的模式匹配。正规表达式在附录C 的REGEXP 运算符的介绍中描述。 织梦内容管理系统
8. 生成汇总
MySQL 所能做的最有用的事情是浓缩大量的原始数据行并对其进行汇总。当学会了利用MySQL 来生成汇总时,它就变成了用户强有力的好帮手了,因为手工进行汇总是一项冗长的、费时的、易出错的工作。汇总的一种简单的形式是确定在一组值中哪些值是唯一值。利用DISTINCT 要害字来删除结果中的重复行。例如,总统出生的各个州可按如下找出:
其他的汇总形式涉及计数,可利用COUNT( ) 函数。假如使用COUNT (*),它将给出查询所选择的行数。假如一个查询无WHERE 子句,COUNT(*) 将给出表中的行数。下列查询给出共有多少人当过美国总统:
假如查询有WHERE 子句,COUNT(*) 将给出此子句选择多少行。下面的查询给出目前为止对班级进行了多少次测试:
COUNT(*) 对选中的行进行计数。而COUNT(col_name) 只对非NULL 值进行计数。下面的查询说明了这些差异:
copyright dedecms
这表示,总共有41 位总统,他们中只有一个具有名字后缀,并且大多数总统都已去世。自MySQL 3.23.2 以来,可以将COUNT( ) 与DISTINCT 组合对选择结果集中不同的值进行计数。例如,为了对总统出生的不同州进行计数,可执行下列查询:
可以根据汇总列中单独的值对计数值进行分解。例如,您可能根据下列的查询结果知道班级中所有学生的人数:
但是,有多少是男孩?有多少是女孩?分别得出男孩、女孩的一种方法是分别对每种性别进行计数:
上一篇:My SQL数据库实用技术(02) 下一篇:My SQL数据库实用技术(03)
文章评论
共有位Admini5网友发表了评论 查看完整内容