sql基本语法错误?为什么?

时间:2018-09-02 15:58:17

标签: mysql sql mysql-workbench rdbms

我正在尝试使用MySql Workbench创建一个表。这是sql命令:

CREATE TABLE `bmxData`.`new_table` ();

但是我在执行此命令时遇到此错误:-

  

执行中:

     

创建表bmxDatanew_table();

     

操作失败:将SQL脚本应用于数据库时出错。

     

错误1064:您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第1行的')'附近使用正确的语法

     

SQL语句:

     

创建表bmxDatanew_table()

知道为什么吗?我不知道我在做什么错...

2 个答案:

答案 0 :(得分:3)

您需要添加至少一列:

CREATE TABLE `bmxData`.`new_table`(col INT);

某些RDBMS允许在没有显式用户列的情况下定义表,例如PostgreSQL:

CREATE TABLE tab();

DBFiddle Demo

答案 1 :(得分:0)

关系理论中对零列表的含义进行了一些讨论。也称为零度的关系

关系理论研究员C. J. Date提到TABLE_DUMTABLE_DEE。两者都没有列,但是区别在于TABLE_DUM没有列也没有行,而TABLE_DEE只有一行(即使该行没有列)。

请参见“深度数据库:从业人员的关系理论”摘录:https://flylib.com/books/en/2.214.1.38/1/

因此,以下查询将不返回任何行:

SELECT * FROM TABLE_DUM CROSS JOIN MyTable;

此查询将返回与MyTable相同的行和列:

SELECT * FROM TABLE_DEE CROSS JOIN MyTable;

因此,没有列的表有一些先例和意义。您可以类推地将其视为乘法中0和1的作用:

  • 0 x任何数字均为0
  • 1 x任何数字都是相同的数字

但是,标准SQL不允许。 SQL不能完全忠实地实现关系理论的所有概念。在这种情况下,标准SQL将一个表定义为至少具有一列。 SQL的设计者认为,没有列的表并没有那么有趣,以至于无法证明对SQL语言的支持。

如果PostgreSQL或SQL的某些其他实现决定允许没有列的表,则他们将其作为对标准SQL的扩展。