新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > MySQL教程 > 正文:MySQL中文参考手册-- 创造并使用一个数据库

MySQL中文参考手册-- 创造并使用一个数据库

新客网 XKER.COM 2006-10-10 来源: 收藏本文

  
  mysql> SELECT name, birth, death, (TO_DAYS(death)-TO_DAYS(birth))/365 AS age
    -> FROM pet WHERE death IS NOT NULL ORDER BY age;
  +--------+------------+------------+------+
  | name  | birth   | death   | age |
  +--------+------------+------------+------+
  | Bowser | 1989-08-31 | 1995-07-29 | 5.91 |
  +--------+------------+------------+------+
  
  差询使用death IS NOT NULL而非death != NULL,因为NULL是特殊的值,这以后会解释。见8.4.4.6 用NULL值工作。
  
  如果你想要知道哪个动物下个月过生日,怎么办?对于这类计算,年和天是无关的,你简单地想要提取birth列的月份部分。MySQL提供几个日期部分的提取函数,例如YEAR()、MONTH()和DAYOFMONTH()。在这里MONTH()是适合的函数。为了看它怎样工作,运行一个简单的查询,显示birth和MONTH(birth)的值:
  
  mysql> SELECT name, birth, MONTH(birth) FROM pet;
  +----------+------------+--------------+
  | name   | birth   | MONTH(birth) |
  +----------+------------+--------------+
  | Fluffy  | 1993-02-04 |      2 |
  | Claws  | 1994-03-17 |      3 |
  | Buffy  | 1989-05-13 |      5 |
  | Fang   | 1990-08-27 |      8 |
  | Bowser  | 1989-08-31 |      8 |
  | Chirpy  | 1998-09-11 |      9 |
  | Whistler | 1997-12-09 |      12 |
  | Slim   | 1996-04-29 |      4 |
  | Puffball | 1999-03-30 |      3 |
  +----------+------------+--------------+
  
  用下个月的生日找出动物也是容易的。假定当前月是4月,那么月值是4并且你寻找在5月出生的动物 (5月), 象这样:
  
  mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
  +-------+------------+
  | name | birth   |
  +-------+------------+
  | Buffy | 1989-05-13 |
  +-------+------------+
  
  当然如果当前月份是12月,就有点复杂了。你不是只把加1到月份数(12)上并且寻找在13月出生的动物,因为没有这样的月份。相反,你寻找在1月出生的动物(1月) 。
  
  你甚至可以编写查询以便不管当前月份是什么它都能工作。这种方法你不必在查询中使用一个特定的月份数字,DATE_ADD()允许你把时间间隔加到一个给定的日期。如果你把一个月加到NOW()值上,然后用MONTH()提取月份部分,结果产生寻找生日的月份:
  
  mysql> SELECT name, birth FROM pet
    -> WHERE MONTH(birth) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH));
  
  完成同样任务的一个不同方法是加1以得出当前月份的下一个月(在使用取模函数(MOD)后,如果它当前是12,则“绕回”月份到值0):
  
  mysql> SELECT name, birth FROM pet
    -> WHERE MONTH(birth) = MOD(MONTH(NOW()), 12) + 1;
  
  注意,MONTH返回在1和12之间的一个数字,且MOD(something,12)返回在0和11之间的一个数字,因此必须在MOD()以后加1,否则我们将从11月( 11 )跳到1月(1)。
  
  8.4.4.6 NULL值操作
  NULL值可能很奇怪直到你习惯于它。概念上,NULL意味着“没有值”或“未知值”,且它被看作有点与众不同的值。为了测试NULL,你不能使用算术比较运算符例如=、<或!=。为了说明它,试试下列查询:
  
  mysql> SELECT 1 = NULL, 1 != NULL, 1 < NULL, 1 > NULL;
  +----------+-----------+----------+----------+
  | 1 = NULL | 1 != NULL | 1 < NULL | 1 > NULL |

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐