读书频道 > 网站 > 网页设计 > Web程序设计(第7版)
13.2.2 连接
13-02-17    奋斗的小年轻
收藏    我要投稿   

本文所属图书 > Web程序设计(第7版)

当前关于Web开发的书籍很多,但都是针对专业的开发人员,对于广大学生则往往难以理解和接受。本书由拥有30余年计算机教学经验的教授编写,专门针对大学生来讨论Web编程,充分考虑了读者的知识背景,比较全面地介...立即去当当网订购

假设希望从数据库获取所有带有CD播放器的Corvettes列表,那需要来自两个表的信息:Corvettes和Equipment。通过交叉引用表Corvettes_Equipment可将这两个表相连。SELECT命令可以临时构建一个包含Corvettes和Equipment表的信息的虚拟表,并使用Corvettes_Equipment表作为生成所需结果的查询依据。这种虚拟表通过两个表的连接(join)进行构建。连接由SELECT命令指定,该命令的FROM子句中有两个表,并且使用了一个复合的WHERE子句。在本例中,WHERE子句必须有三个条件。首先,Corvettes表的Vette_id列必须匹配Corvettes_Equipment表的Vette_id列。这就将Corvettes_Equipment表的行限定为与Corvettes表中受影响的行相关联。其次,Corvettes_Equipment表的Equip列必须匹配Equipment表的Equip_id列。这就将Equipment表的行限定为与Corvettes_Equipment表中受影响的行相关联。最后,来自Equipment表的Equip列的值必须是CD。提取带有CD播放器的汽车的完整SELECT命令如下所示。
SELECT Corvettes.Vette_id, Corvettes.Body_style,
Corvettes.Miles, Corvettes.Year, Corvettes.State,
Equipment.Equip
FROM Corvettes, Equipment, Corvettes_Equipment
WHERE Corvettes.Vette_id = Corvettes_Equipment.Vette_id
AND Corvettes_Equipment.Equip = Equipment.Equip_id
AND Equipment.Equip = 'CD';

这一查询生成下列结果:
VETTE_ID   BODY_STYLE    MILES   YEAR   STATE   EQUIP
1       coupe         18.0    1997   4        CD
2       hatchback     58.0    1996   7       CD
8       convertible   17.0    1999   5       CD
9       hardtop       17.0    2000   5       CD
10      hatchback     50.0    1995   7       CD

注意在这个查询中,所有对列的引用都以表名为前缀。仅当同一个列名在多个表中出现时,这才是必要的。如Vette_id列,Corvettes表和Corvettes_Equipment表中都有该列。然而,即使列名是唯一的,包括表名也可以增强查询的可读性。

回顾一下,Corvettes表中的State列不存储州名,而是存储了对States表行的引用,由States表存储州名。对Corvettes表提交查询的任何用户可能更喜欢返回结果是州名而不是States表的引用。这在SQL中可以很容易地解决。首先在SELECT子句中将Corvettes.State替换为States.State。然后在FROM子句中添加States。最后在WHERE子句中添加And Corvettes.State_id = States.State_id。下面这个示例对前面的SELECT命令做了改进,它可以生成州的名称,而不是州在States表中的主键:
SELECT Corvettes.Vette_id, Corvettes.Body_style,
Corvettes.Year, States.State, Equipment.Equip
FROM Corvettes, Equipment, Corvettes_Equipment, States
WHERE Corvettes.Vette_id = Corvettes_Equipment.Vette_id AND
Corvettes.State = States.State_id AND
Corvettes_Equipment.Equip = Equipment.Equip_id AND
Equipment.Equip = 'CD' AND
Corvettes.State = States.State_id;

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站