数据库上机题汇总文档格式.docx
《数据库上机题汇总文档格式.docx》由会员分享,可在线阅读,更多相关《数据库上机题汇总文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
CreateTableStudent
(SnoCHAR(5)NOTNULLPRIMARYKEY(Sno),
SnameVARCHAR(20)constraintuq_snameunique,
SageSMALLINT,
SsexCHAR
(2)DEFAULT'
男'
CHECK(Ssex='
ORSsex='
女'
),
SdeptCHAR
(2));
●课程表Course,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:
Course(Cno,Cname,Cpno,Ccredit),
其中主码为Cno。
Cname取值唯一,Cpno参照cno。
CreateTableCourse
(CnoCHAR
(2)NOTNULLPRIMARYKEY(Cno),
CnameVARCHAR(20)UNIQUE,
CpnoCHAR
(2)referencescourse(cno),
CcreditSMALLINT);
●学生SC,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:
SC(Sno,Cno,Grade)
其中主码为(SNO,CNO),sno参照student表的sno列,cno参照course表的cno列。
grade取值范围0-100。
CreateTableSC
(SnoCHAR(5)NOTNULLCONSTRAINTS_FFOREIGNKEYREFERENCESStudent(Sno),
CnoCHAR
(2)NOTNULLConstraintfk_cnoFOREIGNKEY(Cno)REFERENCESCourse(Cno),
GradeSMALLINTCHECK((GradeISNULL)OR(GradeBETWEEN0AND100)),
PRIMARYKEY(Sno,Cno),
);
3、向Student表增加“入学时间”列,其数据类型为日期型。
Altertablestudent
Add入学时间smalldatetime
4、将年龄的数据类型改为smallint。
Altercolumnsagesmallint
5、删除学生姓名必须取唯一值的约束。
Dropuq_sname
6、向course表中增加一个约束,以限制Ccredit的取值范围为1-4。
Altertablecourse
Addconstraintck_ccreditcheck(Ccreditbetween1and4)
7、向student表中插入值(‘98006’,‘欧阳姗姗’,18,‘女’,‘CS’)。
INSERTINTOstudentVAlues('
98006'
'
欧阳姗姗'
18,'
,'
CS'
8、从student表中删除姓名为’李四’的学生。
Deletefromstudent
Wheresname=’李四’
9、在SC表中将‘2’号课程的成绩加5。
Updatesc
Setgrade=grade+5
Wherecno=‘2’
10、在SC表中将’2’号课程的成绩减5。
Setgrade=grade-5
实验三单表查询
(一)
学号姓名成绩:
1、掌握投影查询。
2、掌握选择查询。
对JXGL数据库进行查询。
1、查询全体学生的学号与姓名。
selectsno,sname
fromstudent
2、查询全体学生的姓名、学号、所在系。
selectsname,sno,sdept
3、查询全体学生的详细记录。
select*
4、查全体学生的姓名及其出生年份。
selectsname,year(getdate())-sage'
出生年份'
5、查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名。
lower(sdept)'
sdept'
6、查询选修了课程的学生学号。
selectdistinctsno
fromsc
7、查询所有年龄在20岁以下的学生姓名及其年龄。
selectsname,sage
wheresage<
20
8、查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
Selectsname,sdept,sage
Fromstudent
Wheresagebetween20and23
9、查询年龄不在20~23岁之间的学生姓名、系别和年龄。
Wheresagenotbetween20and23
10、查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
Selectsname,ssex
Wheresdeptin(‘IS’,’MA’,’CS’)
11、查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
WheresdeptNOTin(‘IS’,’MA’,’CS’)
12、查询学号为98001的学生的详细情况。
Select*
Wheresno=’98001’
13、查考试成绩大于等于90的学生的学号。
Selectsno
Fromsc
Wheregrade>
=90
14、查询所有姓刘学生的姓名、学号和性别。
Selectsname,sno,ssex
Wheresnamelike‘刘%’
15、查询姓"
欧阳"
且全名为三个汉字的学生的姓名。
Selectsname
Wheresnamelike‘欧阳_’
16、查询名字中第2个字为"
阳"
字的学生的姓名和学号。
Selectsname,sno
Wheresnamelike‘_阳%’
17、查询所有不姓刘的学生姓名。
Wheresnamenotlike‘刘%’
18、某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
Selectsno,cno
Fromsc
Wheregradeisnull
19、查所有有成绩的学生学号和课程号。
Wheregradeisnotnull
实验四单表查询
(二)
3、掌握使用集函数的单表查询。
4、掌握对查询结果排序与分组。
1、查询学生总人数。
selectcount(*)'
总人数'
2、查询选修了课程的学生人数。
selectcount(distinctsno)'
人数'
3、计算1号课程的学生平均成绩。
selectavg(grade)'
平均分'
wherecno='
1'
4、查询选修1号课程的学生最高分数。
selectmax(grade)'
最高分'
5、计算选修1号课程的学生人数、最高成绩、最低成绩及平均成绩。
max(grade)'
min(grade)'
最低分'
avg(grade)'
6、求各个课程号及相应的选课人数。
selectcno,count(*)'
选课人数'
groupbycno
7、查询选修了3门以上课程的学生学号。
selectsno
groupbysno
havingcount(*)>
3
8、查询有3门以上课程是90分以上的学生的学号。
wheregrade>
90
9、查询各专业的专业名及学生人数。
selectsdept,COUNT(*)'
学生人数'
groupbysdept
10、查询平均成绩在80分以上的学生的学号及平均成绩
selectsno,AVG(grade)as'
平均成绩'
havingAVG(grade)>
80
11、查询至少有2个人选修的课程的课程号,选课人数。
、
selectcno,COUNT(*)'
havingCOUNT(*)>
=2
12、查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
selectsno,grade
3'
orderbygradedesc
13、查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
orderbysdeptasc,sagedesc
实验五多表查询
(一)
系名专业及班级
5、掌握连接查询的一般格式。
6、熟练掌握连接查询的各种方法。
1.查询选修2号课程的学生名字。
selectsname
fromstudent,sc
wherestudent.sno=sc.snoandcno='
2'
2.查询选修了这样课程的学生学号,其直接先行课是5号课程。
fromsc,course
whereo=oandcpno='
5'
3.查询选修的课程成绩为90分以上的学生姓名与课程名和成绩。
selectsname,cname,grade
fromstudent,sc,course
wherestudent.sno=sc.snoando=o
andgrade>
4.查询每一门课的间接先修课(即先修课的先修课)
selecto,b.cpno
fromcoursea,courseb
wherea.cpno=o
5.查询选修2号课程且成绩在90分以上的所有学生的学号、姓名。
selectstudent.sno,sname
6.查询每个学生的学号、姓名、选修的课程名及成绩。
selectstudent.sno,sname,cname,grade
7.查询性别为男、课程成绩及格的学生信息及课程号、成绩。
selectstudent.*,cno,grade
wherestudent.sno=sc.snoandgrade>
=60andssex='
8.查询平均成绩大于85分的学号、姓名、平均成绩。
selectstudent.sno,sname,avg(grade)'
wherestudent.sno=sc.sno
groupbystudent.sno,sname
havingavg(grade)>
85
9.查询选修了数据库系统的学生的姓名及成绩。
selectsname,grade
fromstudent,course,sc
wherestudent.sno=sc.snoando=oandcname='
数据库系统'
10.查询每个系的学生选修的1号课程的平均成绩,最高分,最低分,选课人数。
count(*)'
实验六多表查询
(二)
7、掌握子查询语句的一般格式。
8、熟练掌握子查询的各种方法。
11.查询不选1号课程的学生名字。
wheresnonotin(selectsnofromscwherecno='
12.查询至少被2个学生选修的课程的课程名。
selectcname
fromcourse
wherecnoin
(selectcno
fromsc
groupbycno
havingcount(*)>
=2)
13.查询计算机系(CS)选修了2门及以上课程的学生的学号。
wheresnoin(selectsnofromstudentwheresdept='
14.查询与“钱横”在同一个系学习的学生信息。
wheresname!
='
钱横'
andsdept=
(selectsdept
fromstudent
wheresname='
15.查询选修了课程名为“数学分析”的学生学号、姓名和所在系。
selectsno,sname,sdept
wheresnoin(selectsno
fromsc
wherecnoin(selectcno
fromcourse
wherecname='
数学分析'
))
16.查询同时选修了“1”课程和“2”课程的学生的姓名。
wheresnoin
(selectsno
wherecno='
andsnoin
(selectsno
fromsc
wherecno='
17.查询至少选修了3门课程的学生的姓名。
groupbysno
=3)
18.查询平均成绩在80分以上的学生的姓名。
havingavg(grade)>
80)
实验七视图
1.掌握视图定义方法和使用方法。
2.掌握对视图数据的增,删,改操作。
19.创建计算机系(CS)的学生信息视图V_1。
createviewv_1
as
wheresdept='
20.建立计算机系(CS)选修了1号课程的学生信息视图V_2。
createviewv_2
ANDSNOIN(SELECTSNOFROMSCWHERECNO='
21.建立计算机系选修了1号课程且成绩在90分以上的学生的视图V_3。
createviewv_3
ANDSNOIN
(SELECTSNOFROMSCWHERECNO='
ANDGRADE>
90)
22.定义一个反映学生学号,姓名,出生年份的视图V_4。
CREATEVIEWV_4(学号,姓名,出生年份)
AS
SELECTSNO,SNAME,YEAR(GETDATE())-SAGE
FROMSTUDENT
23.将学生的学号及其平均成绩定义为一个视图V_5。
CREATEVIEWV_5(学号,平均成绩)
SELECTSNO,AVG(GRADE)
FROMSC
GROUPBYSNO
24.创建计算机专业(CS)学生的平均成绩视图V_6,包括学号和平均成绩.
CREATEVIEWV_6(学号,平均成绩)
WHERESNOIN(SELECTSNOFROMSTUDENTWHERESDEPT='
25.通过V_2视图查询计算机系选修了1号课程的学生姓名,性别,年龄。
SELECTSNO,SNAME,SAGE
FROMV_2
26.在V_5视图中查询平均成绩在90分以上的学生学号和平均成绩。
SELECT学号,平均成绩
FROMV_5
WHERE平均成绩>
27.将计算机系学生视图V_1中学号98002的学生姓名改为“刘辰”。
UPDATEV_1
SETSNAME='
刘辰'
WHERESNO='
98002'
28.向计算机系学生视图V_1中插入一个新的学生记录:
95029,赵新,20岁
INSERTINTOV_1(SNO,SNAME,SAGE,SDEPT)
VALUES('
95029'
赵新'
20,'
29.删除视图V_1中学号为95029的记录。
DELETEV_1
实验八索引
9、掌握索引的类型
10、掌握使用界面方式和SQL语句创建索引,查看索引,删除索引的方法。
分别使用界面方式和SQL语句完成下面题。
1、为student表的sname列创建索引。
Createindexind_snameonstudent(sname)
2、为student表按sname的升序,sage的降序建立索引。
Createindexind_studentonstudent(snameasc,sgaedesc)
3、根据course表的cname列降序创建唯一索引。
Createuniqueindexind_cnameoncourse(cname)
4、根据student表中sno列创建唯一聚集索引。
Createuniqueclusteredindexind_snoonstudent(sno)
5、删除course表cname列上的索引。
Dropindexame
6、使用存储过程查看student表上所有的索引。
ExecSp_helpindexstudent