为什么我的查询正确无误?

时间:2018-12-10 11:39:35

标签: mysql sql phpmyadmin

我正在将MySQL phpmyadmin与xampp V3.2.2。一起使用。

,以下代码将无效!

CREATE TABLE Car (RegPlate int(8) NOT NULL PRIMARY KEY,
                  Brand varchar(20) NOT NULL,
                  Color varchar(20) NOT NULL,
                  Owner int(10) NOT NULL FOREIGN KEY REFERENCES Driver(ID))

这给了我两个错误,一个在ID上,这是“语句的意外开始”,另一个是在FOREIGN KEY上,“在FOREIGN KEY附近有一个逗号或右括号”,但是如果我从“ ID”中删除了括号,它的错误消失了,但是FOREIGN KEY上的错误仍然存​​在。为什么?

但是,如果我像这样重构我的代码,就可以了

CREATE TABLE Car (RegPlate int(8) NOT NULL PRIMARY KEY,
                  Brand varchar(20) NOT NULL,
                  Color varchar(20) NOT NULL,
                  Owner int(10) NOT NULL,
                  FOREIGN KEY (Owner) REFERENCES driver(ID))

请对此进行详细说明。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

如果您查看syntax for CREATE TABLE in MySQL,将会看到列定义仅对NOT NULLUNIQUEPRIMARY KEY和{{1}具有内联约束}:

DEFAULT

传统方法是显式使用column_definition: data_type [NOT NULL | NULL] [DEFAULT {literal | (expr)} ] [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT 'string'] [COLLATE collation_name] [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}] [STORAGE {DISK|MEMORY|DEFAULT}] [reference_definition] | data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [NOT NULL | NULL] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT 'string'] 并给约束起一个名字:

CONSTRAINT