連線的概念
連線的本質是多表相連產生的笛卡爾積結果集
驅動表和被驅動表,驅動表只訪問一次,被驅動表訪問多次
內連線,左連線,右連線(inner join,left join, right join)
內連線中的where子句和on子句是等價的
左連線和右連線,必須使用on子句來指出連線條件
左連線是指以左邊的表為準匹配右邊表內容,沒內容則null取代
連線的原理巢狀迴圈連線。(for 巢狀的方式)
使用索引加快連線速度。
基於塊的巢狀迴圈連線。提前劃出一塊記憶體(join buffer)儲存驅動表結果集中的記錄,然後開始掃瞄被驅動表,每一條被驅動表的記錄一次性和這塊記憶體中的多條驅動表記錄匹配,可以顯著減少被驅動表的i/o操作
1.字符集指的是某個字元範圍的編碼規則。
2.比較規則是針對某個字符集中的字元比較大小的一種規則。
3.在mysql中,乙個字符集可以有若干種比較規則,其中有乙個預設的比較規則,乙個比較規則必須對應乙個字符集。
4.檢視mysql中檢視支援的字符集和比較規則的語句如下:
show
(character
set|
charset)[
like 匹配的模式]
;show collation [
like 匹配的模式]
;
5.mysql有四個級別的字符集和比較規則
1.伺服器級別
1.character_set_server表示伺服器級別的字符集,
2.collation_server表示伺服器級別的比較規則。
2.資料庫級別
建立和修改資料庫時可以指定字符集和比較規則:
create
database 資料庫名 [[
default
]character
set 字符集名稱][[
default
]collate 比較規則名稱]
;alter
database 資料庫名
[[default
]character
set 字符集名稱][[
default
]collate 比較規則名稱]
;
character_set_database表示當前資料庫的字符集,collation_database表示當前預設資料庫的比較規則,這兩個系統變數是唯讀的,不能修改。如果沒有指定當前預設資料庫,則變數與相應的伺服器級系統變數具有相同的值。
3.表級別
建立和修改表的時候指定表的字符集和比較規則:
create
table 表名 (列的資訊)[[
default
]character
set 字符集名稱]
[collate 比較規則名稱]];
alter
table 表名
[[default
]character
set 字符集名稱]
[collate 比較規則名稱]
;
4.列級別
建立和修改列定義的時候可以指定該列的字符集和比較規則:
create
table 表名(
列名 字串型別 [
character
set 字符集名稱]
[collate 比較規則名稱]
, 其他列...
);alter
table 表名 modify 列名 字串型別 [
character
set 字符集名稱]
[collate 比較規則名稱]
;
6.從傳送請求到接收結果過程中發生的字符集轉換:
6.1 客戶端使用作業系統的字符集編碼請求字串,向伺服器傳送的是經過編碼的乙個位元組串。
6.2 伺服器將客戶端傳送來的位元組串採用character_set_client代表的字符集進行解碼,將解碼後的字串再按照character_set_connection代表的字符集進行編碼。
6.3 如果character_set_connection代表的字符集和具體操作的列使用的字符集一致,則直接進行相應操作,否則的話需要將請求中的字串從character_set_connection代表的字符集轉換為具體操作的列使用的字符集之後再進行操作。
6.4 將從某個列獲取到的位元組串從該列使用的字符集轉換為character_set_results代表的字符集後傳送到客戶端。
6.5 客戶端使用作業系統的字符集解析收到的結果集位元組串。
在這個過程中各個系統變數的含義如下:
系統變數 描述
character_set_client 伺服器解碼請求時使用的字符集
character_set_connection 伺服器處理請求時會把請求字串從character_set_client轉為character_set_connection
character_set_results 伺服器向客戶端返回資料時使用的字符集
一般情況下要使用保持這三個變數的值和客戶端使用的字符集相同。
7.比較規則的作用通常體現比較字串大小的表示式以及對某個字串列進行排序中。
1、const 通過主鍵或者唯一二級索引列 等值查詢 (火箭)
2、ref ①普通二級索引等值查詢,然後回表;②聯合索引,最左邊的連續索引列是與常數的等值比較(高鐵)
3、ref_or_null ,ref 基礎上查詢null 值
4、range 任意索引 in(),或者範圍查詢
5、index,遍歷二級索引全部記錄
6、all,全表掃瞄
MySQL知識點 總結
1 truncate和delete trop之間有什麼區別?truncate table 在功能上與不帶 where 子句的 delete 語句相同 二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。delete 語句每次刪除一行,並在...
mysql知識點總結
一 mysql基礎 1 mysql儲存結構 資料庫 表 資料 sql語句 2 管理資料庫 增加 create database 資料庫 default character utf8 刪除 drop database 資料庫 修改 alter database 資料庫 default characte...
MySQL知識點總結
然後摁win r鍵開啟執行,輸入cmd開啟命令視窗,輸入mysql uroot p進入mysql中,輸入當時安裝mysql建立的密碼,進入mysql命令列模式。關於庫的使用方法 1.建立庫 輸入 create database 庫名 charset 字符集 例 create database db1...