![](/img/trans.png)
[英]Create a TABLE in MySQL query in JSON format with JavaScript
[英]mysql query about create table ddl format
我是一个mysql新手。 我有一个关于为create table ddl做正确的事情的问题。 到目前为止,我刚刚写了这样的create table ddl ...
CREATE TABLE file (
file_id mediumint(10) unsigned NOT NULL AUTO_INCREMENT,
filename varchar(100) NOT NULL,
file_notes varchar(100) DEFAULT NULL,
file_size mediumint(10) DEFAULT NULL,
file_type varchar(40) DEFAULT NULL,
file longblob DEFAULT NULL,
CONSTRAINT pk_file PRIMARY KEY (file_id)
);
但我经常看到人们正在做他们的创建表ddl这样...
CREATE TABLE IF NOT EXISTS `etags` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`item_code` varchar(100) NOT NULL,
`item_description` varchar(500) NOT NULL,
`btn_type` enum('primary','important','success','default','warning') NOT NULL DEFAULT 'default',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
几个问题...
表名和列名的引号有什么区别?
显式声明引擎和字符集是一种好习惯吗? 默认使用哪些引擎和字符集?
谢谢
没有区别。 标识符(表名,列名等)必须包含在反引号中,如果它们包含特殊字符或保留字。 否则,反引号是可选的。
是的,这是一种很好的做法,可以移植到其他系统。 如果重新创建表,则在CREATE TABLE语句中显式指定存储引擎和字符集意味着您的语句将不依赖于default_character_set
和default-storage-engine
变量的设置(这些变量可能会更改,或者在另一个数据库上设置不同。)
您可以使用SHOW CREATE TABLE
语句以相同的格式获取表DDL定义,例如
SHOW CREATE TABLE `file`
您看到的其他用户发布的CREATE TABLE
DDL语法通常采用生成此语句输出的格式。 请注意,MySQL不会检查标识符是否包含特殊字符或保留字(以查看是否需要反引号),它只是继续并将所有标识符包装在反引号中。
使用反引号,可以在名称中使用保留字和一些特殊字符。
这只是一种安全措施,许多工具会自动添加这些措施。
可以在服务器配置中设置默认引擎和字符集。
它们通常(但不总是)设置为MyISAM
和latin1
。
就个人而言,我认为定义引擎和字符集是一种很好的做法,这样您就可以确定最终的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.