首页 > 文章列表 > 如何在MySQL中创建三个关系表?

如何在MySQL中创建三个关系表?

mysql
349 2023-04-26

MySQL如何创建三张关系表

1.创建学生表

create table tbl_stu (



id int not null primary key auto_increment,



name varchar(45) not null



)engine=innodb default charset=utf8;

2.创建科目表

create table tbl_sub (



id int not null primary key auto_increment,



subject varchar(45) not null



)engine=innodb default charset=utf8;

3.创建分数表

create table tbl_scores(



id int not null primary key auto_increment,



stu_id int,



sub_id int



score decimal(5,2),



constraint sco_stu foreign key(stu_id) references tbl_stu(id),



constraint sco_sub foreign key(sub_id) references tbl_sub(id)

);

4.插入数据

insert into tbl_stu values (0,"小王");

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

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





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

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

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





insert into tbl_scores values (0,1,1,90);

insert into tbl_scores values (0,1,2,70);

insert into tbl_scores values (0,1,3,82);



insert into tbl_scores values (0,2,1,95);

insert into tbl_scores values (0,2,2,70);

insert into tbl_scores values (0,2,3,84);



insert into tbl_scores values (0,3,1,85);

insert into tbl_scores values (0,3,2,86);

5.查询全部分数

select s3.name,s2.subject,s1.score from tbl_scores as s1



inner join tbl_sub as s2 on s1.sub_id = s2.id



inner join tbl_stu as s3 on s1.sub_id = s3.id;

6.查询学生的平均分

select s3.name,avg(s1.score) from tbl_scores as s1



inner join tbl_stu as s3 on s1.sub_id = s3.id



group by s3.name;

7.总分排行榜

select s3.name,sum(s1.score) as s from tbl_scores as s1



inner join tbl_stu as s3 on s1.stu_id = s3.id



group by s3.name order by s desc;