MySQL如何在使用外键的表中插入数据?
什么是外键?
外键(Foreign Key)是一种关系型数据库用于建立两个表之间关联的一种技术。一般地,一个表的外键指向另一个表的主键。
阅读更多:MySQL 教程
为什么要用外键?
使用外键可以帮助我们保证表与表之间数据的完整性和一致性。例如,我们有两个表,一个是“学生”表,一个是“课程”表,我们通过在“课程”表上建立“外键”,将其与“学生”表上的“主键”连接起来,就可以确保当我们插入学生分数时,每个学生都与一个存在于“课程”表中的课程对应。
怎样在使用外键的表中插入数据?
正常情况下,在使用外键的表中插入数据与普通的插入数据操作相同。但是需要注意的是,插入的数据需要符合外键的引用(Reference)规则,否则将无法插入。
示例:
创建“学生”表:
CREATE TABLE students (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
gender ENUM('M', 'F') NOT NULL
);
创建“课程”表:
CREATE TABLE courses (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
teacher VARCHAR(50) NOT NULL
);
为“课程”表添加外键,将其与“学生”表的“id”列建立关联:
ALTER TABLE courses
ADD CONSTRAINT fk_students_id
FOREIGN KEY (id)
REFERENCES students(id);
插入数据时需要注意,插入的“id”需要符合“学生”表的“id”列中存在的值:
-- 学生表中插入数据
INSERT INTO students (name, age, gender)
VALUES
('Tom', 18, 'M'),
('Lily', 17, 'F'),
('David', 18, 'M');
-- 在课程表中插入数据,需要指定与学生表中的id列对应的值
INSERT INTO courses (name, teacher, id)
VALUES
('English', 'John', 1),
('Math', 'Kevin', 2),
('Science', 'Lucy', 3);
注意,在插入数据时如果出现了不符合外键规则的数据,则会抛出错误信息,例如:
-- 如果在课程表中插入了不存在于学生表id列中的数据,则会抛出错误
INSERT INTO courses (name, teacher, id)
VALUES
('History', 'Sara', 4);
总结
外键是关系型数据库中用于建立两个表之间关联的一种技术。使用外键可以保证表与表之间数据的完整性和一致性。在插入数据时需要注意外键的引用规则,确保插入的数据符合外键的引用规则。