码迷,mamicode.com
首页 > 数据库 > 详细

MySQL入门-8:函数

时间:2014-07-08 08:42:33      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:函数   mysql   数据库   通用   聚集函数   

大纲

1、函数

2、文本处理函数

3、数值计算函数

4、日期处理函数

5、聚集函数


1、函数

    函数好用,但是不通用:

bubuko.com,布布扣

函数大致可以分为以下类型:

  • 用于处理文本串

  • 用于处理日期和时间

  • 用于数值计算

  • 返回DBMS系统信息


如何知道函数怎么使用?

1、查看官方文档:http://dev.mysql.com/doc/refman/5.1/zh/index.html

2、mysql> help functions;

然后,根据自己的需要,查看具体的函数类别。


MySQL中使用函数时,函数名和左括号之间不能有空格。ERROR 1305 (42000)

Bug #61795  已经修复, Version> 5.1.41-3


2、文本处理函数

    文本处理函数可以很方便的帮助我们进行一些处理。比如大小写转换(UPPER, LOWER),去除空格(TRIM, RTRIM, LTRIM),以及取出串的一部分或者填充等等。

    SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较。

mysql> SELECT cust_name 
       FROM customers
       WHERE SOUNDEX(cust_name) = SOUNDEX(‘Y. lie‘);


    在前面的学习过程,我们提到:默认情况下,MySQL在进行文本比较的时候,是不区分大小写的。这取决于MySQL的设置。我们如何避免这种情况呢? 在比较的时候,同时转为大写或小写即可,保持统一。

WHERE UPPER(name) = UPPER(‘skypeGNU‘);


3、数值计算函数

    数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角函数或几何运算,因此没有串或日期时间处理函数的使用那么频繁。


4、日期处理函数(日期也存储为字符串格式)

    日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效的排序或过滤,并且节省物理存储空间。日期和时间函数在MySQL具有很重要的作用。

    首先需要注意的是MySQL使用的日期格式。无论你什么时候指定一个日期。不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd。虽然其他的日期格式可能也行,但这是首选的日期格式,因为它排除了多义性。应该总是使用4位数字的年份,他们更可靠,因为MySQL不必做出任何假定。

SELECT cust_id, order_num
FROM orders
WHERE order_date = ‘2005-09-01‘;

其实,在内部日期和时间也是存储为字符串。所以可以按照字符串比较的方式进行。

但是,使用WHERE order_date = ‘2005-09-01‘;可靠吗?datetime这种类型存储日期和时间值,但是我们仅给出了日期值。怎么办?

    解决办法是指示MySQL仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较。

SELECT cust_id, order_num
FROM orders
WHERE DATE(order_date) = ‘2005-09-01‘;   # DATE()

最佳实践:如果要的是日期,请使用DATE()。如果只想要时间,应该使用TIME()函数。


如果想检索出2005年9月,下的所有订单,怎么办?

SELECT cust_id, order_num
FROM orders
WHERE DATE(order_date) BETWEEN ‘2005-09-01‘ AND ‘2005-09-30‘;

另外还有一种方法(一种不需要记住每个月中有多少天或不需要操心闰2月的办法)

SELECT cust_id, order_num
FROM orders
WHERE YEAR(order_date) = 2005 AND MONTH(order_date) = 9;

强烈推荐这种方法。


5、聚集函数

  • 确定表中行数

  • 获得表中行组的和

  • 找出表列的最大值、最小值、平均值


聚集函数(aggregate function) 运行在多个行组上,计算和返回单个值得函数。

bubuko.com,布布扣

对于NULL值得行,除了COUNT(*),其他聚集函数都是忽略NULL值的行。

以上5个聚集函数都可以如下使用:

  • 对所有的行执行计算,指定ALL参数或不给参数

  • 如果想只包含不同的值,指定DISTINCT参数。

ALL为默认。如果不指定DISTINCT, 则假定为ALL。

mysql> SELECT AVG(DISTINCT prod_price) avg_price

    如果指定列名,则DISTINCT只能用于COUNT(column)。DISTINCT不能用于COUNT(*),否则错误。

类似的,DISTINCT必须使用列名,不能用于计算或表达式。


本文出自 “Share your knowledge” 博客,请务必保留此出处http://skypegnu1.blog.51cto.com/8991766/1435429

MySQL入门-8:函数,布布扣,bubuko.com

MySQL入门-8:函数

标签:函数   mysql   数据库   通用   聚集函数   

原文地址:http://skypegnu1.blog.51cto.com/8991766/1435429

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!