02数据库之单表数据查询

1、建立数据库Student_DB_姓名首字母缩写(如姓名为张三的同学建立的数据库为Student_DB_ZS),并在此数据库中用命令方式创建数据表(注意表中列的相关约束)

学生表:Student(Sno, Sname, Ssex, Sage, Sdept);

课程表:Course(Cno, Cname, Cpno, Ccredit);

学生选课表:SC(Sno, Cno)

学生表的逻辑设计:

字段名

类型

长度

主码/外码

描述

是否可空

Sno

char

 

9

主码

学号

×

Sname

char

20

 

姓名

×

Ssex

char

2

 

性别

Sage

smallint

 

 

年龄

Sdept

char

20

 

系别

课程表的逻辑设计:

字段名

类型

长度

主码/外码

描述

是否可空

Cno

char

4

主码

课程号

×

Cname

char

40

 

课程名

×

Cpno

char

4

外码

先修课程号

Ccredit

smallint

 

 

学分

选课表的逻辑设计:

字段名

类型

长度

主码/外码

描述

是否可空

 

Sno

char

9

外码

学号

×

Cno

char

4

外码

课程号

×

说明:选课表的主码:(Sno, Cno)

 

2、用SQL语言完成如下的操作(请给出SQL语句及相应执行结果的截图):

(1)向SC表中增加成绩(Grade)列,其数据类型为短整型。

(2)将学生表中年龄的数据类型改为整型。

(3)为Student表的Sname增加取值唯一的约束。

(4)用界面化方式向三个表中填充数据(参照课本P79页)(此题可不用给出结果图)。

(5) 索引有什么作用;SQL SERVER中索引的种类。

作用:索引主要用来提升数据检索速度,在数据量很大的时候有用。索引相当于图书馆的图书目录,能够帮你快速定位到需要查询的内容。

种类:普通索引、唯一索引、主键索引和全文索引。

 

(6)对Student表按学号降序建唯一索引。

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

不能创建聚集索引的原因是我们在Student表中定义了Sno作为主键,主键就是加了唯一性约束的聚集索引,又因为同一张表中不能有多个聚集索引的存在,所以不能继续创建聚集索引。

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

3、用SQL语句完成如下对三个表的查询(请给出SQL语句及执行结果的截图):

(1)查询所有课程的课程号和课程名。

(2)查询全体学生的记录。

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

 

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

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

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

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

(8)查询课程名为DB_Design课程的课程号和学分。

(9)查询没有先修课的课程号、课程名及学分。

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

(11)查询18到22岁的女学生信息,并按年龄升序排序。

(12)查询专业为“CS”、“IS”的学生信息。

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

(14)查询课程的总数。

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

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

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

(18)检索平均成绩超过80分的学生学号和平均成绩。

猜你喜欢

转载自blog.csdn.net/weixin_45713984/article/details/106958245