sql 非常基本的命令有语法错误?为什么?
sql syntax error with VERY basic command? why?
我正在尝试使用 MySql Workbench 创建一个 table。这是 sql 命令:
CREATE TABLE `bmxData`.`new_table` ();
但我在执行此操作时遇到此错误:-
Executing:
CREATE TABLE bmxData
.new_table
();
Operation failed: There was an error while applying the SQL script to the database.
ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
SQL Statement:
CREATE TABLE bmxData
.new_table
()
知道为什么吗?我不知道我做错了什么...
您至少需要添加一列:
CREATE TABLE `bmxData`.`new_table`(col INT);
一些 RDBMS 允许定义 table 而无需像 PostgreSQL 这样的显式用户列:
CREATE TABLE tab();
关系理论中有一些关于 table 具有零列的含义的讨论。也描述为零度关系。
关系理论研究员C. J. Date指的是TABLE_DUM
和TABLE_DEE
。两者都没有列,但区别在于 TABLE_DUM
没有列也没有行,而 TABLE_DEE
有一行(即使该行没有列)。
请参阅 "Database in Depth: Relational Theory for Practitioners" 中的这段摘录:https://flylib.com/books/en/2.214.1.38/1/
因此,以下查询将 return 没有行:
SELECT * FROM TABLE_DUM CROSS JOIN MyTable;
而此查询将 return 与 MyTable
相同的行和列:
SELECT * FROM TABLE_DEE CROSS JOIN MyTable;
所以 table 没有专栏有一些先例和意义。可以类比为0和1在乘法中的作用:
- 0 x 任意数为 0
- 1 x 任何数字都是相同的数字
但是,标准 SQL 不允许这样做。 SQL 并没有完全忠实地实现关系理论的所有概念。在这种情况下,标准 SQL 将 table 定义为具有至少一列。 SQL 的设计者认为没有列的 table 没有那么有趣,以至于无法证明 SQL 语言的支持。
如果 PostgreSQL 或 SQL 的某些其他实现决定允许 table 没有列,他们将其作为标准 SQL 的扩展。
我正在尝试使用 MySql Workbench 创建一个 table。这是 sql 命令:
CREATE TABLE `bmxData`.`new_table` ();
但我在执行此操作时遇到此错误:-
Executing:
CREATE TABLE
bmxData
.new_table
();Operation failed: There was an error while applying the SQL script to the database.
ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
SQL Statement:
CREATE TABLE
bmxData
.new_table
()
知道为什么吗?我不知道我做错了什么...
您至少需要添加一列:
CREATE TABLE `bmxData`.`new_table`(col INT);
一些 RDBMS 允许定义 table 而无需像 PostgreSQL 这样的显式用户列:
CREATE TABLE tab();
关系理论中有一些关于 table 具有零列的含义的讨论。也描述为零度关系。
关系理论研究员C. J. Date指的是TABLE_DUM
和TABLE_DEE
。两者都没有列,但区别在于 TABLE_DUM
没有列也没有行,而 TABLE_DEE
有一行(即使该行没有列)。
请参阅 "Database in Depth: Relational Theory for Practitioners" 中的这段摘录:https://flylib.com/books/en/2.214.1.38/1/
因此,以下查询将 return 没有行:
SELECT * FROM TABLE_DUM CROSS JOIN MyTable;
而此查询将 return 与 MyTable
相同的行和列:
SELECT * FROM TABLE_DEE CROSS JOIN MyTable;
所以 table 没有专栏有一些先例和意义。可以类比为0和1在乘法中的作用:
- 0 x 任意数为 0
- 1 x 任何数字都是相同的数字
但是,标准 SQL 不允许这样做。 SQL 并没有完全忠实地实现关系理论的所有概念。在这种情况下,标准 SQL 将 table 定义为具有至少一列。 SQL 的设计者认为没有列的 table 没有那么有趣,以至于无法证明 SQL 语言的支持。
如果 PostgreSQL 或 SQL 的某些其他实现决定允许 table 没有列,他们将其作为标准 SQL 的扩展。