天天看點

MySql資料類型SQL建表資料庫引擎比較删除連表查詢事務索引

資料類型

int、decimal、varchar、tinytext、text、datetime、timestamp、null(不要機進行運算)

SQL建表

CREATE TABLE `employee` (
`id` INT ( 4 ) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` VARCHAR ( 20 ) NOT NULL COMMENT '名字',
PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8
           

ENGINE = INNODB DEFAULT CHARSET = utf8

資料庫引擎,字元集

COMMENT '注釋'

注釋字段

資料庫引擎比較

MyISAM不能再崩潰後安全恢複

MyISAM InnoDB
不支援事務 支援事務
不支援外鍵 支援外鍵
最小鎖粒度表鎖 最小鎖粒度行鎖
使用非聚簇索引 使用聚簇索引
支援全文索引 不支援全文索引

删除

delete from

自增不會歸零

truncate table

自增歸零

連表查詢

left join on:傳回包括左表中的所有記錄和右表中聯結字段相等的記錄

right join on:傳回包括右表中的所有記錄和左表中聯結字段相等的記錄

inner join on:隻傳回兩個表中聯結字段相等的行

事務

1、通路并可能操作各種資料項的一個資料庫操作序列,這些操作要麼全部執行,要麼全部不執行,是一個不可分割的工作機關。

2、ACID:

  • 原子性:不可分割,要麼都成功,要麼都失敗
  • 一緻性:資料前後的總量不變(事務的執行結果必須使資料庫從一個一緻性狀态到另一個一緻性狀态)
  • 持久性:事務送出之後對資料庫的更新是持久的,任何事務或系統故障都不會導緻資料丢失
  • 隔離性:事務之間互相隔離
    • 造成問題:
    • 髒讀:一個事務讀取了另一個事務未送出的資料
    • 丢失修改:一個事務對資料進行修改,另一個事務也對相同資料進行修改,導緻第一次的修改被覆寫
    • 不可重複讀:一個事務對同一資料的讀取結果前後不一緻,讀取已送出資料
    • 幻讀:事務範圍查詢資料時,因為其它事務導緻讀取結果前後不一緻,其它事務執行插入資料,且已送出(在一個事務内讀取到其它事務執行的插入操作的資料,導緻前後不一緻)

3、事物的隔離級别:

  • READ-UNCOMMITTED讀未送出:解決丢失修改
  • READ-COMMITTED讀已送出:解決丢失修改、髒讀
  • REPEATABLE-READ可重複讀:解決丢失修改、髒讀、不可重複讀
  • SERIALIZABLE串行化:解決丢失修改、髒讀、不可重複讀、幻讀

MySQL InnoDB 存儲引擎的預設支援的隔離級别是 REPEATABLE-READ(可重複讀)。雖然是REPEATABLE-READ,但是使用Next-key Lock鎖隔離的級别達到了SERIALIZABLE

索引

幫助MySql高效擷取資料的資料結構

主鍵索引(PRIMAY KEY)

唯一索引(UNIQUE)

正常索引(INDEX)

全文索引(FULLTEXT)

hash

btree:b+tree

不适用索引的時候我們查找資料必須要周遊,加入了索引比如二叉樹我們可以減少查找的次數

MySql資料類型SQL建表資料庫引擎比較删除連表查詢事務索引

InnoDB使用b+tree,葉子節點存儲的是索引和具體資料

MySql資料類型SQL建表資料庫引擎比較删除連表查詢事務索引

一頁16kb

最好使用整形自增主鍵作為索引,如果不是自增的而是亂序,則會容易造成b+tree的分裂,數的高度增長;如果沒有設定主鍵,InnoDB也會查找沒有重複值的列作為主鍵索引,找不到沒有重複值的列則會建立一個隐藏列row_id作為主鍵索引

b+tree的葉子節點是按照順序存儲的且有雙向指針,是以範圍查詢效率較高

使用聯合索引時對輔助索引排序,不會存儲具體資料,再回表,使用主鍵索引查詢資料

繼續閱讀