数据库SQL语句实验报告Word文档下载推荐.docx
《数据库SQL语句实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库SQL语句实验报告Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
ccredit
4.创建课程关系表SC:
成绩
grade
5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
12、创建教材P74页习题5中SPJ数据库中的四个关系:
S、P、J、SPJ。
三、实验结果:
createdatabaseStudend;
createtableS
(
SnoCHAR(9)PRIMARYKEY,
SnameCHAR(20)UNIQUE,
SsexCHAR
(2),
Sagesmallint,
Sdeptchar(20),
);
createtableC
Cnochar(4)primarykey,
CnameCHAR(40),
Cpnochar(4),
CcreditSMALLINT,
createtableSC
Snochar(9),
Cnochar(4),
Gradesmallint,
altertableSaddSbirthdaydatetime;
altertableSdropcolumnSage;
altertableSdropUQ__S__7D78A4E7;
altertableSCaltercolumnGradeint;
createuniqueindexStusnoonS(Sno);
droptableSC;
实验二数据更新实验
实验二成绩:
1、熟悉和掌握数据表中数据的插入、修改、删除操作和命令的使用
2、加深理解表的定义对数据更新的作用
(一)利用查询分析器在表中插入数据
打开在实验一中建立的“学生课程”数据库;
在“SCDB”数据库中的student、course、sc表中插入数据;
student表的内容:
SNOSNAMESSEXSAGESDEPT
95001李勇男20CS
95002刘晨女19IS
95003王敏女18MA
course表的内容
CNOCNAMECPNOCREDIT
1数据库54
2数学NULL2
3信息系统14
4操作系统NULL3
5数据处理NULL2
sc表的内容
SNOCNOGRADE
95001192
95001265
95001388
95002290
95002380
(二)修改表中的数据
在插入数据后的三张表S、C、SC中进行相关的更新操作:
1、将student表中‘李勇’的名字改为‘李明’;
2、将student表中‘王敏’的年龄改为20岁;
3、将所有学生的年龄增加1岁;
4、修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;
5、把选修了“2”号课程,且成绩低于70分的成绩提高5%;
6、将“CS”系全体学生的成绩置零;
(三)删除表中的数据
1、把选修了“2”号课程,且成绩低于70分的学生的成绩删除掉;
2、删除学号为“95003”的相关信息;
3、删除"
IS"
系选修了"
2"
号课程的选课记录;
4、删除“CS”系的全体学生的选课记录;
5、删除整张表的数据,注意表之间的关系,保持一致性。
insert
intoS(Sno,Sname,Ssex,Sage,Sdept)
values('
95001'
'
李勇'
男'
20,'
CS'
95002'
刘晨'
女'
19,'
IS'
95003'
王敏'
select*
fromS;
intoC(Cno,Cname,Cpno,Ccredit)
1'
数据库'
5'
4);
2'
数学'
NULL,2);
3'
信息系统'
4'
操作系统'
NULL,3);
数据处理'
intoSC(Sno,Cno,Grade)
92);
65);
88);
90);
intoSC(Sno,Cno,Grade)
80);
1、将student表中‘李勇’的名字改为‘李明’;
updateS
setSname='
李明'
whereSno='
;
2、将student表中‘王敏’的年龄改为20岁;
setSage=20
whereSname='
3、将所有学生的年龄增加1岁;
updateS
setSage=Sage+1;
4、修改学生的学号‘95002’为‘95005’,注意表之间的关系,保持一致性;
setSno='
95005'
5、把选修了“2”号课程,且成绩低于70分的成绩提高5%;
updateSC
setGrade=Grade*
whereCno='
andGrade<
70;
6、
将“CS”系全体学生的成绩置零;
setGrade=0
where'
=(selectSdeptfromSwhere=;
deletefromSC
deletefromS
andSnoin(selectSnofromSwhereSdept='
deletefromSC;
实验三数据查询实验
实验三成绩:
熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL语句的各种形式;
加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)
二、实验方法及步骤
1.在表student,course,sc上进行简单查询;
2.在表student,course,sc上进行连接查询;
3.在表student,course,sc上进行嵌套查询;
4.使用聚合函数的查询;
5.对数据的分组查询;
6.对数据的排序查询。
三、实验内容
在表student,course,sc上完成以下查询:
1、查询学生的基本信息;
2、查询“CS”系学生的基本信息;
3、查询“CS”系学生年龄不在19到21之间的学生的学号、姓名;
4、找出最大年龄;
5、找出“CS”系年龄最大的学生,显示其学号、姓名;
6、统计“CS”系学生的人数;
7、统计各系学生的人数,结果按升序排列;
8、按系统计各系学生的平均年龄,结果按降序排列;
9、查询每门课程的课程名;
10、统计无先修课的课程的学分总数;
11、查询选修了“1”或“2”号课程的学生学号和姓名;
12、查询选修了“1”和“2”号课程的学生学号和姓名;
13、查询选修了课程名为“数据库系统”且成绩在60分以下的学生的学号、姓名和成绩;
14、查询每位学生选修了课程的学生信息(显示:
学号,姓名,课程号,课程名,成绩);
15、查询没有选修课程的学生的基本信息;
16、查询选修了3门以上课程的学生学号;
17、查询选修课程成绩至少有一门在80分以上的学生学号;
18、查询选修课程平均成绩在80分以上的学生学号;
19、(选做)统计每位学生选修课程的门数、学分及其平均成绩;
20、(选做)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列。
四、实验结果:
select*fromS;
fromS
whereSdept='
selectSno,Sname
wheresdept='
ANDSagenotbetween19and21;
selectmax(Sage)
whereSage=
(selectmax(Sage)
fromS
whereSdept='
7、统计“CS”系学生的人数;
SELECTSdept,count(*)
GROUPBYSdept;
8、统计各系学生的人数,结果按升序排列;
SELECTSdept,COUNT(*)
FROMS
groupbysdept;
9、按系统计各系学生的平均年龄,结果按降序排列;
selectSdept,avg(Sage)
groupbySdept
orderbyavg(Sage)desc;
10、
查询每门课程的课程名;
selectCname
fromC
groupbyCname;
selectsum(Ccredit)
whereCpnoisnull;
select,Sname
fromS,SC
WHERE=AND(Cno='
orCno='
fromSC,S
AND=andIN
(selectSno
fromSC
whereCno='
select,Sname,Grade
fromS,SC,C
where=and=andCname='
60;
select,Sname,,Cname,Grade
fromSC,C,S
WHERE=and=;
WHEREnotexists
(select*
WHERE=Sno);
selectSno
fromSC
groupbySno
havingcount(*)>
3;
selectdistinct
WHERE=andGrade>
80;
where=andin
GROUPBYSno
havingavg(Grade)>
80);
19、(选做)SC
实验四视图的定义、使用实验
实验四成绩:
熟悉和掌握对数据表中视图的定义操作和SQL命令的使用;
熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;
熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系;
学习灵活熟练的进行视图的操作,认识视图的作用;
1.视图的定义
2.视图的查询
3.视图的修改
三、实验内容:
以students,courses,sc表为基础完成以下视图定义(使用SQL和企业管理器两种方法)及使用
1.定义“IS”系学生基本情况视图V_IS并查询结果;
2.将students,courses,sc表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;
3.将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果;
4.定义一个反映学生出生年份的视图V_YEAR并查询结果;
5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G并查询结果;
6.建立视图V_AVG平均成绩为90分以上的学生学号;
7.通过视图V_IS,分别将学号为“95001”和“95004”的学生姓名更改为“S0001”,”S0004”并查询结果;
8.通过视图V_IS,新增加一个学生记录(’S0012’,’YANXI’,19,’IS’),并查询结果;
9.通过视图V_IS,新增加一个学生记录(’S0013’,’YANXI’,19,’MA’),并查询结果;
10.通过视图V_IS,删除学号为“S0012”和“95003”的学生信息,并查询结果;
四、实验结果
createviewV_IS
as
fromS
createviewV_S_C_G
select,Sname,,Cname,Grade
where=and=;
createviewV_NUM_AVG(Sdept,Sdept_count,Sage_avg)
selectSdept,count(Sdept),avg(Sage)
groupbySdept;
createviewV_YEAR(Sname,Sbirthday)
selectSname,2013-Sage
createviewV_AVG_S_G(Sno,Cno_count,Grade_avg)
selectSno,count(Cno),avg(Grade)
groupbySno;
createviewV_AVG(Grade_over90_Sno)
select
(selectSno
fromSC
groupbySno
havingavg(Grade)>
90);
updateV_IS
王明'
王强'
intoV_IS(Sno,Sname,Sage,Sdept)
VALUES('
宋明'
19'
95006'
王芳'
MA'
delete
fromV_IS
orSno='