数据参考:https://www.cnblogs.com/jingzhenhua/p/5947416.html
我将数据改成了适用于MySQL的格式,具体脚本如下:
create table student(
sno varchar(5) primary key,
sname varchar(9) not null,
ssex varchar(3) not null,
sbirthday date,
sclass varchar(5)
);
create table course(
cno varchar(5) primary key,
cname varchar(15) not null,
tno varchar(3) not null
);
create table score(
sno varchar(3) not null,
cno varchar(5) not null,
degree double(4,1)
);
create table teacher(
tno varchar(3) primary key,
tname varchar(9) not null,
tsex varchar(3) not null,
tbirthday date,
prof varchar(9),
depart varchar(15) not null
);
--student
insert into student(sno,sname,ssex,sbirthday,sclass) values(108,'曾华','男','1977-09-01',95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(105,'匡明','男','1975-10-02',95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(107,'王丽','女','1976-01-23',95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(101,'李军','男','1976-02-20',95033);
insert into student(sno,sname,ssex,sbirthday,sclass) values(109,'王芳','女','1975-02-10',95031);
insert into student(sno,sname,ssex,sbirthday,sclass) values(103,'陆君','男','1974-06-03',95031);
--teacher
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(804,'李诚','男','1958/12/02','副教授','计算机系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(856,'张旭','男','1969/03/12','讲师','电子工程系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(825,'王萍','女','1972/05/05','助教','计算机系');
insert into teacher(tno,tname,tsex,tbirthday,prof,depart) values(831,'刘冰','女','1977/08/14','助教','电子工程系');
--course表(添加外键后要先填teacher表中数据去满足外键约束)
insert into course(cno,cname,tno) values('3-105','计算机导论',825);
insert into course(cno,cname,tno) values('3-245','操作系统',804);
insert into course(cno,cname,tno) values('6-166','数字电路',856);
insert into course(cno,cname,tno) values('9-888','高等数学',831);
--score表(添加外键后要先填student,course表中数据去满足外键约束)
insert into score(sno,cno,degree) values(103,'3-245',86);
insert into score(sno,cno,degree) values(105,'3-245',75);
insert into score(sno,cno,degree) values(109,'3-245',68);
insert into score(sno,cno,degree) values(103,'3-105',92);
insert into score(sno,cno,degree) values(105,'3-105',88);
insert into score(sno,cno,degree) values(109,'3-105',76);
insert into score(sno,cno,degree) values(101,'3-105',64);
insert into score(sno,cno,degree) values(107,'3-105',91);
insert into score(sno,cno,degree) values(108,'3-105',78);
insert into score(sno,cno,degree) values(101,'6-166',85);
insert into score(sno,cno,degree) values(107,'6-166',79);
insert into score(sno,cno,degree) values(108,'6-166',81);
接下来测试left join的串联使用:
#左连接
select a.*,b.* from student as a left join score as b on a.sno=b.sno where a.sno='101';
#左连接
select a.*,b.*,c.cname from student as a left join score as b on a.sno=b.sno \
left join course as c on c.cno=b.cno;
#左连接,只挑出101
select a.*,b.*,c.cname from student as a left join score as b on a.sno=b.sno \
left join course as c on c.cno=b.cno where a.sno='101';
#错误:where只能写在最后面,写在中间报错
select a.*,b.*,c.cname from student as a left join score as b on a.sno=b.sno where a.sno='101' \
left join course as c on c.cno=b.cno;
#继续串联更多的左连接
select a.*,b.*,c.cname,d.tname from student as a \
left join score as b on a.sno=b.sno \
left join course as c on c.cno=b.cno \
left join teacher as d on c.tno=d.tno \
where a.sno='101'
;
以上内容仅供参考。