深入理解SQL多表联结的原理



联结多个表

直接上去撸
SELECT prod_name,vend_name,prod_price,quantity
FROM OrderItems,Products,Vendors
WHERE Products.vend_id = Vendors.vend_id
AND OrderItems.prod_id = Products.prod_id
AND order_num = 2007

1 SELECT表示查询四个信息:商品名称 供应商的名称 商品价格 商品数量

2 FROM表示这四个信息从三个表中获取:商品表,供应商表和订单详情表

3 分析三个表:
  
  商品表中的每一条记录代表一个商品包含了一个商品的基本信息:商品编号,商品名称,商品价格,供应商编号

  供应商标每一条记录代表一个供应商,包含了一个供应商的基本信息:供应商编号,供应商名称

  订单详情表每一记录代表:
  一个订单的对其中一种商品的详情:订单详情编号(实际不用),订单编号(实际要用),商品编号,顾客编号,该商品购买数量
  
  三张表中处于主要地位的是订单表

  两张表的联结中处于主要地位的又是谁呢?

  当我们看到订单表时,一条一条的看,发现每条只有商品编号(不表达实际的信息)
 
  我们想知道买的究竟是什么商品,就得拿着这个编号去查阅商品表,
 
  在商品表里,根据编号查阅到对应的信息

  以此类推直到最后一行
  
  注意:订单中的商品记录集合一定是包含在商品表记录集合的(因为能买就说明有,否则就是一个实践逻辑错误)

  这说明,在订单表和产品表的联结中,存在一种包含在的关系

  笔记让人可以专注一些,记笔记看似笨拙,但对于一个笨蛋来说,确实是最好的办法!
  
  那么,在查阅商品表的时候,又发现了供应商编号(同样不能表达实际意义的信息),我想知道是谁生产了这种商品

  于是,要拿着商品编号去查询供应商表,
 
  在供应商表中,查到生产该产品的供应商名字还有其他信息

  注意,在这里,产品表中的记录集合一定是包含在生产表中的(因为能上架的产品一定有人生产出来的,不是天上掉下来的,否则就是实践逻辑错误)
 
  不难发现,这种按编号等值连接表做的其实就是一个翻译和介绍的事情而已

  这里一定要关注,表间的包含在关系

  订单表包含在产品表,产品表包含在生产商表

4 能够等值连接上的那些记录是有实际意义的
  所以联结就是信息的整合而已
  整合后的信息的才是最有价值的

5 对于人类而言,三张表放在一起简单地用眼睛看看就能实现信息的整合了
  但计算机不行,计算机做不到

6 所以当不理解电脑的做法时,想想人类是怎么做的,把这两种方式放在一起比较一下,会更清楚:
  计算机的做法无非是用自己方式实现人类的做法

7 计算机的做法是什么呢? 简而言之,遍历!!
  这是计算机轻松做到,而我们人类永远不能企及的事情!
  先是对这三个表求笛卡尔积(先是订单详情表和产品表求,此结果然后再和生产商表求)
  然后,按给定的三个条件逐个删选!!!
  在这里FROM做了笛卡尔
  WHERE做了筛选

8 WHERE的筛选条件有三个
  先看前两个:
  Products.vend_id = Vendors.vend_id和OrderItems.prod_id = Products.prod_id

  
  Products.vend_id = Vendors.vend_id
  首先,这里肯定是有先后顺序的,不赘述了
  其次,该句的作用对应于对Products表中的vend_id进行了翻译和介绍的那种的人类认知
  OrderItems.prod_id = Products.prod_id
  该筛选的作用同样是对OrderItems表中的prod_id进行了翻译和介绍的那种人类认知

  要知道笛卡尔积很多是没有意义的
  联结的意义在于筛选而筛选的意义在于筛选出有意义的数据!!

  实际上,到这里才真正的将三张表的信息整合了起来!!

  不过整合的结果很琐碎,每一条记录是三张表每条记录的联结  

  在整合之后我们要做两件事情:

  ①再筛选!!(这才是真正的筛选的开始)
    这里对应order_num="20007"

  ②选择我们想知道的信息字段进行查询(每个字段表示某一方面的信息)方有多面,方中的一面就叫一方面!


最后整合其中的逻辑:
  1.先求笛卡尔积

  2.把表进行整合(对应等值筛选)

  3.按条件查询需要的信息字段

联结就是通过等值筛选实现的表与表的信息整合!!

最后的最后:生活不是高考需要语数外理化生样样精通才能成功,而是把一件事做精就够够的了!!一招鲜足够吃遍天!
 
   
    
  


  


 

猜你喜欢

转载自blog.csdn.net/weixin_42204641/article/details/81509127