在mysql 5.x中,如果我做这样的事情会有什么区别:
CREATE TABLE aTable (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
aNumber bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
用这个:
CREATE TABLE aTable (
id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
aNumber bigint(20) DEFAULT NULL
) ENGINE=InnoDB CHARACTER SET=utf8;
注意我没有在第一个字符集中将字符集指定为默认值。我在mysql文档中找不到任何内容。
答案 0 :(得分:26)
单词DEFAULT
在那里是可选的 - 所以这两个是等价的,即它们为表格设置默认字符集。
请参阅CREATE TABLE的MySQL文档。这是相关的一点:
table_option:
ENGINE [=] engine_name
... other options ...
| [DEFAULT] CHARACTER SET [=] charset_name
... more options ...
您可以使用SHOW CREATE TABLE命令确认这一点。
答案 1 :(得分:12)
MySQL中有4个级别的默认设置:服务器,数据库,表和列。使用较低级别的默认值,您可以覆盖更高的默认值。
如果更改默认字符集设置为数据库设置以外的其他字符的表,则表默认值将覆盖数据库默认值。