索引按照演算法主要分為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 ...