親自實驗讓你徹底理解表連線

2021-09-07 14:56:15 字數 1268 閱讀 6354

1.表連線的根本條件是共同字段,也叫關聯欄位也叫冗餘字段,有關聯字段(冗餘字段)才能將兩張表的記錄匹配起來嘛。

其中關聯字段,也即形成了表之間的關係,即1對1,還是1對多,還是多對多。

這些表之間的關係,就是通過關聯字段形成的1對1,還是1對多,還是多對多關係。

也正因為表通過關聯字段,聯絡起來了。關聯字段所在的幾張表又形成了幾對幾的關係。也就造成了關聯結果表,即關聯後產生的表。會存在記錄(行冗餘問題)。

即,想一想,為什麼將一對多拆成兩張表?因為怕冗餘記錄太多嘛。

張三,18,深圳南山區1路1號

張三,18,深圳福田區x路x號

發現張三,18這個字段無故出現了多次,白費。所以為了考慮資料庫容量,直接將uid addres欄位拆出來。這就是見表第二正規化。

結關係:表關聯->關聯欄位->防止記錄和字段冗餘

表關係,

1對多,是為了防止記錄的某些不相關字段冗餘,所以字段出現1對多關係必須要建立兩張表。

1對1,是因為兩個不相關的領域,雖然放在一張表裡也可以,也不會出現記錄無關係字段額外冗餘,但這樣會形成一張寬表。涉及insert,更改記錄操作時,會很麻煩。所以1對1也要建立兩張表。

多對多,

表關聯剛好對原來的表之間關係拆分進行了你想處理,所以表關聯的結果必然是

2.表連線冗餘字段問題:

表連線就是將兩個錶連起來,字段預設都會有。除非你select 指定你想要的字段。

查詢語句:select * from t_test t1 left join t_test2 t2 on t1.uid = t2.uid;

因為select *,所以預設倆表的全部欄位會顯示出來。如下:

此時就會發現,進行表關聯的字段(此處是uid),就會有兩個。因為兩張錶能有聯絡,全是靠共同欄位嘛,select  * 肯定會有兩列相同的字段出來,所以這時候,你就需要手動指定顯示哪個表的共同字段,否則迷惑性太強,倆字段顯示出來。太難看了。

改正後的sql:select t1.*,t2.id,t2.address from t_test t1 left join t_test2 t2 on t1.uid = t2.uid;

顯示某張表的全部字段:t1.*即可。

查詢結果如下:,你看,就沒有多餘的公共欄位了吧,因為你select 指定了顯示哪些字段。

讓你徹底理解STP的各種角色選舉

首家正式發貨了 本書兩章完整的內容 網路中所有的橋裝置在使能stp協議後,每乙個橋裝置都認為自己是根橋。此時每台裝置僅僅收發配置bpdu,而不 使用者流量,所有的埠都處於listening狀態。所有橋裝置通過交換配置bpdu後才進行根橋 根埠和指定埠的選舉工作。1.根橋的選舉 根橋的選舉 就是在交換...

讓你徹底理解STP的各種角色選舉

首家正式發貨了 本書兩章完整的內容 網路中所有的橋裝置在使能stp協議後,每乙個橋裝置都認為自己是根橋。此時每台裝置僅僅收發配置bpdu,而不 使用者流量,所有的埠都處於listening狀態。所有橋裝置通過交換配置bpdu後才進行根橋 根埠和指定埠的選舉工作。1.根橋的選舉 根橋的選舉 就是在交換...

讓你徹底理解STP的各種角色選舉

首家正式發貨了 本書兩章完整的內容 網路中所有的橋裝置在使能stp協議後,每乙個橋裝置都認為自己是根橋。此時每台裝置僅僅收發配置bpdu,而不 使用者流量,所有的埠都處於listening狀態。所有橋裝置通過交換配置bpdu後才進行根橋 根埠和指定埠的選舉工作。1.根橋的選舉 根橋的選舉 就是在交換...