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

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

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

  
  mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE species = "dog" OR species = "cat"
    -> GROUP BY species, sex;
  +---------+------+----------+
  | species | sex | COUNT(*) |
  +---------+------+----------+
  | cat   | f  |    1 |
  | cat   | m  |    1 |
  | dog   | f  |    1 |
  | dog   | m  |    2 |
  +---------+------+----------+
  
  或,如果你仅需要知道已知性别的按性别的动物数目:
  
  mysql> SELECT species, sex, COUNT(*) FROM pet
    -> WHERE sex IS NOT NULL
    -> GROUP BY species, sex;
  +---------+------+----------+
  | species | sex | COUNT(*) |
  +---------+------+----------+
  | bird  | f  |    1 |
  | cat   | f  |    1 |
  | cat   | m  |    1 |
  | dog   | f  |    1 |
  | dog   | m  |    2 |
  | hamster | f  |    1 |
  | snake  | m  |    1 |
  +---------+------+----------+
  
  8.4.5 使用多个数据库表
  pet表追踪你有哪个宠物。如果你想要记录他们的其他信息,例如在他们一生中事件看兽医或何时后代出生,你需要另外的表。这张表应该像什么呢?
  
  它需要包含宠物名字因此你知道每个事件属于此动物。
  它需要一个日期因此你知道事件什么时候发生的。
  需要一个字段描述事件。
  如果你想要可分类事件,有一个事件类型字段将是有用的。
  给出了这些考虑,为event表的CREATE TABLE语句可能看起来像这样:
  
  mysql> CREATE TABLE event (name VARCHAR(20), date DATE,
    -> type VARCHAR(15), remark VARCHAR(255));www.xker.com(小新)
  
  就象pet表,最容易的示通过创建包含信息的一个定位符分隔的文本文件装载初始记录:
  
   象这样装载记录:
  
  mysql> LOAD DATA LOCAL INFILE "event.txt" INTO TABLE event;
  
  基于你从已经运行在pet表上的查询中学到的,你应该能执行在event表中记录的检索;原则是一样的。但是什么时候是event表本身不足以回答你可能问的问题呢?
  
  当他们有了一窝小动物时,假定你想要找出每只宠物的年龄。 event表指出何时发生,但是为了计算母亲的年龄,你需要她的出生日期。既然它被存储在pet表中,为了查询你需要两张表:
  
  mysql> SELECT pet.name, (TO_DAYS(date) - TO_DAYS(birth))/365 AS age, remark
    -> FROM pet, event
    -> WHERE pet.name = event.name AND type = "litter";
  +--------+------+-----------------------------+
  | name  | age | remark           |
  +--------+------+-----------------------------+
  | Fluffy | 2.27 | 4 kittens, 3 female, 1 male |
  | Buffy | 4.12 | 5 puppies, 2 female, 3 male |
  | Buffy | 5.10 | 3 puppies, 3 female     |
  +--------+------+-----------------------------+
  
  关于该查询要注意的几件事情:
  
  FROM子句列出两个表,因为查询需要从他们两个拉出信息。
  当组合(联结-join)来自多个表的信息时,你需要指定在一个表中的记录怎样能匹配其它表的记录。这很简单,因为它们都有一个name列。查询使用WHERE子句基于name值来匹配2个表中的记录。
  因为name列出现在两个表中,当引用列时,你一定要指定哪个表。这通过把表名附在列名前做到。
  你不必有2个不同的表来执行一个联结。如果你想要将一个表的记录与同一个表的其他记录进行比较,联结一个表到自身有时是有用的。例如,为了在你的宠物之中繁殖配偶,你可以用pet联结自身来进行相似种类的雄雌配对:

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