北京科技大学数据库技术及应用报告Word下载.docx
- 文档编号:21374874
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:35
- 大小:1.12MB
北京科技大学数据库技术及应用报告Word下载.docx
《北京科技大学数据库技术及应用报告Word下载.docx》由会员分享,可在线阅读,更多相关《北京科技大学数据库技术及应用报告Word下载.docx(35页珍藏版)》请在冰豆网上搜索。
U'
,点击执行按钮,下方会显示出pubs
数据库所有类型为U的数据库对象,也就是所有的用户数据表,如图123所示。
图123显示pubs数据库中的用户数据表
(2)使用企业管理器,查看pubs数据库中authors表与employee表的数据信息。
在查询
分析器中输入以下命令,观察结果。
USEpubs
GO
SELECT*FROMauthors
(3)使用企业管理器中的“创建数据库向导”创建一个数据库,名称为Test。
第一步:
依次打开“开始”、“程序”、“MicrosoftSQLServer2000”和“企业管理器”。
第二步:
在企业管理器界面,选择“工具”菜单栏下的“向导”,展开“选择向导”界
面中的“数据库”,选择“创建数据库向导”。
第三步:
在“数据库名称”文本框中输入Test,其余所有界面中都选默认值。
创建完毕
后,在企业管理器中比较Test数据库和Moedl数据库。
(4)在企业管理器中,右击Test数据库,在弹出菜单中选择“属性”。
在弹出的对话
框中的“数据文件”选项卡中修改“分配的空间”为2MB,“最大文件大小”为10MB。
在
“事务日志”选项卡中修改日志文件每次填满时递增2MB。
(5)在企业管理器中删除Test数据库。
(6)分别使用企业管理器和CREATEDATABASE语句创建一个学生选课数据库,名
称为StuMIS。
该库包括一个主数据文件,逻辑名为stuMIS_data,物理名为c:
\programfiles\
microsoftsqlserver\mssql\data\stuMIS_mdf,初始大小为10MB,最大容量为50MB,文件增量
以5MB增长。
事务日志文件为StuMIS_log.ldf,存储在上述路径下,初始大小为5MB,最
大为25MB,文件增量以5MB增长。
(7)在查询分析器中,使用系统存储过程sp_helpdb来查看系统中的数据库信息,执
行以下语句,并观察结果。
EXECsp_helpdb
EXECsp_helpdbStuMIS
(8)在查询分析器中使用ALTDERDATABASE命令修改数据库的设置,修改主数据
文件的初始大小为5MB,最大容量为30MB,文件增量以10%增长。
(9)在查询分析器中为StuMIS数据库增加一个辅助数据文件,命名为Stu_Data2,初
始大小、最大容量、增长速率等分别为1M、5M、10%。
(10)在查询分析器中删除StuMIS数据库。
实验二内容:
Selectname,xtypefromsysobjectswherextype=’U’
usepubs
go
select*fromauthors
CreatedatabaseStuMIS
ONPrimary
(name=stuMIS_data,
filename='
C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\data\stuMIS_data.mdf'
size=10MB,
maxsize=50,
filegrowth=5)
LOGON
(name=StuMIS_log,
\ProgramFiles\MicrosoftSQLServer\MSSQL\data\tuMIS_log.ldf'
size=5,
MAXSIZE=25,
EXECsp_helpdb
EXECsp_helpdbStuMIS
修改的主数据文件大小不能小于先前大小,此处修改大小为15MB
AlterdatabaseStuMIS
Modifyfile(name=stuMIS_data,SIZE=15,MAXSIZE=30,FILEGROWTH=10%)
alterdatabaseStuMIS
addfile(name=Stu_Data2,filename='
\ProgramFiles\MicrosoftSQLServer\MSSQL\data\tuMIS_log.ndf'
SIZE=1,MAXSIZE=5,FILEGROWTH=10%)
DROPdatabasestuMIS
实验三创建管理数据表和索引
代码:
createdatabaseStuMIS
ON
(
name=stuMIS_data,
filename='
c:
\programfiles\microsoftsqlserver\mssql\data\stuMIS_mdf'
size=10,
maxsize=50,
filegrowth=5
)
name=StuMIS_log,
\programfiles\microsoftsqlserver\mssql\data\stuMIS_ldf'
size=5,
maxsize=25,
createtablestudent
stunochar(5)primarykey,
stunamechar(8)notnull,
stuagesmallint,
stusexchar
(2),
studeptvarchar(16)
createtablecourse
counochar
(2)primarykey,
counamevarchar(10),
coupointsmallint
createtablechoose
stunochar(5),
counochar
(2),
scorenumeric(5,1),
primarykey(stuno,couno)
altertablechoose
addconstraintfk_stunoforeignkey(stuno)referencesstudent(stuno)
addconstraintfk_counoforeignkey(couno)referencescourse(couno)
altertablechoose
addconstraintck_scorecheck(scorebetween1and100)
代码
insertintochoosevalues('
95001'
'
01'
85'
04'
90'
95002'
70'
50'
95003'
02'
80'
95004'
95'
65'
95005'
03'
54'
95006'
81'
78'
86'
95007'
89'
82'
77'
95008'
67'
73'
updatechoosesetscore=1.1*scorewherecouno='
updatestudentsetstuage=1+stuage
dropconstraintfk_stuno
deletefromstudentwherestuno='
绑定默认性别
createdefaultdefault_sexas'
男'
execsp_bindefaultdefault_sex,'
student.stusex'
createdefaultdefault_scoreas'
0<
=default_score<
=100'
execsp_bindefaultdefault_score,'
choose.score'
execsp_unbindefault'
dropdefaultdefault_score
(8)索引的创建与管理
建立索引
createnonclusteredindexidx_scoreonchoose(scoredesc)
第四章查询与视图
1)查询所有学生的基本信息,并按年龄升序排列。
2)查询女同学的信息和女同学的人数。
selectstusex,count(*)as人数fromstudentgroupbystusex
selectstuno,stuname,stusex,stuage,studept
fromstudent
wherestusex='
女'
wherestunamelike'
王%'
selectstudent.stuname,course.couname,choose.score
fromstudent,course,choose
wherestudent.stuno=choose.stunoandchoose.couno=course.couno
selectstudent.stuname
fromstudent,choose
wherestudent.stuno=choose.stunoandchoose.score<
60
selectchoose.stuno,choose.couno
fromchoose
wherechoose.scoreisnull
wherestudent.studept=(selectstudeptfromstudentwherestuname='
孙东方'
selectstudent.stuno,student.stuname
wherestudent.stuno=choose.stunoandchoose.couno=
(selectcounofromcoursewherecourse.couname='
英语'
9)使用统计函数计算选课成绩表中每门课的最高分、最低分和平均分。
selectcouno,max(score)asmaxmum,min(score)asminmum,avg(score)asaverange
groupbychoose.couno
10)查询各门课程的选课人数。
selectcouno,count(stuno)asnumber
14)查询选修了“数据库”课程的学生信息。
selectstuname,stusex,stuage,studept
数据库'
(2)视图操作
1)创建视图v_c,显示“计算机”系学生基本情况。
createviewMC
as
wherestudept='
计算机'
2)创建视图v1,查看“计算机”系的所有学生及成绩情况的视图,要求显示学生的
学号、姓名、所在系、课程名称、课程的成绩;
然后再利用查询分析器删除视图v1。
createviewv1
selectstudent.stuno,stuname,stusex,stuage,studept,course.couname,choose.score
andstudent.stuno=choose.stunoandchoose.couno=course.couno
dropviewmc
3)创建视图v2,显示“语言文化”未过的学生的信息。
wherestudent.stuno=choose.stunoandchoose.couno=course.counoandchoose.score<
60andcouname='
语言文化'
4)创建视图v3,显示各位学生选修课程的门数、平均成绩、学号和姓名。
createviewv3
selectstudent.stuname,student.stuno,count(choose.stuno)asnumber,avg(score)asaverage
fromchoose,student
wherestudent.stuno=choose.stuno
groupbystudent.stuname,student.stuno
5)从视图v1中查询选修了“英语”课程的学生的学号,姓名,所在系,课程成绩;
selectstuno,stuname,studept,couname,scorefromv1
8)在视图v_c中,添加一条新记录:
95010,李大伟,20,男,计算机。
insertintov_cvalues(95010,'
李大伟'
20,'
10)在视图v1中,删除学号为95001的学生的记录,可否实现?
原因是什么?
消息4405,级别16,状态1,第1行
视图或函数'
v1'
不可更新,因为修改会影响多个基表。
实验5存储过程、触发器与用户自定义函
(1)了解存储过程的概念和作用,理解触发器的触发原理和类型。
(2)掌握使用企业管理器和TSQL语句创建存储过程的方法。
(3)掌握执行、查看、修改和删除存储过程的方法。
(4)掌握创建触发器的方法和利用触发器维护数据完整性的方法。
(5)了解用户自定义函数的定义和使用方法。
(1)使用TSQL语句创建和执行存储过程
1)在数据库StuMIS中创建存储过程proc_score,用于查询所有选修“04”号课程的学
生成绩信息。
提示:
创建和执行不带参数的存储过程。
2)在数据库StuMIS中创建存储过程proc_insert,用于向学生表中插入新记录。
创建和执行带输入参数的存储过程
3)在数据库StuMIS中创建存储过程proc_list,列出指定课程的成绩排名表。
4)在数据库StuMIS中创建存储过程proc_avg,查询指定课程的平均分。
创建和执行带输入和输出参数的存储过程
(2)使用企业管理器和系统存储过程查看上述存储过程的定义文本、相关性及其它参
数信息。
(3)使用SQL语句修改存储过程proc_score,将其修改为查询选修其它课程的学生成
绩信息,并加密存储过程的定义。
(4)删除存储过程proc_score。
(5)首先新建一个与选修表结构相同的表,再为选修表创建一个INSERT触发器,当
选修表插入新数据时,在其副本表中保存新插入的输入。
USEStuMIS
创建存放副本的表
CREATETABLE选修副本
(学号char(5)NOTNULL,
课程号char
(2)NOTNULL,
成绩numeric(5,1),
PRIMARYKEY(学号,课程号))
创建INSERT触发器
CREATETRIGGERtri_insertON选修
FORINSERT
AS
IF@@ROWCOUNT<
>
0
BEGIN
INSERTINTO选修副本SELECT*FROMinserted
END
在查询分析其中输入如下语句来测试INSERT触发器:
INSERTINTO选修VALUES('
86)
(6)为学生表创建一个UPDATE触发器,当某位学生的学号改变时,级联更新选修
表中匹配记录的学号信息。
CREATETRIGGERtri_update_gradeON学生
FORUPDATE
DECLARE@oldsnochar(5),@newsnochar(5)
SELECT@oldsno=deleted.学号,@newsno=inserted.学号
FROMdeleted,inserted
WHEREdeleted.姓名=inserted.姓名
UPDATE选修SET学号=@newsnoWHERE学号=@oldsno
在查询分析其中输入如下语句来测试UPDATE触发器:
UPDATE学生SET学号='
WHERE学号='
95011'
(7)为学生表创建一个DELETE触发器,当某学生信息被删除时,将其在选修表中相
匹配的记录删除掉。
CREATETRIGGERtri_deleteON学生
FORDELETE
DECLARE@snochar(5)
SELECT@sno=deleted.学号FROMdeleted
DELETEFROM选修WHERE学号=@sno
DELETEFROM学生WHERE学号='
(8)请为课程表创建一个DELETE触发器,当删除门课程的信息时,将该门课程在
选修表中相匹配的成绩记录删除掉。
(9)请编写一个用户自定义标量函数:
在StuMIS数据库中,根据输入的学号,给出
该生选修课程的门数。
(10)请编写一个内嵌表值函数:
根据输入的课程号,输出选修这门课的学生姓名及其
取得的分数。
(1)使用T-SQL语句创建和执行存储过程
1)在数据库StuMIS中创建存储过程proc_score,用于查询所有选修“04”号课程的学
Createprocproc_score
as
selectstuno,couno,scorefromchoosewherecouno=04
proc_score
4)在数据库StuMIS中创建存储过程proc_avg,查询指定课程的平均分。
createprocproc_avg_1(@counochar
(2)='
sel
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京科技大学 数据库技术 应用 报告