龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > MySQL 技术 >

查询数据表中的记录(SELECT)(1)(5)

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
查询多个表 查询多个表,FROM子句列出表名,并用逗号分隔,因为查询需要从他们两个拉出信息。 当组合(联结-join)来自多个表的信息时,你需要指定在一

查询多个表

查询多个表,FROM子句列出表名,并用逗号分隔,因为查询需要从他们两个拉出信息。

当组合(联结-join)来自多个表的信息时,你需要指定在一个表中的记录怎样能匹配其它表的记录。这很简单,因为它们都有一个name列。查询使用WHERE子句基于name值来匹配2个表中的记录。

因为name列出现在两个表中,当引用列时,你一定要指定哪个表。这通过把表名附在列名前做到。

现在有一个event表:

mysql>select * from event;

+----------+------------+----------+-----------------------------+

| name     | date       | type     | remark                      |

+----------+------------+----------+-----------------------------+

| Fluffy   | 1995-05-15 | litter   | 4 kittens, 3 female, 1 male |

| Buffy    | 1993-06-23 | litter   | 5 puppies, 2 female, 3 male |

| Buffy    | 1994-06-19 | litter   | 3 puppies, 3 female         |

| Chirpy   | 1999-03-21 | vet      | needed beak straightened    |

| Slim     | 1997-08-03 | vet      | broken rib                  |

| Bowser   | 1991-10-12 | kennel   | NULL                        |

| Fang     | 1991-10-12 | kennel   | NULL                        |

| Fang     | 1998-08-28 | birthday | Gave him a new chew toy     |

| Claws    | 1998-03-17 | birthday | Gave him a new flea collar  |

| Whistler | 1998-12-09 | birthday | First birthday              |

+----------+------------+----------+-----------------------------+

当他们有了一窝小动物时,假定你想要找出每只宠物的年龄。 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         |

+--------+------+-----------------------------+

同样方法也可用于同一张表中,你不必有2个不同的表来执行一个联结。如果你想要将一个表的记录与同一个表的其他记录进行比较,联结一个表到自身有时是有用的。例如,为了在你的宠物之中繁殖配偶,你可以用pet联结自身来进行相似种类的雄雌配对:

mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species

-> FROM pet AS p1, pet AS p2

-> WHERE p1.species = p2.species AND p1.sex = "f" AND p2.sex = "m";

+--------+------+--------+------+---------+

| name   | sex  | name   | sex  | species |

+--------+------+--------+------+---------+

| Fluffy | f    | Claws  | m    | cat     |

| Buffy  | f    | Fang   | m    | dog     |

| Buffy  | f    | Bowser | m    | dog     |

+--------+------+--------+------+---------+

在这个查询中,我们为表名指定别名以便能引用列并且使得每一个列引用关联于哪个表实例更直观。

总结

本文总结了SELECT语句检索记录的简单使用方法。其中涉及到的内容主要包括以下一些内容:

1、WHERE从句的用法

2、GROUP BY从句的用法

3、ORDER BY从句的用法

4、连接多个表的简单介绍

  1. 使用SQL操作MySQL数据库
  2. MySQL中数据表操作详解

精彩图集

赞助商链接