0mysql的表連線 mysql 表連線join

2021-10-25 17:16:42 字數 1008 閱讀 2271

連線表的本質就是把個個表的資料都取出來 依次匹配組合 並返回給使用者

以一條連線查詢語句為例:

t1表m1n1a

bct2表m2n2b

cdselect * from t1, t2 where t1.m1 > 1 and t1.m1 = t2.m2 and t2.n2 < 'd';

1. 確認乙個驅動表 從驅動表中查出符合條件的記錄 以t1為驅動表 查出來的記錄時 m1>1的記錄 也就是m1值為2 和3 的記錄

2. 從第一步取得的結果集 到t2表中匹配記錄 因為第一步查出兩條記錄 所以會進行兩次匹配t2

t1.m1 = t2.m2 and t2.n2

轉化為t2.m2 = 2 and t2.n2

t2.m2 = 3 and t2.n2

得出乙個結論是 兩表聯查的時候 會查詢依次驅動表 查詢多次被驅動表 所以盡量驅動表要小

內連線/外連線

內連線:驅動表中的記錄在被驅動表中匹配不到記錄 就不會放到結果集中

外連線:驅動表中的記錄在被驅動表中匹配不到記錄 會放到結果集中

left join  左外連線 以左邊的表為驅動表

right join 右外連線 以右邊的表為驅動表

where

不管是內連線和外連線 不符合where條件的都不會放入結果集

on  在外連線中驅動表中的記錄在被驅動表中匹配不到記錄 會放到結果集中以null填充

在內連線中 on和where等價

以驅動表的結果記錄去被驅動表 依次匹配的過程叫做巢狀迴圈連線(nested-loop join)

基於塊的巢狀迴圈連線(block nested-loop join)為了減少被驅動表資料的載入次數,建立了乙個固定大小的記憶體區域,叫join buffer,裡面儲存著部分 驅動表的記錄,依次與被驅動表匹配,減少從磁碟載入被驅動表記錄的次數

預設join buffer size為256kb ,注意join buffer中只儲存著 查詢列表中的列和過濾條件中的列 所以為了能夠儲存更多的驅動表資料 不要用*來查詢

MYSQL筆記0 MYSQL的安裝

mysql是一種關係型資料庫管理系統。以mysql5.7版本為例,安裝過程如下 這裡我們選擇zip格式安裝,對應的32位還是64位根據自己的電腦情況決定 直通車 前邊基本就是next 這裡選擇自定義安裝,只需安裝以上幾個基本就夠用了,而且能夠滿足python爬蟲需求 接下來需要設定root密碼和使用...

mysql設定約束大於0 MySQL約束

mysql中約束儲存在information schema資料庫的table constraints中,可以通過該錶查詢約束資訊 常用5種約束 not null 非空約束,指定某列不為空 unique 唯一約束,指定某列和幾列組合的資料不能重複 primary key 主鍵約束,指定某列的資料不能重...

mysql 字段 大於0 mysql 字段型別

個很小的整數。有符號的範圍是 128到127,無符號的範圍是0到255。smallint m unsigned zerofill 乙個小整數。有符號的範圍是 32768到32767,無符號的範圍是0到65535。mediumint m unsigned zerofill 乙個中等大小整數。有符號的範...