MySQL存储引擎和外键学习
MYSQL有多種存儲(chǔ)引擎,
在創(chuàng)建表的時(shí)候我們使用sql語(yǔ)句,Create table tableName () engine=myisam|innodb;
這就指明了存儲(chǔ)引擎是myisam還是innodb;
SQLServer和Oracle應(yīng)不存在多個(gè)存儲(chǔ)引擎;
MYSQL存儲(chǔ)引擎
InnoDB存儲(chǔ)引擎
Mysql版本>=5.5 默認(rèn)的存儲(chǔ)引擎,MySQL推薦使用的存儲(chǔ)引擎。支持事務(wù),行級(jí)鎖定,外鍵約束。事務(wù)安全型存儲(chǔ)引擎。更加注重?cái)?shù)據(jù)的完整性和安全性。
MyISAM存儲(chǔ)引擎介紹
MySQL<= 5.5 MySQL默認(rèn)的存儲(chǔ)引擎。
ISAM:Indexed Sequential Access Method(索引順序存取方法)的縮寫(xiě),是一種文件系統(tǒng)。
擅長(zhǎng)與處理,高速讀與寫(xiě)。
操作上明顯的區(qū)別是,MyISAM不支持創(chuàng)建外鍵;
如下圖,創(chuàng)建一個(gè)表,指定存儲(chǔ)引擎為InnoDB;
使用下圖語(yǔ)句查看表的存儲(chǔ)引擎;
再建一個(gè)表,使用MyISAM存儲(chǔ)引擎;查看如下,
然后創(chuàng)建test3表,存儲(chǔ)引擎和test1相同;
在test1和test3之間創(chuàng)建外鍵;
然后在test1和test2之間創(chuàng)建外鍵,提示出錯(cuò)如下;
MySQL里創(chuàng)建外鍵時(shí)(Alter table xxx add constraint fk_xxx foreign key),提示錯(cuò)誤,但只提示很簡(jiǎn)單的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150)。
ERROR 1005: Can't create table
主要問(wèn)題以及解決辦法是:
1,MySQL支持外鍵約束,并提供與其它DB相同的功能,但表類型必須為 InnoDB
2、建外鍵的表的那個(gè)列要加上index
CREATE TABLE IF NOT EXISTS `test3`(`testid` INT UNSIGNED AUTO_INCREMENT,`title` VARCHAR(100) NOT NULL,`author` VARCHAR(40) NOT NULL,`submission_date` DATE,PRIMARY KEY ( `testid` ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;show table status from test where name="test1"; show table status from test where name="test2";總結(jié)
以上是生活随笔為你收集整理的MySQL存储引擎和外键学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VC++实现Turbo码
- 下一篇: linux cmake编译源码,linu