数据对象的定义、单表数据查询

参考书籍《数据库系统概论》(第五版)主编:王珊
一、实验内容
1、建立数据库Student_DB,并在此数据库中用命令方式创建数据表(注意表中列的相关约束):数据库以及表建立成功以后请参考79页将数据分别录入表中。
【这个我们不再详细介绍,在前面我们已经介绍过创建数据库、表。插入数据的两种方法。】
→学生表:Student(Sno, Sname, Ssex, Sage, Sdept);
→课程表:Course(Cno, Cname, Cpno, Ccredit);
→学生选课表:SC(Sno, Cno, Grade)
①学生表的逻辑设计:
在这里插入图片描述
②课程表的逻辑设计:
在这里插入图片描述
③选课表的逻辑设计:
在这里插入图片描述
说明:选课表的主码:(Sno, Cno)

2、用SQL语言完成如下的操作(请给出SQL语句及相应执行结果的截图):
(1)将学生表中年龄的数据类型改为整型。

代码展示:
ALTER  TABLE Student ALTER COLUMN Sage INT

执行结果:
在这里插入图片描述
(2)向SC表中增加成绩(Grade1)列,其数据类型为短整型。

代码展示:
ALTER TABLE SC ADD Grade1 SMALLINT

执行结果
在这里插入图片描述
(3)用SSMS方式向三个表中填充数据(参照课本P79页)(此题可不用给出结果图)。
略过
(4)对Student表按学号降序建唯一索引。

代码展示:
CREATE UNIQUE  INDEX mingzi ON Student(Sno desc)
:mingzi:为自定义索引名字。

(5)对Student表按学生姓名列建聚集索引,观察能否建立成功,如未成功请分析原因。

建立不成功:
一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况     
所以,对应的聚集索引只能有一个。在前面的创建过程我们已经对此表的学号降序建唯一索引。

(6)删除第(4)题建的索引。

代码展示
DROP INDEX MINGZI ON Student

3、用SQL语句完成如下对三个表的查询(请给出SQL语句及执行结果的截图):
(1)查询所有课程的课程号和课程名。

代码展示:
SELECT Cno,Cname FROM Course 

执行结果:
在这里插入图片描述
(2)查询全体学生的记录。

代码展示:
SELECT * FROM Student

执行结果:
在这里插入图片描述

(3)查询学生表中的所有的系。

代码展示:
SELECT Sdept FROM Student  

在这里插入图片描述

(4)查询全体学生的姓名、出生年份和所在的院系,并为出生年份和所在院系两列分别起别名为sbirth,department,并将系名全部转换成小写字母。

代码展示:
SELECT Sname,2018-Sage  sbirth,lower(Sdept ) department  FROM STUDENT

执行效果
在这里插入图片描述

(5)求数学系学生的学号和姓名。

代码展示
SELECT Sno, Sname FROM Student  WHERE Sdept='MA' 

执行效果
在这里插入图片描述

(6)查询所有考试成绩在85分以下的学生学号、课程号。

代码展示
SELECT Sno ,Cno FROM SC WHERE Grade<=85

在这里插入图片描述

(7)查询学分在2~7之间的课程信息。

代码展示
SELECT  * FROM Course WHERE Ccredit BETWEEN 2 AND 7

执行效果
在这里插入图片描述
(8)查询课程名为DB_Design课程的课程号和学分。

代码展示
SELECT Cno,Ccredit FROM Course WHERE Cname like 'DB\_Design' ESCAPE '\'

执行结果
在这里插入图片描述
(9)查询没有先修课的课程号、课程名及学分。

代码展示
SELECT  Cno ,Cname ,Ccredit FROM Course WHERE Cpno IS NULL

执行结果
在这里插入图片描述

(10)查询信息系学生性别为男且年龄小于20岁的学生姓名。

代码展示
SELECT Sname FROM  Student WHERE Sdepat='IS' AND Ssex='男'AND Sage<20

执行结果
在这里插入图片描述

(11)查询选修了3号课程的学生的学号及成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。

代码展示:
SELECT Sno,Grade FROM SC WHERE Cno=3 ORDER BY Grade DESC Sno ASC

执行结果
在这里插入图片描述

(12)查询课程的总数。

代码示例:
SELECT COUNT(*) FROM Course 

执行结果
在这里插入图片描述

(13)查询选修2号课程的学生平均成绩和最高成绩,并分别为平均成绩和最高成绩起别名为AVG,MAX。

代码展示
SELECT AVG(Grade) AVG,MAX(Grade) MAX FROM SC WHERE Cno=2 

执行结果
在这里插入图片描述

(14)查询每个学生的选课门数,要求输出学生学号及选课的门数。

代码展示
SELECT Sno , COUNT(*) FROM SC GROUP BY Sno

执行结果
在这里插入图片描述

(15)查询选修了2门及以上的课程的学生学号。

代码示例
SELECT  Sno FROM SC GROUP BY Sno HAVING COUNT(*)>=2

执行结果
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caofuqiang_521

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值