数据库上机题汇总.docx
- 文档编号:9346149
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:18
- 大小:20.07KB
数据库上机题汇总.docx
《数据库上机题汇总.docx》由会员分享,可在线阅读,更多相关《数据库上机题汇总.docx(18页珍藏版)》请在冰豆网上搜索。
数据库上机题汇总
实验二使用SQL语句创建和修改表
系专业班级
学号姓名成绩:
实验目的:
1.掌握使用SQL语句创建数据库。
2.掌握使用SQL语句创建数据表,创建各种完整性约束,修改表的结构。
3.掌握使用SQL语句修改表中的记录值。
实验内容:
一、使用SQL语句完成下列题。
1、创建一个名称为JXGL的数据库,要求:
(1)将主数据文件JXGL.mdf放置在c:
\DBF文件夹中,其文件大小自动增长为按5mb增长。
(2)将事务日志文件JXGL_log.ldf放置在C:
\DBF文件夹中,其文件大小自动增长为按1mb增长。
在c盘创建DBF文件夹。
createdatabaseJXGL
on
(name='JXGL_data',
filename='c:
\DBF\JXGL.mdf',
filegrowth=5mb
)
logon
(name='JXGL_log',
filename='c:
\DBF\JXGL_log.ldf',
filegrowth=1mb)
2、在JXGL数据库中创建下列表。
●学生表Student,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:
Student(Sno,Sname,Ssex,Sage,Sdept)
其中主码为Sno。
姓名取值唯一,性别取值为男或女,默认为男。
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。
Altertablestudent
Altercolumnsagesmallint
5、删除学生姓名必须取唯一值的约束。
Altertablestudent
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。
Updatesc
Setgrade=grade-5
Wherecno=‘2’
实验三单表查询
(一)
系专业班级
学号姓名成绩:
实验目的:
1、掌握投影查询。
2、掌握选择查询。
实验内容:
对JXGL数据库进行查询。
1、查询全体学生的学号与姓名。
selectsno,sname
fromstudent
2、查询全体学生的姓名、学号、所在系。
selectsname,sno,sdept
fromstudent
3、查询全体学生的详细记录。
select*
fromstudent
4、查全体学生的姓名及其出生年份。
selectsname,year(getdate())-sage'出生年份'
fromstudent
5、查询全体学生的姓名、出生年份和所在系,要求用小写字母表示所有系名。
selectsname,year(getdate())-sage'出生年份',lower(sdept)'sdept'
fromstudent
6、查询选修了课程的学生学号。
selectdistinctsno
fromsc
7、查询所有年龄在20岁以下的学生姓名及其年龄。
selectsname,sage
fromstudent
wheresage<20
8、查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
Selectsname,sdept,sage
Fromstudent
Wheresagebetween20and23
9、查询年龄不在20~23岁之间的学生姓名、系别和年龄。
Selectsname,sdept,sage
Fromstudent
Wheresagenotbetween20and23
10、查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
Selectsname,ssex
Fromstudent
Wheresdeptin(‘IS’,’MA’,’CS’)
11、查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
Selectsname,ssex
Fromstudent
WheresdeptNOTin(‘IS’,’MA’,’CS’)
12、查询学号为98001的学生的详细情况。
Select*
Fromstudent
Wheresno=’98001’
13、查考试成绩大于等于90的学生的学号。
Selectsno
Fromsc
Wheregrade>=90
14、查询所有姓刘学生的姓名、学号和性别。
Selectsname,sno,ssex
Fromstudent
Wheresnamelike‘刘%’
15、查询姓"欧阳"且全名为三个汉字的学生的姓名。
Selectsname
Fromstudent
Wheresnamelike‘欧阳_’
16、查询名字中第2个字为"阳"字的学生的姓名和学号。
Selectsname,sno
Fromstudent
Wheresnamelike‘_阳%’
17、查询所有不姓刘的学生姓名。
Selectsname,sno,ssex
Fromstudent
Wheresnamenotlike‘刘%’
18、某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
Selectsno,cno
Fromsc
Wheregradeisnull
19、查所有有成绩的学生学号和课程号。
Selectsno,cno
Fromsc
Wheregradeisnotnull
实验四单表查询
(二)
系专业班级
学号姓名成绩:
实验目的:
3、掌握使用集函数的单表查询。
4、掌握对查询结果排序与分组。
实验内容:
对JXGL数据库进行查询。
1、查询学生总人数。
selectcount(*)'总人数'
fromstudent
2、查询选修了课程的学生人数。
selectcount(distinctsno)'人数'
fromsc
3、计算1号课程的学生平均成绩。
selectavg(grade)'平均分'
fromsc
wherecno='1'
4、查询选修1号课程的学生最高分数。
selectmax(grade)'最高分'
fromsc
wherecno='1'
5、计算选修1号课程的学生人数、最高成绩、最低成绩及平均成绩。
selectcount(*)'人数',max(grade)'最高分',min(grade)'最低分',avg(grade)'平均分'
fromsc
wherecno='1'
6、求各个课程号及相应的选课人数。
selectcno,count(*)'选课人数'
fromsc
groupbycno
7、查询选修了3门以上课程的学生学号。
selectsno
fromsc
groupbysno
havingcount(*)>3
8、查询有3门以上课程是90分以上的学生的学号。
selectsno
fromsc
wheregrade>90
groupbysno
havingcount(*)>3
9、查询各专业的专业名及学生人数。
selectsdept,COUNT(*)'学生人数'
fromstudent
groupbysdept
10、查询平均成绩在80分以上的学生的学号及平均成绩
selectsno,AVG(grade)as'平均成绩'
fromsc
groupbysno
havingAVG(grade)>80
11、查询至少有2个人选修的课程的课程号,选课人数。
、
selectcno,COUNT(*)'选课人数'
fromsc
groupbycno
havingCOUNT(*)>=2
12、查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
selectsno,grade
fromsc
wherecno='3'
orderbygradedesc
13、查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
select*
fromstudent
orderbysdeptasc,sagedesc
实验五多表查询
(一)
系名专业及班级
学号姓名成绩:
实验目的:
5、掌握连接查询的一般格式。
6、熟练掌握连接查询的各种方法。
实验内容:
对JXGL数据库进行查询。
1.查询选修2号课程的学生名字。
selectsname
fromstudent,sc
wherestudent.sno=sc.snoandcno='2'
2.查询选修了这样课程的学生学号,其直接先行课是5号课程。
selectsno
fromsc,course
whereo=oandcpno='5'
3.查询选修的课程成绩为90分以上的学生姓名与课程名和成绩。
selectsname,cname,grade
fromstudent,sc,course
wherestudent.sno=sc.snoando=o
andgrade>90
4.查询每一门课的间接先修课(即先修课的先修课)
selecto,b.cpno
fromcoursea,courseb
wherea.cpno=o
5.查询选修2号课程且成绩在90分以上的所有学生的学号、姓名。
selectstudent.sno,sname
fromstudent,sc
wherestudent.sno=sc.snoandcno='2'andgrade>90
6.查询每个学生的学号、姓名、选修的课程名及成绩。
selectstudent.sno,sname,cname,grade
fromstudent,sc,course
wherestudent.sno=sc.snoando=o
7.查询性别为男、课程成绩及格的学生信息及课程号、成绩。
selectstudent.*,cno,grade
fromstudent,sc
wherestudent.sno=sc.snoandgrade>=60andssex='男'
8.查询平均成绩大于85分的学号、姓名、平均成绩。
selectstudent.sno,sname,avg(grade)'平均分'
fromstudent,sc
wherestudent.sno=sc.sno
groupbystudent.sno,sname
havingavg(grade)>85
9.查询选修了数据库系统的学生的姓名及成绩。
selectsname,grade
fromstudent,course,sc
wherestudent.sno=sc.snoando=oandcname='数据库系统'
10.查询每个系的学生选修的1号课程的平均成绩,最高分,最低分,选课人数。
selectavg(grade)'平均成绩',max(grade)'最高分',min(grade)'最低分',count(*)'选课人数'
fromstudent,sc
wherestudent.sno=sc.snoandcno='1'
groupbysdept
实验六多表查询
(二)
系名专业及班级
学号姓名成绩:
实验目的:
7、掌握子查询语句的一般格式。
8、熟练掌握子查询的各种方法。
实验内容:
对JXGL数据库进行查询。
11.查询不选1号课程的学生名字。
selectsname
fromstudent
wheresnonotin(selectsnofromscwherecno='1')
12.查询至少被2个学生选修的课程的课程名。
selectcname
fromcourse
wherecnoin
(selectcno
fromsc
groupbycno
havingcount(*)>=2)
13.查询计算机系(CS)选修了2门及以上课程的学生的学号。
selectsno
fromsc
wheresnoin(selectsnofromstudentwheresdept='CS')
groupbysno
havingcount(*)>=2
14.查询与“钱横”在同一个系学习的学生信息。
select*
fromstudent
wheresname!
='钱横'andsdept=
(selectsdept
fromstudent
wheresname='钱横')
15.查询选修了课程名为“数学分析”的学生学号、姓名和所在系。
selectsno,sname,sdept
fromstudent
wheresnoin(selectsno
fromsc
wherecnoin(selectcno
fromcourse
wherecname='数学分析'))
16.查询同时选修了“1”课程和“2”课程的学生的姓名。
selectsname
fromstudent
wheresnoin
(selectsno
fromsc
wherecno='2'andsnoin
(selectsno
fromsc
wherecno='1'))
17.查询至少选修了3门课程的学生的姓名。
selectsname
fromstudent
wheresnoin
(selectsno
fromsc
groupbysno
havingcount(*)>=3)
18.查询平均成绩在80分以上的学生的姓名。
selectsname
fromstudent
wheresnoin
(selectsno
fromsc
groupbysno
havingavg(grade)>80)
实验七视图
系名专业及班级
学号姓名成绩:
实验目的:
1.掌握视图定义方法和使用方法。
2.掌握对视图数据的增,删,改操作。
实验内容:
19.创建计算机系(CS)的学生信息视图V_1。
createviewv_1
as
select*
fromstudent
wheresdept='CS'
20.建立计算机系(CS)选修了1号课程的学生信息视图V_2。
createviewv_2
as
select*
fromstudent
wheresdept='CS'ANDSNOIN(SELECTSNOFROMSCWHERECNO='1')
21.建立计算机系选修了1号课程且成绩在90分以上的学生的视图V_3。
createviewv_3
as
select*
fromstudent
wheresdept='CS'ANDSNOIN
(SELECTSNOFROMSCWHERECNO='1'ANDGRADE>90)
22.定义一个反映学生学号,姓名,出生年份的视图V_4。
CREATEVIEWV_4(学号,姓名,出生年份)
AS
SELECTSNO,SNAME,YEAR(GETDATE())-SAGE
FROMSTUDENT
23.将学生的学号及其平均成绩定义为一个视图V_5。
CREATEVIEWV_5(学号,平均成绩)
AS
SELECTSNO,AVG(GRADE)
FROMSC
GROUPBYSNO
24.创建计算机专业(CS)学生的平均成绩视图V_6,包括学号和平均成绩.
CREATEVIEWV_6(学号,平均成绩)
AS
SELECTSNO,AVG(GRADE)
FROMSC
WHERESNOIN(SELECTSNOFROMSTUDENTWHERESDEPT='CS')
GROUPBYSNO
25.通过V_2视图查询计算机系选修了1号课程的学生姓名,性别,年龄。
SELECTSNO,SNAME,SAGE
FROMV_2
26.在V_5视图中查询平均成绩在90分以上的学生学号和平均成绩。
SELECT学号,平均成绩
FROMV_5
WHERE平均成绩>90
27.将计算机系学生视图V_1中学号98002的学生姓名改为“刘辰”。
UPDATEV_1
SETSNAME='刘辰'
WHERESNO='98002'
28.向计算机系学生视图V_1中插入一个新的学生记录:
95029,赵新,20岁
INSERTINTOV_1(SNO,SNAME,SAGE,SDEPT)
VALUES('95029','赵新',20,'CS')
29.删除视图V_1中学号为95029的记录。
DELETEV_1
WHERESNO='95029'
实验八索引
实验目的:
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 上机 汇总