数据库SQL语句实验报告.docx
- 文档编号:26462221
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:21
- 大小:74.68KB
数据库SQL语句实验报告.docx
《数据库SQL语句实验报告.docx》由会员分享,可在线阅读,更多相关《数据库SQL语句实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
数据库SQL语句实验报告
《数据库原理及应用》实验报告
SQL语句部分
总 成 绩:
实验一 熟悉SQLSERVER,数据定义实验
实验一成绩:
一、实验目得
1、 利用查询分析器创建数据库
2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作
二、实验步骤及内容
在以下实验中,使用学生—课程数据库,它描述了学生得基本信息、课程得基本信息及学生选修课程得信息.
1。
创建学生课程数据库
2。
创建学生关系表S :
学号
姓名
性别
年龄
所在系
Sno
Sname
Ssex
Sage
sdept
3。
创建课程关系表C :
课程号
课程名
先行课
学分
Cno
Cname
Cpno
ccredit
4.创建课程关系表SC:
学号
课程号
成绩
Sno
Cno
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。
三、实验结果:
1。
创建学生课程数据库
createdatabaseStudend;
2。
创建学生关系表S:
学号
姓名
性别
年龄
所在系
Sno
Sname
Ssex
Sage
sdept
create tableS
(
ﻩSnoCHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
SsexCHAR
(2),
ﻩSagesmallint,
Sdeptchar(20),
);
3.创建课程关系表C:
课程号
课程名
先行课
学分
Cno
Cname
Cpno
ccredit
createtableC
(
ﻩCnochar(4)primarykey,
Cname CHAR(40),
Cpnochar(4),
ﻩCcredit SMALLINT,
);
4。
创建课程关系表SC:
学号
课程号
成绩
Sno
Cno
grade
create tableSC
(
Snochar(9),
ﻩCnochar(4),
Gradesmallint,
);
5。
将以上创建表S、C、SC得SQL命令以、SQL文件得形式保存在磁盘上.
6、在表S上增加“出生日期"属性列.
altertableSaddSbirthdaydatetime;
7、删除表S得“年龄”属性列。
ﻩaltertable S dropcolumnSage;
8、删除S姓名列得唯一值约束。
altertableSdropUQ__S__7D78A4E7;
9、修改SC表成绩属性列为精确数字型。
altertableSCaltercolumnGradeint;
10、在表S上,按“Sno” 属性列得唯一值方式建立索引。
createuniqueindexStusnoonS(Sno);
11、删除表SC,利用磁盘上保存得、SQL文件重新创建表SC。
droptableSC;
12、创建教材P74页习题5中SPJ数据库中得四个关系:
S、P、J、SPJ.
实验二数据更新实验
实验二成绩:
一、实验目得
1、熟悉与掌握数据表中数据得插入、修改、删除操作与命令得使用
2、加深理解表得定义对数据更新得作用
二、实验步骤及内容
(一)利用查询分析器在表中插入数据
打开在实验一中建立得“学生课程"数据库;
在“SCDB”数据库中得student、course、sc表中插入数据;
student表得内容:
SNOSNAME SSEXSAGE SDEPT
95001李勇 男 20CS
95002刘晨 女 19 IS
95003王敏 女 18 MA
course表得内容
CNO CNAMECPNOCREDIT
1 数据库 5 4
2 数学 NULL 2
3 信息系统1 4
4 操作系统NULL 3
5 数据处理NULL 2
sc表得内容
SNO CNO GRADE
95001 1 92
95001 265
950013 88
950022 90
950023 80
(二)修改表中得数据
在插入数据后得三张表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、删除整张表得数据,注意表之间得关系,保持一致性。
三、实验结果:
(一)利用查询分析器在表中插入数据
打开在实验一中建立得“学生课程”数据库;
在“SCDB”数据库中得student、course、sc表中插入数据;
student表得内容:
SNOSNAMESSEX SAGE SDEPT
95001李勇男 20 CS
95002刘晨 女 19 IS
95003王敏 女 18 MA
course表得内容
CNO CNAME CPNO CREDIT
1 数据库 5 4
2 数学 NULL 2
3 信息系统14
4操作系统NULL 3
5数据处理NULL2
sc表得内容
SNO CNO GRADE
95001 1 92
950012 65
95001 3 88
95002 2 90
95002 3 80
insert
intoS(Sno,Sname,Ssex,Sage,Sdept)
values(’95001','李勇','男',20,'CS');
insert
intoS(Sno,Sname,Ssex,Sage,Sdept)
values('95002’,’刘晨’,’女’,19,’IS’);
insert
intoS(Sno,Sname,Ssex,Sage,Sdept)
values(’95003','王敏','男’,20,’CS’);
select*
fromS;
insert
intoC(Cno,Cname,Cpno,Ccredit)
values('1’,'数据库’,'5',4);
insert
into C(Cno,Cname,Cpno,Ccredit)
values('2’,'数学’,NULL,2);
insert
into C(Cno,Cname,Cpno,Ccredit)
values('3’,’信息系统’,’1',4);
insert
into C(Cno,Cname,Cpno,Ccredit)
values(’4',’操作系统’,NULL,3);
insert
intoC(Cno,Cname,Cpno,Ccredit)
values(’5',’数据处理’,NULL,2);
insert
into SC(Sno,Cno,Grade)
values(’95001’,'1’,92);
insert
intoSC(Sno,Cno,Grade)
values(’95001',’2',65);
insert
intoSC(Sno,Cno,Grade)
values(’95001','3',88);
insert
intoSC(Sno,Cno,Grade)
values(’95002’,'2’,90);
insert
intoSC(Sno,Cno,Grade)
values('95002','3',80);
(二)修改表中得数据
在插入数据后得三张表S、C、SC中进行相关得更新操作:
1、将student表中‘李勇’得名字改为‘李明’;
update S
setSname=’李明’
whereSno=’95001';
2、将student表中‘王敏’得年龄改为20岁;
update S
setSage=20
whereSname='王敏’;
3、将所有学生得年龄增加1岁;
updateS
set Sage=Sage+1;
4、修改学生得学号‘95002'为‘95005’,注意表之间得关系,保持一致性;
updateS
setSno=’95005’
whereSno=’95002’;
5、把选修了“2”号课程,且成绩低于70分得成绩提高5%;
update SC
set Grade=Grade*1、05
where Cno='2’andGrade〈70;
6、将“CS”系全体学生得成绩置零;
updateSC
setGrade=0
where’CS’=(selectSdept fromSwhere S、Sno=SC、Sno);
(三)删除表中得数据
1、把选修了“2”号课程,且成绩低于70分得学生得成绩删除掉;
deletefromSC
whereCno='2’andGrade<70;
2、删除学号为“95003”得相关信息;
delete fromS
where Sno='95003';
3、删除"IS”系选修了"2”号课程得选课记录;
delete from SC
where Cno='2’andSnoin (selectSno fromSwhereSdept='IS’);
4、删除“CS"系得全体学生得选课记录;
deletefromSC
where’CS'=(selectSdeptfromSwhereS、Sno=SC、Sno);
5、删除整张表得数据,注意表之间得关系,保持一致性.
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分以上得学生,结果按系分组,并按平均成绩得升序排列。
四、实验结果:
1、查询学生得基本信息;
select*fromS;
2、查询“CS”系学生得基本信息;
select*
fromS
whereSdept='CS’;
3、查询“CS”系学生年龄不在19到21之间得学生得学号、姓名;
select Sno,Sname
from S
wheresdept='CS’ AND Sagenotbetween19 and 21;
4、找出最大年龄;
select max(Sage)
fromS;
5、找出“CS"系年龄最大得学生,显示其学号、姓名;
select Sno,Sname
fromS
whereSage=
(selectmax(Sage)
ﻩfromS
ﻩwhereSdept='CS’);
7、统计“CS”系学生得人数;
SELECTSdept,count(*)
fromS
whereSdept=’CS’
GROUPBYSdept;
8、统计各系学生得人数,结果按升序排列;
SELECTSdept,COUNT(*)
FROMS
group by sdept;
9、按系统计各系学生得平均年龄,结果按降序排列;
selectSdept,avg(Sage)
fromS
groupbySdept
orderby avg(Sage) desc;
10、查询每门课程得课程名;
select Cname
fromC
group by Cname;
10、统计无先修课得课程得学分总数;
select sum(Ccredit)
fromC
where Cpnoisnull;
11、查询选修了“1”或“2"号课程得学生学号与姓名;
select S、Sno,Sname
fromS,SC
WHERES、Sno=SC、SnoAND(Cno='1’orCno='2');
12、查询选修了“1"与“2"号课程得学生学号与姓名;
select S、Sno,Sname
fromSC,S
whereCno=’1’AND S、Sno=SC、SnoandSC、SnoIN
(selectSno
fromSC
ﻩwhereCno=’2’);
13、查询选修了课程名为“数据库系统”且成绩在60分以下得学生得学号、姓名与成绩;
selectS、Sno,Sname,Grade
from S,SC,C
where SC、Sno=S、SnoandCo=SCoand Cname=’数据库'andGrade〈60;
14、查询每位学生选修了课程得学生信息(显示:
学号,姓名,课程号,课程名,成绩);
selectS、Sno,Sname,Co,Cname,Grade
fromSC,C,S
WHERES、Sno=SC、Snoand Co=SCo;
15、查询没有选修课程得学生得基本信息;
select*
fromS
WHERE notexists
(select *
fromSC
ﻩWHERE S、Sno=Sno);
16、查询选修了3门以上课程得学生学号;
selectSno
fromSC
group by Sno
havingcount(*)>3;
17、查询选修课程成绩至少有一门在80分以上得学生学号;
selectdistinctS、Sno
fromS,SC
WHERE S、Sno=SC、Snoand Grade>80;
18、查询选修课程平均成绩在80分以上得学生学号;
selectdistinctS、Sno
from S,SC
whereSC、Sno=S、SnoandSC、Snoin
(selectSno
fromSC
GROUP BYSno
ﻩhavingavg(Grade)>80);
19、(选做)SC
20、(选做)找出平均成绩在85分以上得学生,结果按系分组,并按平均成绩得升序排列。
实验四 视图得定义、使用实验
实验四成绩:
一、实验目得
熟悉与掌握对数据表中视图得定义操作与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','YAN XI’,19,’IS'),并查询结果;
9、通过视图V_IS,新增加一个学生记录(’S0013’,’YAN XI’,19,'MA’),并查询结果;
10、通过视图V_IS,删除学号为“S0012”与“95003"得学生信息,并查询结果;
四、实验结果
以students,courses,sc表为基础完成以下视图定义(使用SQL与企业管理器两种方法)及使用
1、定义“IS”系学生基本情况视图V_IS 并查询结果;
createviewV_IS
as
select*
fromS
whereSdept='IS’;
2、将students,courses,sc表中学生得学号,姓名,课程号,课程名,成绩定义为视图V_S_C_G并查询结果;
createviewV_S_C_G
as
selectS、Sno,Sname,Co,Cname,Grade
from S,SC,C
whereS、Sno=SC、SnoandSCo=Co;
3、将各系学生人数,平均年龄定义为视图V_NUM_AVG并查询结果;
create view V_NUM_AVG(Sdept,Sdept_count,Sage_avg)
as
selectSdept,count(Sdept),avg(Sage)
fromS
groupby Sdept;
4、定义一个反映学生出生年份得视图V_YEAR并查询结果;
createview V_YEAR(Sname,Sbirthday)
as
selectSname,2013-Sage
fromS;
5、将各位学生选修课程得门数及平均成绩定义为视图V_AVG_S_G并查询结果;
createviewV_AVG_S_G(Sno,Cno_count,Grade_avg)
as
select Sno,count(Cno),avg(Grade)
fromSC
group by Sno;
6、建立视图V_AVG平均成绩为90分以上得学生学号;
createviewV_AVG(Grade_over90_Sno)
as
selectS、Sno
fromS,SC
whereSC、Sno=S、SnoandSC、Sno in
ﻩ(select Sno
ﻩfromSC
ﻩﻩgroup bySno
ﻩﻩhaving avg(Grade)〉90);
7、通过视图V_IS,分别将学号为“95001”与“95004”得学生姓名更改为“S0001",”S0004”并查询结果;
updateV_IS
setSname=’王明’
whereSno='95001’;
updateV_IS
setSname='王强'
whereSno='95002';
8、通过视图V_IS,新增加一个学生记录 (’S0012’,’YANXI',19,’IS’),并查询结果;
insert
into V_IS(Sno,Sname,Sage,Sdept)
VALUES(’95005','宋明','19’,’IS’);
9、通过视图V_IS,新增加一个学生记录 (’S0013’,'YAN XI’,19,’MA’),并查询结果;
insert
intoV_IS(Sno,Sname,Sage,Sdept)
VALUES('95006’,’王芳’,'19’,'MA');
10、通过视图V_IS,删除学号为“S0012”与“95003”得学生信息,并查询结果;
delete
fromV_IS
whereSno=’95005' orSno='95006';
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 SQL 语句 实验 报告