MySQL实现一对多关系的例子(mysql一对多例子)

MySQL实现一对多关系的例子

在MySQL数据库中,一对多关系很常见。例如,一个学生可以对应多个成绩,一个电影可以对应多个评论等。本文将介绍如何在MySQL中实现一对多关系,并给出一个例子来示范。

一、实现方式

实现一对多关系的方式有多种,笔者这里介绍两种主流方式:外键和中间表。

外键:即在多的那一张表中添加一个指向一的那张表的id的列,这个列是唯一的且不能有null值,这个列即为外键。

中间表:在两张表之间添加一张表,这张表只有两个列,一个指向一的表的id,一个指向多的表的id。这张表叫做中间表。

实际中,外键键比较简单易懂,但当数据量较大时,效率会受到影响。而中间表是一种比较安全的方式,但在程序设计和操作上较为复杂。

本文中,我们将使用外键来实现一对多关系。

二、实例

我们将以学生和成绩为例来介绍如何在MySQL中实现一对多关系。

我们需要创建两张表,一张是学生表,另一张是成绩表。

学生表:

CREATE TABLE student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
sex VARCHAR(20) NOT NULL,
age INT NOT NULL
);

成绩表:

CREATE TABLE score(
id INT PRIMARY KEY AUTO_INCREMENT,
student_id INT NOT NULL,
score INT NOT NULL,
FOREIGN KEY (student_id) REFERENCES student(id)
);

在创建成绩表时,需要注意的是,我们在表中添加了一个student_id的外键,并指向了学生表的id字段。

接下来,我们可以插入数据进行测试:

INSERT INTO student (name, sex, age) VALUES ('Tom', 'male', 18);
INSERT INTO student (name, sex, age) VALUES ('Lucy', 'female', 17);
INSERT INTO student (name, sex, age) VALUES ('Jack', 'male', 19);
INSERT INTO score (student_id, score) VALUES (1, 80);
INSERT INTO score (student_id, score) VALUES (1, 90);
INSERT INTO score (student_id, score) VALUES (2, 85);
INSERT INTO score (student_id, score) VALUES (3, 92);
INSERT INTO score (student_id, score) VALUES (3, 88);

这样,我们就创建了一些学生和成绩的数据。接下来,我们可以通过以下语句来查询学生和他们的成绩:

SELECT * FROM student;
SELECT * FROM score;

查询结果如下:

student表:

| id | name | sex | age |

| — | —- | —— | — |

| 1 | Tom | male | 18 |

| 2 | Lucy | female | 17 |

| 3 | Jack | male | 19 |

score表:

| id | student_id | score |

| — | ———- | —– |

| 1 | 1 | 80 |

| 2 | 1 | 90 |

| 3 | 2 | 85 |

| 4 | 3 | 92 |

| 5 | 3 | 88 |

我们可以看到,在成绩表(score)中,每个学生的id都与学生表(student)中的id对应起来,这就是外键的作用。通过这种方式,我们就可以实现一对多关系。

三、总结

通过以上的例子,我们学会了如何在MySQL中实现一对多关系。当然,这只是一个简单的实例,实际中也会有更多的应用场景。如果你还没有尝试过使用MySQL实现一对多关系,那么赶快去试一下吧!


数据运维技术 » MySQL实现一对多关系的例子(mysql一对多例子)