mysql學習筆記

2021-10-09 23:53:25 字數 2251 閱讀 1107

索引按照演算法主要分為b+樹索引和hash索引,b+樹索引的實現內部是一顆b+樹,hash索引則是

行轉列:

行轉列主要是用groupby將其分組然後用聚合函式進行處理

select user_name ,

max(case course when '數學' then score else 0 end ) 數學,

max(case course when '語文' then score else 0 end ) 語文,

max(case course when '英語' then score else 0 end ) 英語

from test_tb_grade

group by user_name;

列轉行:列轉行主要是利用union來將每次查詢出的列資料集合起來

select user_name, '語文' course , cn_score as score from test_tb_grade2

union select user_name, '數學' course, math_score as score from test_tb_grade2

union select user_name, '英語' course, en_score as score from test_tb_grade2

order by user_name,course;

mysql innodb的事務中的隔離性是由鎖來保證的,永續性則是由redo日誌來保證的

mysql的鎖主要分為lock和latch,其中latch主要是保證併發資源的操作的正確性,lock則是對資料庫物件的鎖定,如鎖表,頁和行,lock僅在事務的commit或者rollback後才會釋放,鎖主要分為is,ix,s,x這四種。is為意向共享鎖,ix為意向排他鎖,s為共享鎖,x為排他鎖。

isixsx

is相容

相容相容

不相容ix

相容相容

不相容不相容s相容

不相容相容

不相容x

不相容不相容

不相容不相容

undo日誌和redo日誌都是innodb儲存引擎的日誌。

undo日誌儲存在資料庫內部的乙個undo segment中,其儲存的頁也是通過b+樹來進行管理的,undo日誌是邏輯日誌,儲存的是對一條記錄進行回滾操作的資料,這個日誌還可以對資料庫隔離級別進行實現。

redo日誌主要是用來保證資料的永續性,它儲存的是物理的日誌,表示的是對資料檔案的頁的物理的修改,它是順序的寫入日誌。資料庫重啟後則會根據redo日誌來對commit的事務進行恢復。

特點為:

首先通過輔助索引找對應的主鍵值,然後通過主鍵從聚集索引中找到對應的資料

innodb

myisam

檔案由.frm檔案,undo日誌,redo日誌,表空間檔案(.ibd檔案)

由索引檔案(.myi),資料檔案(.myd),表定義檔案(.frm)構成

索引結構

分為聚集索引和輔助索引,其中聚集索引按照主鍵順序儲存的索引,並且其資料就儲存在這個索引的葉子節點中,其輔助索引儲存的葉子節點儲存的是主鍵

索引和資料是分開儲存的,主鍵索引和非主鍵索引的資料結構沒有太大區別,它們的葉子節點都是指向對應的資料位置

鎖支援行級鎖

表級鎖事務

支援事務

不支援事務

全文索引

不支援全文索引

支援全文索引

對於innodb儲存引擎其對每一條記錄都會由兩個隱藏列,乙個為data_trx_id,表示修改這條記錄的事務id,乙個為data_roll_ptr,指向其對應的回滾段的位置,回滾段中update型別的回滾記錄也會有這兩個字段,從而對一條記錄有多個版本的回滾鏈,從而在不同隔離級別則可以通過讀取不同版本的資料來完成,對於read uncommited則直接讀取最新版本的資料的資料即可,對於read commited則讀最新的是提交了的版本的即可,而對於repeatable read .則讀其第一read的版本即可。

binlog記錄的是資料庫執行更改的所有操作,主要用作主從複製的操作。

mysql學習筆記 51 mysql學習筆記

初學mysql時整理,隨時更新 資料操作 增 insert into 表名 字段列表 values 值列表 值列表 如果要插入的值列表包含所有字段並且順序一致,則可以省略字段列表。可同時插入多條資料記錄!replace 與 insert 完全一樣,可互換。insert into 表名 set 欄位名...

mysql學習筆記 51 Mysql 學習筆記

一.首先進入mysql mysql u root p新增使用者許可權設定 grant all privileges on to jerry localhost identified by aa1234567 只允許本機訪問 grant all privileges on to jerry 10.80...

mysql做筆記 mysql學習筆記

alter table 新增,修改,刪除表的列,約束等表的定義。檢視列 desc 表名 修改表名 alter table t book rename to bbb 新增列 alter table 表名 add column 列名 varchar 30 刪除列 alter table 表名 drop ...