相关的文档10bet官方网站 本手册下载 本手册摘录

3.3.4.9使用多个表

宠物表跟踪你的宠物。如果你想记录的其他信息,比如事件在他们的生活中去兽医或窝出生的时候,你需要另一个表。这个表应该是什么样子的呢?它需要包含以下信息:

  • 宠物的名字,这样你知道哪些动物每个事件属于。

  • 一个日期,这样你知道事件发生时。

  • 一个字段来描述事件。

  • 一个事件类型字段,如果你希望能够分类的事件。

考虑到这些因素,创建表声明的事件表看起来像这样:

mysql >创建表事件(名字VARCHAR(20),日期,日期类型为VARCHAR(15),备注VARCHAR (255));

宠物表,它是最简单的加载初始记录通过创建一个包含以下信息的文本文件一样。

的名字 日期 类型 备注
毛茸茸的 1995-05-15 垃圾 4只小猫,3女1男
巴菲 1993-06-23 垃圾 5个小狗,男2女,3
巴菲 1994-06-19 垃圾 3小狗,3女
活泼的 1999-03-21 兽医 需要喙直
苗条的 1997-08-03 兽医 破碎的肋骨
加油车 1991-10-12 养犬
1991-10-12 养犬
1998-08-28 生日 给了他一个新的咀嚼玩具
爪子 1998-03-17 生日 给了他一个新的跳蚤衣领
惠斯勒 1998-12-09 生日 第一个生日

加载记录如下:

mysql >数据加载本地INFILE’事件。txt”表事件;

根据你所学的知识从运行的查询宠物表,你应该能够执行检索的记录事件表;的原则是相同的。但是是什么时候事件表本身不足以回答问题你可能会问?

假设你想找到的年龄每个宠物都有自己的窝。我们之前看到如何从两个日期计算年龄。垃圾日期的母亲事件计算表,但是她的年龄在这一天你需要她的出生日期,这是存储在宠物表。这意味着查询需要两个表:

mysql >选择pet.name TIMESTAMPDIFF(年、出生日期)年龄、评论从宠物内连接事件在pet.name = event.name事件。类型=“垃圾”;+ - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | + |名字年龄|评论| + - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |的| 2 | 4只小猫,3女1男| |巴菲| 4 | 5小狗,2女,3男| |巴菲| 5 | 3的小狗,3女| + - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

有几件事情需要注意关于这个查询:

  • 条款连接两个表因为查询需要将信息从他们两人。

  • 当结合(加入)来自多个表的信息,您需要指定如何匹配记录一个表记录。这是容易的,因为他们都有一个的名字列。查询使用条款匹配记录在两个表的基础上的名字值。

    查询使用内连接结合表。一个内连接从表允许行出现在结果当且仅当两个表中指定的条件,见面条款。在这个例子中,条款规定,的名字宠物表必须匹配的名字事件表。如果一个名字出现在一个表而不是其他行没有出现在结果,因为条件条款失败。

  • 因为的名字列发生在两个表,你必须具体说明你的意思是指哪个表的列。这是通过将列名的表名。

你不需要有两个不同的表来执行一个连接。有时是有用的加入一个表本身,如果你想比较表中记录到其他相同的表中记录。例如,找到育种中对你的宠物,你可以加入宠物表本身产生候选人对男性和女性生活的物种:

mysql >选择p1.name, p1。性,p2.name, p2。性,p1。物种从宠物p1内连接宠物p1, p2。物种= p2。物种和p1。性= f和p1.death零和p2。性别=“m”和p2.death为空;+ - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - -名字+ | | | |名称性物种| | + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + + |毛茸茸的猫f m |爪子| | | | |巴菲狗m f方| | | | | + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + +

在这个查询中,我们指定表名别名引用的列,保持直实例与表的每一列引用。