我正在将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))
请对此进行详细说明。
提前谢谢!
答案 0 :(得分:1)
如果您查看syntax for CREATE TABLE
in MySQL,将会看到列定义仅对NOT NULL
,UNIQUE
,PRIMARY 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