2012-11-07 118 views
1

我目前在MySQL数据库中共创建了12个表。这些表中的11个共享相关数据并且相互索引。我在填充表格各个字段中的值时遇到一些困难,并确保它们的索引正确。我想知道是否有一种更简单的方法,我可以将所有表中的每个字段填充为一条记录,而无需手动执行,并且不必担心与其他表(索引)匹配的正确foreign_key。可能一个查询可以完成这项工作,但我不知道如何构建这样的查询。或者任何其他建议,专门绑定到这个例子。在MySQL数据库中填充字段

下面是指向设计表和查询的链接,如果您想要在我的数据库中创建表的精确副本。

TABLE STRUCTURE/DESIGN

QUERY FOR CREATING ALL TABLES

+0

你感兴趣的只是填充记录为每个表? –

+0

@JohnWoo只是一个查询的例子,它将填充表中的一条记录:'major_minor','class','section','faculty',faculty_education',faculty_titles','office_hours','schedule'和'semester' – techAddict82

+1

你需要为每个表单独设置一个'INSERT'语句。但请确保您在主表上首先执行“INSERT”记录,以便引用表不会引发异常。 –

回答

2

根据您刚才的问题你的表,你需要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已经存在于表:classMajor_Minor,因为表Major_Class_br是依赖于他们。为了说明更多介绍,请尝试执行以下其中用于Class_ID值不会对Class表还不存在的查询,

INSERT INTO Major_Class_br (ID, Class_ID, Major_Minor_ID) VALUES (7,5,2); 

,你会看到这个错误

架构创建失败:不能添加或更新子行,外 键约束失败(databaseNamemajor_class_br,约束 cc_fk1外键(Class_ID)参考文献classID)。):