2015-04-23 167 views
-1

我想在数据库中创建一个表,下面是我写的查询;有没有人知道为什么它不起作用?SQL查询不起作用?

1064 - 您的SQL语法错误;在第4行检查与您的MySQL服务器版本对应的手册,以找到在's varchar(255),city varchar(255),avg int(20),clg#int(20))'附近使用的正确语法'

CREATE TABLE stud 
(
s# int, 
sname varchar(255), 
city varchar(255), 
avg int(20), 
clg# int(20) 
); 

回答

3

#不是标识符的有效字符。只需将其删除:

CREATE TABLE stud (
    s int, 
    sname varchar(255), 
    city varchar(255), 
    avg int(20), 
    clg int(20) 
); 

您可以查看标识符here的规则。请注意,您也可以在反引号把名字:

`s#` int, 

不过,我强烈建议您不要使用需要进行转义名字。

1

你不能在你的表名中包含#,把你的脚本改成这个,然后再试一次。

CREATE TABLE stud (s int, 
sname varchar(255), 
city varchar(255), 
avg int(20), 
clg int(20)); 
+0

这些实际上是列名称,但不管 - 这是答案。 (您不能在表名中使用'#'字符:) –

0

您不能在列名中使用'#'字符。

+0

这是答案:您不能在列名中使用'#'字符。 –

0

不建议使用'#'来命名您的标识符。这对您和您团队中的其他开发人员来说是不明确的。使用此代替

CREATE TABLE stud (
sNo int, 
sname varchar(255), 
city varchar(255), 
avg int(20), 
clgNo int(20) 
); 

通过描述性地为您的标识符命名,每个人都可以更容易理解。但是,mysql 冒名标识符命名规则允许使用ASCII:U + 0001 .. U + 007F 请参阅here
MySQL模式对象命名Rules