MySQL存储引擎和外键学习
MYSQL有多種存儲引擎,
在創建表的時候我們使用sql語句,Create table tableName () engine=myisam|innodb;
這就指明了存儲引擎是myisam還是innodb;
SQLServer和Oracle應不存在多個存儲引擎;
MYSQL存儲引擎
InnoDB存儲引擎
Mysql版本>=5.5 默認的存儲引擎,MySQL推薦使用的存儲引擎。支持事務,行級鎖定,外鍵約束。事務安全型存儲引擎。更加注重數據的完整性和安全性。
MyISAM存儲引擎介紹
MySQL<= 5.5 MySQL默認的存儲引擎。
ISAM:Indexed Sequential Access Method(索引順序存取方法)的縮寫,是一種文件系統。
擅長與處理,高速讀與寫。
操作上明顯的區別是,MyISAM不支持創建外鍵;
如下圖,創建一個表,指定存儲引擎為InnoDB;
使用下圖語句查看表的存儲引擎;
再建一個表,使用MyISAM存儲引擎;查看如下,
然后創建test3表,存儲引擎和test1相同;
在test1和test3之間創建外鍵;
然后在test1和test2之間創建外鍵,提示出錯如下;
MySQL里創建外鍵時(Alter table xxx add constraint fk_xxx foreign key),提示錯誤,但只提示很簡單的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150)。
ERROR 1005: Can't create table
主要問題以及解決辦法是:
1,MySQL支持外鍵約束,并提供與其它DB相同的功能,但表類型必須為 InnoDB
2、建外鍵的表的那個列要加上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";總結
以上是生活随笔為你收集整理的MySQL存储引擎和外键学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC++实现Turbo码
- 下一篇: python操作MySQL实例