1):插件式存储引擎是MySql数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据、是否使用事务等。
MySql5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CVS、BLACKHOLE、FEDERATED等,其中只有InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
创建新表时如果不指定存储引擎,系统将使用默认的存储引擎,MySql5.5之前默认的存储引擎是MyISAM,5.5之后改为了InnoDB。如果要修改默认的存储引擎,可以在参数文件中设置default-table-type。
可以通过如下命令查看当前数据库支持的存储引擎:
SHOW ENGINES \G
在创建新表的时候,可以通过ENGINE关键字设置表的存储引擎,如下:
CREATE TABLE country (
country_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
country_name VARCHAR(50) NOT NULL,
PRIMARY KEY (country_id)
)ENGINE=InnoDB DEFAULT CHARSET=gbk;
2)、外键的使用需要满足下列的条件:(这里涉及到了InnoDB的概念)
1. 两张表必须都是InnoDB表,并且它们没有临时表。
注:InnoDB是数据库的引擎。MySQL常见引擎有两种:InnoDB和MyISAM,后者不支持外键。
2. 建立外键关系的对应列必须具有相似的InnoDB内部数据类型。
3. 建立外键关系的对应列必须建立了索引。
4. 假如显式的给出了CONSTRAINT symbol,那symbol在数据库中必须是唯一的。假如没有显式的给出,InnoDB会自动的创建。
面试题:你的数据库用什么存储引擎?区别是?
答案:常见的有MyISAM和InnoDB。
MyISAM:不支持外键约束。不支持事务。对数据大批量导入时,它会边插入数据边建索引,所以为了提高执行效率,应该先禁用索引,在完全导入后再开启索引。
InnoDB:支持外键约束,支持事务。对索引都是单独处理的,无需引用索引。