MySQL如何创建多对多和一对一关系

一、创建多对多1.学生表create table students (

id int not null primary key auto_increment,

name varchar(45) not null

)engine=innodb default charset=utf8;
2.课程表create table courses (

id int not null primary key auto_increment,

name varchar(45) not null

)engine=innodb default charset=utf8;
3.中间表create table stu_cour (

id int not null primary key auto_increment

course_id int not null,

stu_id int not null,

constraint cour foreign key(course_id) references courses(id),

constraint stu foreign key(stu_id) references students(id)

)engine=innodb default charset=utf8;
4.插入数据insert into students values (0,"
小王"
);

insert into students values (0,"
小宋"
);

insert into students values (0,"
小李"
);



insert into courses values (0,"
语文"
);

insert into courses values (0,"
数学"
);

insert into courses values (0,"
英语"
);



insert into stu_cour values (0,1,1);

insert into stu_cour values (0,1,2);

insert into stu_cour values (0,1,3);

insert into stu_cour values (0,2,1);

insert into stu_cour values (0,2,3);

insert into stu_cour values (0,3,2);

insert into stu_cour values (0,3,3);
5.查询学生1选了哪些科目SELECT courses.id,courses.name FROM courses

INNER JOIN stu_cour ON stu_cour.course_id=courses.id

INNER JOIN students ON students.id= 1

and students.id = stu_cour.stu_id;

6.查询id=2数学被谁选了SELECT students.name FROM students

INNER JOIN stu_cour ON stu_cour.stu_id =students.id

INNER JOIN courses ON courses.id= 2

and stu_cour.course_id = courses.id;

二、MySQL 创建一对一关系1.一对一

创建用户表:

CREATE TABLE users (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50) NOT NULL

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

如何在MySQL中创建多对多和一对一关系

用户信息表:

CREATE TABLE users_info (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,

age int NOT NULL,

phone varchar(11) NOT NULL,

user_id int not null,
constraint user_info foreign key(user_id) references users(id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.插入数据insert into users values (0,"
小王"
);

insert into users values (0,"
小宋"
);



insert into users_info values (0,12,'
13812345678'
,1);

insert into users_info values (0,14,'
13812345679'
,2);

查询人的全部信息:

select * from users inner join users_info on
users_info.user_id =users.id;


多对多关系和一对一关系是关系型数据库中最为常见的两种关系。在MySQL中,创建这两种关系是至关重要且常见的。这篇文章将会详细讲解在MySQL中如何创建多对多和一对一关系。
一. 创建多对多关系
1.1 多对多关系概述
多对多关系又称为多重关系。它通常用于由多个实体所构成的系统中,这些实体可以相互关联,而且一种类型的实体也可以关联多种类型的实体。比如,在一个电影票务系统中,一个用户可以购买多张电影票,一个电影也可以被多个用户购买。
1.2 创建多对多关系的步骤
在MySQL中,创建多对多关系的步骤一般如下:
1. 定义需要关联的表:比如,在上述的电影票务系统中,需要关联用户表和电影表;
2. 创建中间表:中间表是用来连接需要关联的表的,比如,在上述电影票务系统中,我们可以创建一个名为\"user_movie\"的中间表,来连接用户表和电影表;
3. 设置中间表的外键:在中间表中,我们需要设置两个外键,一个指向用户表的主键,一个指向电影表的主键,来建立用户和电影之间的关系。
二. 创建一对一关系
2.1 一对一关系概述
一对一关系又称为单一关系,它通常用于存在一一对应关系的两个实体之间。比如,在一个学生信息管理系统中,一个学生只对应一个家长。
2.2 创建一对一关系的步骤
在MySQL中,创建一对一关系一般如下:
1. 定义需要关联的表:比如,在上述的学生信息管理系统中,需要关联学生表和家长表;
2. 创建外键:在学生表中创建一个指向家长表的主键的外键,以此建立学生和家长之间的关系。
三. 总结
无论是多对多还是一对一关系,它们都是关系型数据库中最为常见的两种关系。在MySQL中,创建这两种关系的步骤都需要抓住以下三个重点:定义需要关联的表、创建中间表或外键、设置外键指向主键。我们相信,通过以上的内容,您已经具备了在MySQL中创建多对多和一对一关系的基础知识,希望它对您的业务开发有所帮助。