如果我改变了Charset,我可以使用'而不是'来划定字段吗?

时间:2012-05-29 01:13:00

标签: mysql delimiter character-encoding

而不是这个:

  CREATE TABLE IF NOT EXISTS `address` (
   `Contact_ID` smallint(6) NOT NULL DEFAULT '0' COMMENT 'Primary Key',
   `Street Address` char(50) DEFAULT NULL,
   `City` char(20) DEFAULT NULL,
   `Zip Code` char(8) DEFAULT NULL,
   `Country` char(20) DEFAULT NULL,
   PRIMARY KEY (`Contact_ID`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Moradas';

我希望能够做到这一点:

  CREATE TABLE IF NOT EXISTS 'address' (
   'Contact_ID' smallint(6) NOT NULL DEFAULT ´0´ COMMENT ´Primary Key´,
   'Street Address' char(50) DEFAULT NULL, (...)

我在WAMPSERVER上这样做。这是因为为了产生“每次我创建一个表并填充它”,所以必须做'shift + character'是不切实际的。

1 个答案:

答案 0 :(得分:3)

升级到答案

the manual中所述,如果标识符仅包含某些字符,则可以不加引号:

  

不带引号的标识符中允许的字符:

     
      
  • ASCII:[0-9,a-z,A-Z $ _](基本拉丁字母,数字0-9,美元,下划线)

  •   
  • 扩展:U + 0080 .. U + FFFF

  •   

另外,请注意手册继续解释:

  

如果启用了ANSI_QUOTES SQL模式,也允许在双引号内引用标识符:

mysql> CREATE TABLE "test" (col INT);
ERROR 1064: You have an error in your SQL syntax...
mysql> SET sql_mode='ANSI_QUOTES';
mysql> CREATE TABLE "test" (col INT);
Query OK, 0 rows affected (0.00 sec)
     

ANSI_QUOTES模式使服务器将双引号字符串解释为标识符。因此,启用此模式时,字符串文字必须包含在单引号内。它们不能用双引号括起来。服务器SQL模式按照Section 5.1.6, “Server SQL Modes”

中的描述进行控制