联结
SQL最强大的功能之一就是能在数据检索查询的执行中联结表。而联结表是基于关系表。理解关系表如下,假如由同一供应商生产的多种物品,在数据库中需要存储产品信息,而在产品信息的这一行不存储供应商信息,因为这些产品的供应商是同一个,所以在产品信息这一行里记录一个唯一的供应商id就可以,供应商信息单独的存储一个表,并且也用为一个的id记录。这样,产品表与供应商表就通过 共同的供应商id连接起来了。如下表所示:
在vendors表中,vend_id称为主键,products表中的vend_id为外键。
为什么要用联结表呢,将数据分解为多个表能够更有效的存储,更方便的处理,并且具有更大的可伸缩性。但是这些好处是有代价的。如果数据存储在多个表中,怎么样用单条SELECT语句检索出数据?答案是使用联结。简单的说联结是一种机制,用来在一条SELECT语句中关联表,因此称之为联结。
下面的示例最主要的地方就是 vendors.vend_id = products.vend_id, 在比较时是 从 vendors表中逐一拿出每一行,这个每一行与products表中的所有行进行比较,筛选出products表中的满足条件的每一行。
此外联结表还可以用 INNER JOIN .. ON来表示,语句的作用与上面的示例是一样的:
联结多个表, 可以如下理解下例,WHERE的三个条件,第一个条件,产品表中的每一个产品都会有一个vend_id,所有这个条件不会过滤掉一些产品;第二个条件,处于订单上的产品,应该是所有产品的一部分分;第三个条件,订单编号为20005的产品;
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn