我目前在MySQL数据库中共创建了12个表。这些表中的11个共享相关数据并且彼此索引。我在填充表格的每个单独字段中的值并确保它们正确索引时遇到了一些困难。我想知道是否有一种更简单的方法可以在一个记录的所有表中填充每个字段而无需手动执行,并且不必担心与另一个表(索引)的正确foreign_key
匹配。可能一个查询可以完成这项工作,但我不知道如何构建这样的查询。或任何其他特别与此示例相关的建议。
如果您想在我的数据库中创建表的精确副本,下面是表格和查询设计的链接。
答案 0 :(得分:2)
根据您上一个问题中的表格,您需要先在独立表格({em>或基本表格)上INSERT
记录。其中一些表是event
,semester
,Major_Minor
等。这些表称为独立表,因为没有定义外键约束。
要在独立表上插入的示例查询
-- INSERTING records on table event
INSERT INTO event (ID, event_description, event_datetime) VALUES
(1, 'hello', NOW()),
(2, 'world', NOW()),
(3, 'stack', NOW()),
(4, 'overflow', NOW());
-- INSERTING records on table semester
INSERT INTO semester (ID, SEMESTER_NAme) VALUES
(1, 'First Semester'),
(2, 'Second Semester'),
(3, 'Summer');
-- INSERTING records on table Major_Minor
INSERT INTO Major_Minor (ID, Major_Minor_Name) VALUES
(1, 'Math'),
(2, 'Science'),
(3, 'English');
-- INSERTING records on table class
INSERT INTO class (ID, class_name) VALUES
(1, 'Alpha'),
(2, 'Beta'),
(3, 'Gamma'),
(4, 'Omega');
插入记录后,您现在可以在依赖表上INSERT
。这些被称为依赖表,因为在它们上定义了外键约束。您无法在另一个表上不存在的某些字段上添加值。从属表的示例是Major_Class_br
表,
-- INSERTING records on table Major_Class_br
INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES
(1,1,1),
(2,1,2),
(3,1,3),
(4,2,1),
(5,2,1),
(6,4,2);
正如您所看到的,Class_ID
和Major_Minor_ID
的值已存在于表格class
和Major_Minor
上,因为表格Major_Class_br
依赖于它们。为了进一步说明这一点,请尝试执行下面的查询,其中Class_ID
的值尚未存在于Class
表中,
INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES (7,5,2);
您将看到此错误
架构创建失败:无法添加或更新子行:外部 键约束失败(
databaseName
。major_class_br
,CONSTRAINTcc_fk1
外键(Class_ID
)参考class
(ID
)):