使用VERY基本命令的SQL语法错误?为什么?

问题描述 投票:1回答:2

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

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

但执行此操作时出现此错误: -

执行:

CREATE TABLE bmxData.new_table();

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

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

SQL语句:

CREATE TABLE bmxData.new_table()

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

mysql sql mysql-workbench rdbms
2个回答
3
投票

您需要添加至少一列:

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

一些RDBMS允许定义没有像PostgreSQL这样的显式用户列的表:

CREATE TABLE tab();

DBFiddle Demo


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的扩展。

© www.soinside.com 2019 - 2024. All rights reserved.