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

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

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

  
  mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
  +----------+---------+------------+
  | name   | species | birth   |
  +----------+---------+------------+
  | Chirpy  | bird  | 1998-09-11 |
  | Whistler | bird  | 1997-12-09 |
  | Claws  | cat   | 1994-03-17 |
  | Fluffy  | cat   | 1993-02-04 |
  | Fang   | dog   | 1990-08-27 |
  | Bowser  | dog   | 1989-08-31 |
  | Buffy  | dog   | 1989-05-13 |
  | Puffball | hamster | 1999-03-30 |
  | Slim   | snake  | 1996-04-29 |
  +----------+---------+------------+
  
  注意DESC关键词仅适用于紧跟在它之前的列名字(birth);species值仍然以升序被排序。
  
  8.4.4.5 日期计算
  MySQL提供几个函数,你能用来执行在日期上的计算,例如,计算年龄或提取日期的部分。
  
  为了决定你的每个宠物有多大,用出生日期和当前日期之间的差别计算年龄。通过变换2个日期到天数,取差值,并且用365除(在一年里的天数):
  
  mysql> SELECT name, (TO_DAYS(NOW())-TO_DAYS(birth))/365 FROM pet;
  +----------+-------------------------------------+
  | name   | (TO_DAYS(NOW())-TO_DAYS(birth))/365 |
  +----------+-------------------------------------+
  | Fluffy  |                6.15 |
  | Claws  |                5.04 |
  | Buffy  |                9.88 |
  | Fang   |                8.59 |
  | Bowser  |                9.58 |
  | Chirpy  |                0.55 |
  | Whistler |                1.30 |
  | Slim   |                2.92 |
  | Puffball |                0.00 |
  +----------+-------------------------------------+
  
  尽管查询可行,关于它还有能被改进的一些事情。首先,如果行以某个次序表示,其结果能更容易被扫描。第二,年龄列的标题不是很有意义的。
  
  第一个问题通过增加一个ORDER BY name子句按名字排序输出来解决。为了处理列标题,为列提供一个名字以便一个不同的标签出现在输出中(这被称为一个列别名):
  
  mysql> SELECT name, (TO_DAYS(NOW())-TO_DAYS(birth))/365 AS age
    -> FROM pet ORDER BY name;
  +----------+------+
  | name   | age |
  +----------+------+
  | Bowser  | 9.58 |
  | Buffy  | 9.88 |
  | Chirpy  | 0.55 |
  | Claws  | 5.04 |
  | Fang   | 8.59 |
  | Fluffy  | 6.15 |
  | Puffball | 0.00 |
  | Slim   | 2.92 |
  | Whistler | 1.30 |
  +----------+------+
  
  为了按age而非name排序输出,只要使用一个不同ORDER BY子句:
  
  mysql> SELECT name, (TO_DAYS(NOW())-TO_DAYS(birth))/365 AS age
    -> FROM pet ORDER BY age;
  +----------+------+
  | name   | age |
  +----------+------+
  | Puffball | 0.00 |
  | Chirpy  | 0.55 |
  | Whistler | 1.30 |
  | Slim   | 2.92 |
  | Claws  | 5.04 |
  | Fluffy  | 6.15 |
  | Fang   | 8.59 |
  | Bowser  | 9.58 |
  | Buffy  | 9.88 |
  +----------+------+
  
  一个类似的查询可以被用来确定已经死亡动物的死亡年龄。你通过检查death值是否是NULL来决定那些是哪些动物,然后,对于那些有非NULL值,计算在death和birth值之间的差别:

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