sql语法错误,命令非常基本?为什么?

jxct1oxe  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(288)

我正在尝试使用mysql工作台创建一个表。下面是sql命令:

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

然而,我在执行以下操作时遇到了一个错误:-
正在执行:
创建表 bmxData . new_table ();
操作失败:将sql脚本应用于数据库时出错。
错误1064:您的sql语法有错误;检查与mysql服务器版本相对应的手册,以获得在第1行的“)”附近使用的正确语法
sql语句:
创建表 bmxData . new_table ()
知道为什么吗?我不知道我做错了什么。。。

gudnpqoy

gudnpqoy1#

您至少需要添加一列:

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

一些rdbms允许在没有显式用户列的情况下定义表,如postgresql:

CREATE TABLE tab();

dbfiddle演示

9nvpjoqh

9nvpjoqh2#

关于零列表的意义,在关系论中有一些讨论。也称为零度关系。
关系理论研究者c。j。日期指 TABLE_DUM 以及 TABLE_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的扩展来做的。

相关问题