数据库第二次作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库第二次作业——上机实验题》
实验一:交互式S Q L的使用
实验要求:
1,创建Student数据库,包括Students,Courses,SC表,表结构如下:
Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT)
Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER)
SC(SNO,CNO,GRADE)
(注:下划线表示主键,斜体表示外键),并插入一定数据。
答:
create table Students
(
SNO varchar(100) primary key,
SNAME varchar(100) null,
SEX varchar(100) null,
BDATE datetime null,
HEIGHT decimal null,
DEPARTMENT varchar(100) null
)
go
create table Courses
(
CNO varchar(100) primary key,
CNAME varchar(100) null,
LHOUR int null,
CREDIT int null,
SEMESTER varchar(100) null
)
go
CREATE TABLE [dbo].[SC](
[SNO] varchar(100) NOT NULL,
[CNO] varchar(100) NOT NULL,
[GRADE] [int] NULL,
CONSTRAINT [PK_SC] PRIMARY KEY CLUSTERED
(
[SNO] ASC,
[CNO] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SC] WITH CHECK ADD CONSTRAINT [FK_SC_Courses]
FOREIGN KEY([CNO])
REFERENCES [dbo].[Courses]([CNO])
GO
ALTER TABLE [dbo].[SC] CHECK CONSTRAINT [FK_SC_Courses]
GO
ALTER TABLE [dbo].[SC] WITH CHECK ADD CONSTRAINT [FK_SC_Students]
FOREIGN KEY([SNO])
REFERENCES [dbo].[Students] ([SNO])
GO
ALTER TABLE [dbo].[SC] CHECK CONSTRAINT [FK_SC_Students]
2.完成如下的查询要求及更新的要求。
(1)查询身高大于1.80m的男生的学号和姓名;
答:
select SNO,SNAME from Students where HEIGHT>1.8
(2)查询计算机系秋季所开课程的课程号和学分数;
答:
select CNO,CREDIT from Courses where SEMESTER=’秋季’
(3)查询选修计算机系秋季所开课程的男生的姓名、课程号、学分数、成绩;
答:
select s.SNAME,O,c.CREDIT,SC.GRADE from students s
inner join SC on sc.SNO=s.SNO
inner jpin Courses c on O=c,CNO
where s.DEPARTMENT=’计算机系’and s.SEX=’男’and c.SEMESTER=’秋季’
(4)查询至少选修一门电机系课程的女生的姓名(假设电机系课程的课程号以EE开头);
答:
select distinct s.sname from Students s,sc where s.sno=sc.sno and s.sex=’女’and o like ’EE%’(5)查询每位学生已选修课程的门数和总平均成绩;
答:
select count(O) as 课程门数,avg(SC.GRADE) as 总平均成绩from students s
inner join SC on sc.SNO=s.SNO
inner join Courses c on O=O
group by s.SNO
(6)查询每门课程选课的学生人数,最高成绩,最低成绩和平均成绩;
答:
select cname,count(cno),max(grade),min(grade),avg(grade)
from students natural join sc natural join courses
group by chane;
(7)查询所有课程的成绩都在80分以上的学生的姓名、学号、且按学号升序排列;
答:
select sname,sno from students natural join (select sno.min(grade)as mini from sc group by sno)where mini>80 order by(sno);
(8)查询缺成绩的学生的姓名,缺成绩的课程号及其学分数;
答:
select sname,o,credit
from students,courses,sc
where students.sno=sc.sno and o=o and grade is null;
(9)查询有一门以上(含一门)三个学分以上课程的成绩低于70分的学生的姓名;
答:
select sname from students,courses,sc
where students.sno=sc.sno and o=sc.cho and credit>=3 and grade<70;
(10)查询1984年~1986年出生的学生的姓名,总平均成绩及已修学分数。
答:
select sname,avg(grade),sum(credit)