创建新表时,可以通过添加引擎
表选项的创建表
声明:
——ENGINE=INNODB不需要,除非你设置了一个不同的——default存储引擎。CREATE TABLE t1 (i INT) = INNODB;简单的表定义可以从一个切换到另一个。CREATE TABLE t2 (i INT) = CSV;CREATE TABLE 3 (i INT)
当您省略引擎
选项,则使用默认存储引擎。默认引擎为InnoDB
在MySQL 5.7。方法可以指定默认引擎——default-storage-engine
服务器启动选项,或通过设置default-storage-engine
选项。my.cnf
配置文件。
设置当前会话的默认存储引擎default_storage_engine
变量:
设置default_storage_engine = NDBCLUSTER;
存储引擎临时
创建的表创建临时表
可以通过设置default_tmp_storage_engine
,在启动或运行时。
要将表从一个存储引擎转换到另一个存储引擎,请使用ALTER TABLE
语句,指示新引擎:
ALTER TABLE t ENGINE = InnoDB
看到第13.1.18节," CREATE TABLE语句",第13.1.8节,“ALTER TABLE语句”.
如果您试图使用一个没有编译的存储引擎,或者一个已经编译但未激活的存储引擎,MySQL会使用默认的存储引擎创建一个表。例如,在复制设置中,源服务器可能使用InnoDB
表的最大安全性,但副本服务器使用其他存储引擎的速度,以牺牲持久性或并发性。
默认情况下,无论何时都生成警告创建表
或ALTER TABLE
不能使用默认存储引擎。如果所需的引擎不可用,要防止混淆和意外行为,请启用NO_ENGINE_SUBSTITUTION
SQL模式。如果所需的引擎不可用,此设置将产生错误而不是警告,并且不会创建或更改表。看到第5.1.10节,“Server SQL模式”.
对于新表,MySQL总是创建一个.frm
文件来保存表和列定义。表的索引和数据可以存储在一个或多个其他文件中,具体取决于存储引擎。服务器创建.frm
存储引擎级别以上的文件。各个存储引擎为它们所管理的表创建所需的任何附加文件。如果表名包含特殊字符,则表文件的名称包含这些字符的编码版本,如第9.2.4节“标识符到文件名的映射”.