使用名称空间在MySQL中创建表

使用名称空间在MySQL中创建表,mysql,sql,Mysql,Sql,在使用MySQL数据库创建带有名称空间的表时,抛出以下错误 错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“[school name]VARCHAR(20))”附近使用的正确语法 下面是我创建代码的简单表格: create table table_dump(name varchar(20), address varchar(20), [school name] varchar(20)); or create table table_du

在使用MySQL数据库创建带有名称空间的表时,抛出以下错误

错误1064(42000):您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“[school name]VARCHAR(20))”附近使用的正确语法

下面是我创建代码的简单表格:

create table table_dump(name varchar(20), address varchar(20), [school name] varchar(20));

 or

create table table_dump(name varchar(20), address varchar(20), "school name" varchar(20));

您必须在名称周围使用反勾号

create table table_dump(name varchar(20), address varchar(20), `school name` varchar(20));
MySQL关键字的使用也是如此,例如,许多人可能希望在表
date
datetime
中命名列,如果您尝试在不使用反勾号的情况下命名,则会遇到类似的问题。正是出于这个原因,许多人和所有生成DDL的关系设计工具都会在所有表名和列名周围添加反勾号


所有这些都说明了,不要在你的名字中使用空格。这是一个糟糕的标准,很难阅读和维护。作为非官方标准,请在表中的单词和列名之间使用下划线。

不要这样做!改用下划线。@Gordon Linoff,不可能用空格创建列名吗?这能回答您的问题吗?是的,您在名称周围使用反勾号。话虽如此,开发人员和任何维护您代码的人都会因为您这样做而憎恨您。这是可能的,但显然是不好的做法是的,它工作得很好。但是使用反勾号是一种好的做法吗?使用反勾号是一种好的做法吗如果在列名或保留字中使用空格,您没有选择余地。许多人在所有情况下都使用空格,所以我认为这可能是最佳做法。如果执行
showcreatetable{tablename}
,您将看到mysql生成它们,而不管原始DDL是什么。话虽如此,在大多数情况下,您只需运行一次DDL,因此,如果您知道规则并且DDL有效,那么这才是真正重要的。