如何使用关键字';参考文献';在MySQL中?

如何使用关键字';参考文献';在MySQL中?,mysql,reference,Mysql,Reference,创建表时如何使用references关键字 假设我想创建两个表person和hobby,我想hobby表id引用person的id person table - id - name hobby - id - person_id - hobby_name 如何做到这一点?以下是一个示例: 创建与此类似的嗜好表: CREATE TABLE hobby ( id INT NOT NULL AUTO_INCREMENT, person_id INT NOT NULL, hobby_nam

创建表时如何使用
references
关键字

假设我想创建两个表
person
hobby
,我想hobby表id引用person的id

person table
- id
- name

hobby
- id
- person_id
- hobby_name
如何做到这一点?

以下是一个示例:


创建与此类似的嗜好表:

CREATE TABLE hobby (
  id INT NOT NULL AUTO_INCREMENT,
  person_id INT NOT NULL,
  hobby_name VARCHAR(255),
  PRIMARY KEY(id),
  FOREIGN KEY(person_id) REFERENCES person(id))
references关键字用于定义外键关系中使用的表和列。这意味着hobby表中的记录必须具有person表中存在的person_id,否则在插入时您将收到一个错误,即密钥不存在

为了回答您上面关于“ON DELETE CASCADE”的问题,它允许您删除父密钥记录(亲自)及其相应的子记录(在业余爱好中),而无需先删除所有子记录

为了澄清,如果您将子记录附加到主键条目,并且您尝试删除主键条目,如:

DELETE FROM person where person_id = 1;

如果没有级联删除,如果hobby中的任何记录的person_id为1,则会收到一个错误。在执行上述删除操作之前,您必须先删除所有这些记录。使用“级联删除”后,上述删除操作将成功,并自动删除与主键表中要删除的person_id相关联的表hobby表中的所有记录

Reference关键字实际上用于知道外键的位置。 这意味着哪个是表名,这个表的名称是什么

我说这是正确的:

CREATE TABLE person (person_id INT NOT NULL, 
PRIMARY KEY (person_id));

CREATE TABLE hobby (hobby_id INT NOT NULL, person_id INT NOT NULL,
PRIMARY KEY(hobby_id),
FOREIGN KEY(person_id) REFERENCES person(person_id));
然后,看这一行:

FOREIGN KEY(person_id) REFERENCES person(person_id));
这里的
person\u id
是外键,它来自
person
表,在该表中它的名称是
person\u id
。。。
就是这样。

这里是一个如何使用它的示例

create table hobby(id int references person(id),person_id int,hobby_varchar(20), primary key(id));

对于它的含义,
references
允许我们指定外键引用的目标表列

什么是“ON DELETE CASCADE”先生?@sasori-这意味着,当您删除表parent中的记录时,表child中具有fk引用parent的所有记录也将被删除。这被称为“级联删除”。值得注意的是,内联FK(
HobbyID INT-REFERENCES-ID)
)不起作用。最近有报道称这是一个bug(),所以我相信他们很快就会解决它。第二个表的命名“hobby”可能会让未来的读者感到困惑,因为实际上两个人可能有相同的爱好。(违反第一范式)
FOREIGN KEY(person_id) REFERENCES person(person_id));
create table hobby(id int references person(id),person_id int,hobby_varchar(20), primary key(id));