2015-04-23 196 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