多表查询导学

多表查询导学

ID:40816796

大小:299.50 KB

页数:7页

时间:2019-08-08

多表查询导学_第1页
多表查询导学_第2页
多表查询导学_第3页
多表查询导学_第4页
多表查询导学_第5页
资源描述:

《多表查询导学》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、多表查询一、多表连接当进行数据库设计时,为了减少数据冗余,提高数据库应用系统的性能。在完成关系模式转换时,依据转换原则,一个实体一张表,实体间的联系依据不同的联系类型进行适当的处理,在联系表中保留联系实体的主键(如:在借阅表中只保留读者的图书证号,以及书籍表中的图书ID)。尽量让每张表只描述一件事情。但是往往单表上的数据不能满足用户的查询要求。用户需要查看的数据可能来自多张表。如:检索借过《我的成功可以复制》的图书证号。分析:1、关于书籍明细在book表中2、关于借书明细在record表中得知:完成以上查询必须来自两张表。处理方法一:1、将book表,

2、record表进行连接,组建一张临时表。该表字段取自book,recordSelect*frombook,record(两表连接方式,参看表连接示意)观察以上数据,表之间如何实现连接?解答:A表的每一行跟B表的所有行进行一次合并。这样合并的结果将会出现某些不符合实际的数据,例如之上圈上红色矩形框的数据,在借阅记录中呈现的是B001的记录,而在book表中呈现的却不是B001的描述,这样的数据是不符合实际描述的。因此对于连接后的结果集,我们只需保留图书证号相同的记录。Select*frombook,recordWherebook.图书ID=record.

3、图书ID最后再筛选出我的成功可以复制的记录Select*frombook,recordWherebook.图书ID=record.图书IDand书名=’我的成功可以复制’连接查询的本质特点:将多张表连接成依据一定的连接条件合并成一张临时的单表。对于该连接表的查询就如同之前所学的单表查询,轻而易举。总结:把多张表具有相同意义的字段其属性值相等的合并在一起的连接方式成为等值连接。问题一:是不是只有设置主外健关系的表才能实施表连接呢?解答:不是这是两个不同的概念,设置主外健主要是强调引用关系,限制用户的输入行为以保证数据的完整性。有没有设置主外健关系,是不会

4、影响表连接。但是应该这么说,表连接的条件一般是建立在有引用特性的字段上。即属性意义相同的。二、操作细节1、为表取别名select*frombooka,recordbWherea.图书ID=b.图书ID--为表取别名and书名='我的成功可以复制'1、相同字段名应该强制加上表名.属性字段,如果为表取了别名则应别名.字段select图书id,书名frombook,record--由于book,record中都有图书IDWherebook.图书ID=record.图书IDand书名='我的成功可以复制'正确检索语句:selectbook.图书id,书名fro

5、mbook,recordWherebook.图书ID=record.图书IDand书名='我的成功可以复制'注意:selectbook.图书id,书名frombooka,recordbWherea.图书ID=b.图书IDand书名='我的成功可以复制'--已为表取别名,不能用原名标识正确检索:selecta.图书id,书名frombooka,recordbWherea.图书ID=b.图书IDand书名='我的成功可以复制'三、特殊连接方式——自连接当涉及到满足某一条件下,行与行之间的比较,就需要把行与行合并成一行,这就需要进行自表连接。例如:查看同时入

6、住过16013,15019的旅客有哪些?首先:Select*from入住记录where房号in(‘16013’,’15019’)以上检索方式将检索出既住过15019又住过16013的旅客,但是也把只住过15019或者16013的旅客也检索出来。因此改写条件语句为且的条件Select*from入住记录where房号=‘16013’and房号=’15019’但是一行中只记录该旅客的一次入住记录,因此之上检索出来的结果集为空集试想:如果把某用户的两次入住记录合并在一起,就可以检索该用户是否存在记录既住过‘15019’又住过‘16013’取别名Select*f

7、rom入住记录a,入住记录bwherea.房号=‘16013’andb.房号=’15019’第二部分子查询如:检索借过《我的成功可以复制》的图书证号。分析:1、关于书籍明细在book表中2、关于借书明细在record表中除了用连接表查询,还可以通过以下方法A、先检索出我的成功可以复制的图书idSelect*frombookwhere书名='我的成功可以复制'B、再由图书ID获取借过该图书ID的图书证号Select图书证号fromrecordwhere图书id=?将两条语句合并Select图书证号fromrecordwhere图书id=(Select图书

8、idfrombookwhere书名='我的成功可以复制')之上:将某一查询语句作为某一查询的条

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。