数据库关系代数和sql语句编写。具体的请看图片,不难。

2024-11-27 15:35:54
推荐回答(1个)
回答1:

create table s  --学生表
(
sno varchar(20),  -- 学号
sname varchar(20), -- 姓名
sex varchar(20), -- 性别
major varchar (20), -- 专业
)
create table c  -- 课程表
(
cno varchar(20),--- 课程代码
cname varchar(20)  ----课程名称


create table sc -- 成绩单

sno varchar(20) , --学号
cno varchar(20), -- 课程代码
score int  -- 成绩



insert into s (sno,sname,sex ,major ) values ('001','A','男','机械');
insert into s (sno,sname,sex ,major ) values ('002','B','男','信息');
insert into s (sno,sname,sex ,major ) values ('003','C','女','信息');
insert into s (sno,sname,sex ,major ) values ('004','D','女','机械');
insert into s (sno,sname,sex ,major ) values ('005','E','男','机械');
insert into s (sno,sname,sex ,major ) values ('006','F','男','机械');
insert into s (sno,sname,sex ,major ) values ('007','G','男','机械');
insert into s (sno,sname,sex ,major ) values ('008','H','女','信息');
insert into s (sno,sname,sex ,major ) values ('009','I','女','信息');

insert into c (cno ,cname ) values ('1','数据库');
insert into c(cno,cname) values ('2','高数');
insert into c (cno ,cname )  values ('3','语文');
insert into c (cno ,cname )  values ('4','英语');
insert into c (cno ,cname )  values ('5','物理');



insert into sc (sno ,cno ,score ) values ('001','1',40);
insert into sc (sno ,cno ,score ) values ('001','2',70);
insert into sc (sno ,cno ,score ) values ('001','3',90);
insert into sc (sno ,cno ,score ) values ('001','4',70);
insert into sc (sno ,cno ,score ) values ('002','1',80);
insert into sc (sno ,cno ,score ) values ('002','3',87);
insert into sc (sno ,cno ,score ) values ('002','4',78);
insert into sc (sno ,cno ,score ) values ('002','5',86);
insert into sc (sno ,cno ,score ) values ('003','1',67);
insert into sc (sno ,cno ,score ) values ('003','3',76);
insert into sc (sno ,cno ,score ) values ('004','1',77);
insert into sc (sno ,cno ,score ) values ('004','2',68);
insert into sc (sno ,cno ,score ) values ('005','1',86);
insert into sc (sno ,cno ,score ) values ('006','3',88);
insert into sc (sno ,cno ,score ) values ('007','5',78);
insert into sc (sno ,cno ,score ) values ('008','1',90);

--查询学习课程2的学号
select a.sno  from
(select * from s) a
left join
(select * from sc where cno='2') b
on a.sno =b.sno 
where b.sno is not null 

---查询学习数据库的学生学号及姓名
select a.sno ,a.sname  from 
(select * from s) a
left join
(select b.*,c.sno  from 
(select * from c where cname ='数据库') b
left join
(select * from sc ) c
on b.cno =c.cno 
where c.cno  is not null ) d
on a.sno =d.sno 
where d.cno  is not null 
---查询信息系的平均分
select AVG(b.score ) as  平均分 from 
(select * from s where major ='信息') a
left join
(select * from sc ) b
on a.sno =b.sno 
where b.sno is not null 
---查询学习2门以上课程学生的姓名和性别
select a.sname ,a.sex  from
(select * from s) a
left join
(select sno,COUNT(cno) as 数量 from sc group by sno having COUNT(cno)>=2) b
on a.sno =b.sno 
where b.sno  is not null