深入理解SQL多表聯結的原理

2021-08-22 11:49:01 字數 2307 閱讀 9033

聯結多個表

直接上去擼

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.按條件查詢需要的資訊字段

聯結就是通過等值篩選實現的表與表的資訊整合!!

最後的最後:生活不是高考需要語數外理化生樣樣精通才能成功,而是把一件事做精就夠夠的了!!一招鮮足夠吃遍天!

深入理解simhash原理

lsh locality sensitive hashing 是區域性敏感性hashing,它與傳統的hash是不同的。傳統hash的目的是希望得到o 1 的查詢效能,將原始資料對映到相應的桶內。lsh的基本思想是將空間中原始資料相鄰的2個資料點通過對映或者投影變換後,這兩個資料點在新的空間中的相鄰...

HDFS原理深入理解

1 hdfs概述 1 資料量越來越多,在乙個作業系統管轄的範圍存不下了,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,因此迫切需要一種系統來管理多台機器上的檔案,這就是分布式檔案管理系統 2 是一種允許檔案通過網路在多台主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。...

深入理解hashmap的原理

一 什麼是雜湊?雜湊也叫雜湊,是將不同長度的輸入通過乙個函式轉換成同乙個長度輸出的過程,這個輸出的值叫雜湊值,這個轉換函式叫雜湊函式,雜湊函式所採用的演算法加雜湊演算法。實際上是乙個通過訊息得到訊息摘要的方法 二 什麼是雜湊表?雜湊表是乙個通過key訪問value的資料結構,它是基於乙個陣列,存資料...