Blu*_*ing 14 mysql sql database relational-database
基本上我想知道使用带有或不带外键的REFERENCES之间的区别.
我有这两个例子:
CREATE TABLE Employee
(
id INT,
name VARCHAR(50),
birthYear INT,
boss INT REFERENCES Employees(id),
worksAt INT NOT NULL REFERENCES Department(id) ON DELETE CASCADE,
PRIMARY KEY (id,worksAt)
);
Run Code Online (Sandbox Code Playgroud)
例2:
CREATE TABLE Department
(
id INT PRIMARY KEY,
name VARCHAR(50),
numberOfEmployees INT,
location INT NOT NULL,
country INT NOT NULL,
manager INT,
FOREIGN KEY (location,country) REFERENCES Location(locId,countryId),
UNIQUE KEY (manager)
);
Run Code Online (Sandbox Code Playgroud)
我在这里问的是为什么第二个例子使用FOREIGN KEY关键字,而第一个例子仅使用REFERENCES.
此外,第一个似乎引用自己(我认为员工中的s是一个错误)如果是这样,为什么它使用REFERENCES如果它引用自己?
Cor*_*bin 18
恭喜!你偶然发现了一个奇怪的MySQL怪癖.第一种语法绝对没有.它默默地,是的,默默地被忽略了.
此外,InnoDB不识别或支持"内联REFERENCES规范"(在SQL标准中定义),其中引用被定义为列规范的一部分.仅当指定为单独的FOREIGN KEY规范的一部分时,InnoDB才接受REFERENCES子句.对于其他存储引擎,MySQL Server会解析并忽略外键规范.
它只是create table文档的一半.