如何使用关键字';参考文献';在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));