mysql主要有四類儲存引擎,目前主要使用InnoDB作為儲存引擎。
show variables like 'default_storage_engine';
show engine;//語句1
show variables like 'have_%';//語句2
select engine from information_schema.engines where transactions='yes';
create table 表名 (欄位名 欄位型別) engine=儲存引擎;//語句1
create table 表名 (欄位名 欄位型別) type=儲存引擎;//語句2
frame
,可以理解成對整體框架的儲存.frm檔案
存放的是書架本身,.MYD檔案
儲存具體的書籍,.MYI檔案
儲存檢索書籍的索引目錄。.MYI檔案
和.MYD檔案
可以儲存在不同的檔案目錄中,從而分散IO讀寫壓力,提高存取速度,具體操作可在建立表的時候,通過DATA DIRECTORY
和INDEX DIRECTORY
屬性進行設定。SELECT
和INSERT
CHECK TABLE
和REPAIR TABLE
命令進行表的檢查和修改。三者的特點如下所示:
自動增長列
指的是InnoDB支援使用者手動插入的條目遵循索引項的自動增長,而不需要使用者自己設定。
然而,在InnoDB中,自動增長列必須是索引項,如果是組合索引,則是其中的第一列;而對於MyISAM,則可以是任意資料項。
建立一個表之後,其自動增長列的起始值預設是1,也可以在建立表的時候進行修改:
CREATE TABLE t1 (
id INT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=某個起始數位;
在插入條目的時候,也可以通過ALTER TABLE
命令進行修改:
ALTER TABLE 具體條目 AUTO_INCREMENT=某個起始數位;
外來鍵約束
restrict
:父表的刪除和更新不會對子表產生影響cascade
:級聯操作,父表的刪除和更新操作會影響子表,set null
:父表的刪除和更新將會使得子表中相關條目設定為null
值no action
:效果等同於restrict
,父表的刪除和更新操作不會對子表產生影響。set forgein_key_checks=0或者1
的值,可以開啟(值為1)或者關閉(值為0)外來鍵約束。優缺點
DROP FROM MEMORY 表名;
TRUNCATE table 表名;
=
,<=>
,效能較好>
,<
,BETWEEN
,IN
,LIKE
,效能較差order by
,效能較差.frm
檔案,用於儲存表結構定義。max_heap_table_size
引數用於設定最大行數。TEXT
、BLOB
等可變長度資料型別並不支援,但是對於VARCHAR
資料型別,在實際的資料庫操作中依然看作固定長度,因此可支援VARCHAR
資料型別。對上述四種儲存引擎進行比較,得出如下表格: