表的合併,在sql裡又叫做表的連線。
多表查詢:
指的是將兩個以上的資料表通過關鍵字段連線在一起,從不同表中取不同字段進行查詢的方法。
關鍵字段:
1、相連的兩表中都有能匹配上的關鍵字段;
2、表中的關鍵字段最好是主鍵,即:不重複,不為空值;
3、如果不是主鍵就需要用到聯合主鍵,即兩表中兩個字段聯合起來作關鍵字段。
一、內連線查詢
內連線:inner join 簡寫 join,按照內連線合併兩個表,返回兩個表中主鍵相同的行。
通用**:
select from a inner join b ona.key = b.key;
將上面的表1和表2進行內連線
#內連線
select 資訊表.*,成績表.*
from 資訊表
inner join 成績表
on 資訊表.`學號`=資訊表.`學號`;
一對一連線:只要找到關鍵字段(學號)相同的資料,橫向連線起來就可以;
多對多連線:連線關鍵字段(學號)相同的資料的,但是由於相同學號的資料多於1個,所以最終結果是表相同字段分別和右表的資料相連線。
二、左連線
左連線: 結果中包括左表的所有行,及關鍵字段與左表相同的右表的行。
通用**:
select from a left join b ona.key = b.key;
將資訊表和成績表進行左連線
#左連線
select 資訊表.*,成績表.*
from 資訊表
left join 成績表
on 資訊表.`學號`=資訊表.`學號`;
一對一連線
多對多連線
左連線:學號與左表一致,而不包含右表學號為f的學員
三、右連線
右連線: 結果中除了包括與右表關鍵字段的左表行,還包括右表的所有行
通用**:
select from a right join b ona.key = b.key;
將資訊表和成績表進行右連線
#右連線
select 資訊表.*,成績表.*
from 資訊表
right join 成績表
on 資訊表.`學號`=資訊表.`學號`;
一對一連線
多對多連線
四、縱向連線
兩個表縱向連線的條件:兩個表必須列數相同;
去重縱向連線
union: 用於合併兩個或多個 select 語句的結果集,並消去表中任何重複行。
通用**: 用union合併t1與t2表
select t1.* from t1
union
select t2.* from t2;
將兩個資訊表去重縱向連線
select *from 資訊表1
union
select *from 資訊表2;
不去重縱向連線
union all:用於合併兩個或多個 select 語句的結果集,保留重複行。
通用**:用union all合併t1與t2表
select t1.* from t1
union all
select t2.* from t2;
將兩個資訊表不去重縱向連線
select *from 資訊表1
union all
select *from 資訊表2;
一看就懂的SwitchHosts
switchhosts 是乙個管理 切換多個 hosts 方案的工具。它是乙個免費開源軟體。日常開發工作中,我們可能經常需要切換各種 hosts 繫結,比如在本地開發時可能需要乙個開發環境的 hosts 繫結方案,發布到測試環境後又有乙個測試環境的 hosts 繫結方案,然後可能還有乙個預發布環境,...
一看就懂TCP 連線
我們先來看乙個定義。這樣理解比較抽象。我們換個角度。它的本質還是傳輸控制。如果讓我們自己設計這個傳輸,我們會怎麼想呢。tcp 協議它會先建立連線。三次握手目的是保證雙方都有傳送和接收的能力 首要原因是為了防止舊的重複連線初始化造成混亂。同步雙方初始序列號客戶端和服務端都處於 closed 狀態。先是...
資訊熵 一看就懂
先給出資訊熵的公式 首先了解一下資訊量 資訊量是對資訊的度量,就跟時間的度量是秒一樣,當我們考慮乙個離散的隨機變數 x 的時候,當我們觀察到的這個變數的乙個具體值的時候,我們接收到了多少資訊呢?多少資訊用資訊量來衡量,我們接受到的資訊量跟具體發生的事件有關。資訊的大小跟隨機事件的概率有關。越小概率的...