首页 >

mysql怎么做多对多 |mysql systable

mysql怎么排序,mysql tcp ip连接,mysql怎么设不了中文,mysql导入frm文件(转),查看本机mysql密码,mysql systablemysql怎么做多对多 |mysql systable

假设大家有两个表:学生和课程。一个学生可以选择多门课程,一门课程也可以被多个学生选择。

CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE course (
id INT PRIMARY KEY,
name VARCHAR(50)
);

为了建立学生和课程之间的多对多关系,大家需要创建一个中间表,存储学生和课程的关联数据。

CREATE TABLE student_course (
student_id INT,
course_id INT,
PRIMARY KEY(student_id,course_id),
FOREIGN KEY(student_id) REFERENCES student(id),
FOREIGN KEY(course_id) REFERENCES course(id)
);

在中间表中,大家定义了两个外键关联学生表和课程表,保证了关联数据的完整性。主键是由学生ID和课程ID组成的复合主键,确保了每个学生只能选择一次每门课程。

现在大家可以向学生和课程表中插入数据,然后向中间表中插入关联数据:

INSERT INTO student(id,name) VALUES(1,'张三');
INSERT INTO student(id,name) VALUES(2,'李四');
INSERT INTO student(id,name) VALUES(3,'王五');
INSERT INTO course(id,name) VALUES(1,'语文');
INSERT INTO course(id,name) VALUES(2,'数学');
INSERT INTO course(id,name) VALUES(3,'英语');
INSERT INTO student_course(student_id,course_id) VALUES(1,1);
INSERT INTO student_course(student_id,course_id) VALUES(1,2);
INSERT INTO student_course(student_id,course_id) VALUES(2,2);
INSERT INTO student_course(student_id,course_id) VALUES(3,1);
INSERT INTO student_course(student_id,course_id) VALUES(3,3);

现在大家可以通过JOIN操作查询学生选课信息:

SELECT student.name,course.name FROM student
JOIN student_course ON student.id = student_course.student_id
JOIN course ON course.id = student_course.course_id;

上述查询语句将返回以下结果:

+------+--------+
| name | name   |
+------+--------+
| 张三  | 语文   |
| 张三  | 数学   |
| 李四  | 数学   |
| 王五  | 语文   |
| 王五  | 英语   |
+------+--------+

大家看到,通过中间表连接学生和课程表,大家可以轻松实现多对多关系。


mysql怎么做多对多 |mysql systable
  • 如何看待MySQL提示的错误信息? |gephi mysql
  • 如何看待MySQL提示的错误信息? |gephi mysql | 如何看待MySQL提示的错误信息? |gephi mysql ...

    mysql怎么做多对多 |mysql systable
  • 如何解决MySQL拒绝访问权限问题 |mysql 重做索引
  • 如何解决MySQL拒绝访问权限问题 |mysql 重做索引 | 如何解决MySQL拒绝访问权限问题 |mysql 重做索引 ...

    mysql怎么做多对多 |mysql systable
  • mysql创建游标的存储过程详解 |mysql 一键安装包下载
  • mysql创建游标的存储过程详解 |mysql 一键安装包下载 | mysql创建游标的存储过程详解 |mysql 一键安装包下载 ...