实验指导书.docx
《实验指导书.docx》由会员分享,可在线阅读,更多相关《实验指导书.docx(33页珍藏版)》请在冰豆网上搜索。
实验指导书
数据库原理
实验指导书
实验一认识和使用SQLServer2000管理工具不交报告2
实验二基本表的修改,数据的查询与更新,视图的管理6
实验三存储过程和触发器2
实验四VB连接SQL数据库的实例2
实验五系统集成4
上海工程技术大学电子电气工程学院计算机系
上海工程技术大学实验报告要求
实验课程:
年级:
实验成绩:
实验名称:
姓名:
实验编号:
学号:
实验日期:
指导教师:
组号:
实验时间:
一、实验目的
本次实验所涉及并要求掌握的知识点。
二、实验内容与实验步骤
实验内容、原理分析及具体实验步骤。
三、实验环境
实验所使用的器件、仪器设备名称及规格。
四、实验过程与分析
详细记录实验过程中发生的故障和问题,进行故障分析,说明故障排除的过程及方法。
根据具体实验,记录、整理相应数据表格、绘制曲线、波形图等。
五、实验结果总结
对实验结果进行分析,完成思考题目,总结实验的心得体会,并提出实验的改进意见。
六、附录
实验一认识和使用SQLServer2000管理工具
实验目的:
熟悉SQLServer2000的环境,掌握SQLServer服务管理器,SQLServer企业管理器,SQLServer查询分析器的使用。
学会如何创建数据库及其他数据库对象,灵活进行操作。
数据库基本表的创建,数据的增加
实验环境:
SQLServer2000
实验内容:
使用SQLServer2000企业管理器,按下列要求创建和修改用户数据库,要求如下:
1.数据库名为“Stu_C”。
2.数据库中包含一个基本数据文件,逻辑文件名为Stu_C_data,磁盘文件名为Stu_C_data.mdf,文件初始容量为10MB,最大容量为100MB,文件容量递增值为5%。
3.事务日志文件,逻辑文件名为Stu_C_log,磁盘文件名为Stu_C_log.ldf,文件初始容量为5MB,最大容量为30MB,文件容量递增值为2MB。
4.对数据库做如下修改:
添加一个辅助数据文件,逻辑文件名为Stu_C2_data,磁盘文件名为Stu_C2_data.ndf,文件初始容量为5MB,最大容量为50MB,文件容量递增值为5MB;将日志文件的最大容量增加为50MB,递增值改为3MB。
5.将Stu_C数据库更名为New_Stu_C。
6.删除New_Stu_C数据库。
7.通过表设计器来创建学生课程数据库Stu_C中学生表S,表结构如表所示:
表1-1学生表S的数据结构
字段名称
字段说明
数据类型
长度
是否为空
备注
SNO
学号
CHAR
10
NOTNULL
主键
SNAME
姓名
CHAR
10
NOTNULL
普通索引
SEX
性别
CHAR
2
NULL
男或女
AGE
年龄
INT
4
NULL
大于5岁
SDEPT
系别
CHAR
10
NULL
8.通过表设计器来创建学生课程数据库Stu_C中课程表C,表结构如表所示:
表1-2课程表C的数据结构
字段名称
字段说明
数据类型
长度
是否为空
备注
CNO
课程号
CHAR
6
NOTNULL
主键
CNAME
课程名
CHAR
20
NOTNULL
PCNO
先修课号
CHAR
6
NULL
CREDIT
学分
INT
4
NULL
默认4
9.通过表设计器来创建学生课程数据库Stu_C中选修表SC,表结构如表所示:
表1-3选修表SC的数据结构
字段名称
字段说明
数据类型
长度
是否为空
备注
CNO
课程号
CHAR
6
NOTNULL
主键为(SNO,CNO)
SNO
学号
CHAR
10
NOTNULL
GRADE
成绩
INT
4
NULL
在[0,100]
实验步骤
启动SQLServer服务器。
在企业管理器中创建和修改数据库Stu_C。
1.设置常规选项卡
(1)在企业管理器的控制面板目路中选中节点“数据库”,单击鼠标右键,在弹出菜单中选择“新建数据库”命令。
(2)设置新建数据库的常规选项卡,在“名称”文本框中键入数据库名称“Stu_C”。
2.设置数据文件选项卡
(1)基本数据文件名“Stu_C_data”已自动生成在“文件名”项,“位置”指明数据文件存储的位置,可进行修改。
(2)设置该文件初始大小为10MB。
(3)选中“文件属性”对话框中的复选框“文件自动增长”,并选中“按百分比”设置文件容量递增值为5%。
(4)在“最大文件大小”对话框中选择“将文件增长限制为(MB)”为100。
3.设置事务日志选项卡
(1)事务日志文件名“Stu_C_log”已自动生成。
设置该文件初始大小为5MB。
(2)选中“文件属性”对话框中“文件自动增长”,并选中“按兆字节”设置文件容量递增值为。
(3)在“最大文件大小”对话框中选择“将文件增长限制为(MB)”为30。
(4)单击“确定”按钮,完成数据库的创建。
4.修改数据库属性
(1)从树状目录窗口中找到刚刚创建的数据库Stu_C,单击右键,从弹出菜单中选择命令“属性”,打开数据库Stu_C的属性窗口。
(2)选择数据文件选项卡。
在该选项卡中添加数据文件Stu_C2_data,设置该文件初始大小为5MB,选中“文件自动增长”,并选中“按兆字节”设置文件内容递增值为5。
最后选择“将文件增长限制为(MB)”为50。
(3)选择事务日志选项卡,在该选项卡中将事务日志文件的最大容量改为50,递增值改为3。
5.将Stu_C数据库更名为New_Stu_C
可以调用系统存储过程sp_renamedb更改数据库的名称。
在查询分析器中输入如下语句:
sp_renamedb’Stu_C’,’New_Stu_C’
6.删除数据库New_Stu_C
(1)从树状目录窗口中找到刚创建的数据库New_Stu_C,单击右键,从弹出菜单中选择命令“删除”。
(2)在弹出对话框中选择“是”确认即可。
还可以使用DROPDATABASE来实现数据库的删除。
使用语句:
DROPDATABASENew_Stu_C。
7.方法一:
使用企业管理器创建数据表
(1)打开企业管理器,在树状目录窗口中找到数据库节点Stu_C,若没有,则按照实验一方法创建数据库。
(2)选中下级节点“表”。
单击鼠标右键,从弹出菜单中选择“新建表”,打开表设计窗口,在窗口按照“实验内容”中所列出的数据表结构,定义列名、数据类型、长度等属性。
(3)选择主键字段,单击右键,选择“设置主键”,或使用工具栏上的“主键”快捷工具设定。
(4)单击工具栏“保存”按钮,在弹出的对话框中输入表名称,关闭表设计窗口,完成表的创建。
方法二:
使用Transact_SQL语句创建数据表。
如图所示,在查询分析器代码窗格内输入:
USEStu_C
GO
CREATETABLES
(SNOCHAR(10)PRIMARYKEY,
SNAMECHAR(10)NOTNULL,
SEXCHAR
(2)NULL,
AGEINTNULL,
SDEPTCHAR(10)NULL);
CREATETABLEC
(CNOCHAR(6)PRIMARYKEY,
CNAMECHAR(20)NOTNULL,
PCNOCHAR(6)NULL,
CREDITINTNULL);
CREATETABLESC
(SNOCHAR(10)NOTNULL,
CNOCHAR(6)NOTNULL,
GRADEINTNULL,
PRIMARYKEY(Sno,Cno));
然后单击工具栏上的三角形(执行查询)图标,系统将运行查询代码,并在显示结果窗格上显示Stu_C数据库中的各个表。
实验二基本表的修改,数据的查询与更新,视图的管理
实验目的:
掌握约束的定义及其删除方法,掌握规则的创建、使用和删除方法,掌握默认对象的创建、使用和删除方法,掌握创建视图的各种方法,掌握修改视图的方法,熟练使用SQL查询语句,熟悉数据的插入、删除、修改。
实验环境:
SQLServer2000
实验内容:
根据实验一建立的表,实现以下的操作:
1.通过createtable命令的方式创建学生课程数据库Stu_C中的学生表S、课程表C、修表SC和每个表的主键。
2.修改C表,删除CREDIT字段。
3.在C表中添加一列,列名为TNAME,数据类型为CHAR,长度为10,允许为空。
4.修改S表中SDEPT字段,将其长度改为30。
5.创建CHECK约束。
在S表SEX列创建“SEX”只能是“男”或“女”的(检查)约束。
6.创建DEFAULT默认值约束。
在S表AGE列创建缺省值为“18”的约束。
7.创建FOREIGNKEY约束。
C表中的先修课PCNO参照C表中的CNO。
SC表中的SNO参照S表中的SNO属性,CNO参照C表中CNO属性。
7.根据外码约束,生成S,C,SC三个表的关系图。
8. 通过打开表和INSERT命令输入数据。
基本表S的数据
S1王芳20M数学
S2李莉19M计算机
S3王华22M管理
S4王明19M数学
S5宋江21F管理
S8曹操18F计算机
基本表C的数据
C2数学NULL刘明
C4程序设计NULL吴一
C3数据库NULL李方华
C1操作系统C2刘备
C5C语言C2张飞
基本表SC的数据(空格为未修课)
S#C#
S1
S2
S3
S4
S5
S6
C1
80
85
90
75
70
90
C2
70
Null
85
60
Null
C3
85
95
Null
80
90
C4
90
Null
70
C5
70
65
Null
9.查询全体学生的学号、姓名、所在系。
10.查询全体学生的姓名及其出生年份,并给“出生年份”取别名。
11.查询选修了课程的学生学号。
12.查询年龄在20~23岁之间(包括20和23岁)的学生的姓名、年龄和所在系。
13.查询所有年龄在20岁以下、“数学系”的男学生学号和姓名。
14.查询选修“C4”课程的学生总人数。
15.查询所有有成绩的学生学号和课程号,查询结果按学号升序排列,同一个学生按课程号降序排列。
16.查询选修“C3”课程的学生平均成绩。
17.查询各门课程及相应的选课人数。
18.查询选修“C3”课程的学生最高分数。
19.若存在一个学号为“S4”的学生,试将此学生的年龄改为22岁。
20.将“C3”课程的学生成绩都增加5%。
21.删除学号为“S8”的学生记录。
22.查询所有学生姓名及其所选课程的课程号和成绩。
23.查询所有成绩在80分以上的学生的学号,姓名,课程名,成绩。
24.查询哪些学生选修了数据库课程,列出学号,姓名。
25.查询哪些学生选修了3门以上课程。
26.查询选修了3门以上课程的学生学号,姓名,所在系。
选课门数,平均分
27.查询选修“C1”课程的学生学号,姓名及成绩。
28.查询所有选修了“吴一”老师课程的女学生学号和姓名。
29.查询“程序设计”课程成绩在90分以上的学生姓名。
30.把“吴一”老师的男学生选课成绩增加4%。
31.查询所有比“王华”年龄大的学生姓名、年龄和性别。
32.检索选修4门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
33.把SC表中每门课程的平均成绩插到另一个已存在的表SC_C(CNO,CNAME,AVG_GRADE)中。
34.查询所有“数学”课程成绩低于数学平均成绩的学生学号。
35.检索刘明老师所授课程的课程号和课程名。
36.检索年龄大于23岁的男同学的学号和姓名。
37.检索学号为s3的学生所学课程的课程名和任课教师名。
38.检索至少选修刘明老师所授课程中一门课程的女同学姓名。
39.检索至少选修两门课程的学生学号。
40.统计有学生选修的课程门数。
41.求刘明老师所授课程的每门课程的学生平均成绩。
42.求选修c4课程的学生平均年龄。
43.检索学号比王芳同学大,而年龄比他小的学生姓名。
44.检索姓名以“王”打头的所有学生的姓名和年龄。
45.在sc中检索成绩为空值的学生学号和课程号。
46.检索李莉同学不学的课程的课程号。
47.//检索全部学生都修的课程的课程号与课程名。
48.//检索选修课程包括刘明老师所教所有课程的学生学号。
49.统计每门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
50.求年龄大于女同学平均年龄的男学生姓名和年龄。
51.求年龄大于所有女同学年龄的男同学姓名和年龄。
52.往基本表s中插入一个学生元组(‘s9’,‘吴用’,18)。
53.在基本表s中检索每一门课程成绩都大于等于80分的学生学号,姓名和性别,并把检索到的值送往另一个已存在的基本表student(sno,sname,sex)
54.在基本表sc中删除尚无成绩的选课元组。
55.把王明同学的学习选课和成绩全部删去。
56.把选修“数据库”课不及格的成绩全改为空值。
57.把低于总平均成绩的女同学成绩提高15%。
58.在基本表sc中修改c4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个update语句实现)。
59.选修了全部课程的学生姓名
60.检索只选修了c2课程的学生姓名。
61.检索至少选修了c1和c2课程的学生姓名。
62.检索至少选修了s2学生所修课程的学生姓名。
63.检索英语成绩最高的学生姓名。
64.创建“计算机系”学生的视图Stu_CS1。
65.创建“计算机系”选修了“S1”号课程的学生视图Stu_CS2。
66.创建“计算机系”选修了“S1”号课程且成绩在“90”分以上的学生视图Stu_CS3。
67.基于视图进行添加、更新、删除记录。
68.删除视图Stu_CS3。
实验步骤
1.略
2.在企业管理器中删除列
(1)在目录树中选择Stu_C数据库,选择要修改的表。
(2)单击右键,选择“设计表”,打开表设计对话框。
(3)选择需要进行修改的列,选择“删除列”。
(4)保存,完成对数据表的修改。
也可以使用Transact_SQL语句来实现。
USEStu_C
GO
ALTERTABLECDROPCOLUMNCREDIT
GO
3.在企业管理器中添加列
(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择C表。
(2)点击右键,选择“设计表”,打开表设计对话框。
(3)在表设计对话框中添加列TNAME,并进行数据类型及约束定义。
也可以使用Transact_SQL语句来实现。
USEStu_C
GO
ALTERTABLECADDTNAMECHAR(10)NULL
GO
(4)保存,完成对数据表的修改。
4.在企业管理器中对表结构进行修改
(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择S表。
(2)点击右键,选择“设计表”,打开表设计对话框。
(3)在表设计对话框中对列SDEPT进行修改。
也可以使用Transact_SQL语句来实现。
USEStu_C
GO
ALTERTABLESALTERCOLUMNSDEPT(30)
GO
(4)保存,完成对数据表的修改。
5-6.在企业管理器中对表进行约束和规则定义
(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择S表。
(2)点击右键,选择“设计表”,打开表设计对话框。
(3)在表设计对话框中,选中要进行CHECK约束定义的列SEX,点击右键,选择“CHECK约束”,在对话框中输入约束表达式“SEXIN(’男’,’女’)”。
(4)选中要进行DEFAULT定义的列AGE,在下面的属性选项卡“默认值”中输入“18”。
(5)保存,完成对数据表的约束定义。
7.在企业管理器中义创建三个表的关系
(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择S表。
(2)点击右键,选择“设计表”,打开表设计对话框。
(3)在表设计对话框中,点击右键,选择“关系”,或在工具栏中选择“关系”图标。
(4)在关系对话框中,选择“新建”,在“主键表”“外键表”选项中选择表名,体现参照和被参照的关系。
并确定相对应的列名。
(5)保存,完成一个关系的定义。
之后再用同样的方法“新建”新的关系,保存。
8.使用向导创建关系图
(1)在服务器目录树中选择Stu_C数据库,展开单击“关系图”选项。
(2)进入新建关系图向导,按照提示进行此数据库关系图的创建。
(3)对关系图保存并命名。
9-62.略
63.创建视图
(1)打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库;
(2)选择菜单“工具”——〉“向导”;
图5.1视图向导
(3)在向导对话框中,单击数据库左边的“+”号,使之展开。
选择“创建视图向导”项,单击“确定”按钮;
(4)进入创建视图向导后,首先出现的是欢迎进入创建视图向导对话框,其中简单介绍了该向导的功能。
单击“下一步”按钮后,就会出现选择“数据库名称”对话框;
(5)在“选择数据库名称”对话框中,选择视图所属的数据库。
单击“下一步”按钮,进入选择表对话框。
(6)在选择表对话框中,列出了指定数据库中所有用户定义的表和视图。
用户可以从中选择构造视图所需的一个表或多个表(或视图),被选中的表成为构造视图的参考表。
选择构造视图参考表的方法是:
用鼠标单击表名后的“包含在视图中”列,使复选框为选中状态。
单击“下一步”按钮,则进入选择列对话框。
(7)列选择对话框中以表格形式列出了创建视图参考表的全部属性,每个属性占表的一行。
创建视图的参考属性可以在表格中选出。
选择视图参考属性的方法是用鼠标单击属性名后边的“选择列”,使其复选框为选中状态。
单击“下一步”按钮,进入创建视图的定义限制对话框。
(8)在定义限制对话框中,输入表的连接和元组选择条件。
图5.2设计视图
(9)在输入视图名对话框中输入所建视图的标识名。
(10)在完成对话框中给出了根据前面对话框输入的内容译成的SQL语句。
读者可以认真阅读该SQL语句,如果发现与要求不符合之处则可以直接进行修改。
(11)确认无误后,单击“完成”按钮。
随后出现一个通知用户已成功创建视图的信息框,单击“确认”按钮后,整个创建视图工作就完成了。
64.查看和修改视图
视图创建后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以在企业管理器对它进行修改。
65.删除视图
删除视图的方法是:
首先要在企业管理器中,将鼠标指向数据库中的视图文件夹,单击右键。
在随后出现的弹出菜单中,选择“删除”项。
选中预删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。
实验三存储过程和触发器
实验目的:
1.掌握创建存储过程的方法、步骤、使用方法;掌握创建触发器的方法、步骤、使用方法。
实验环境:
SQLServer2000
实验内容:
1.参照以下的例子,创建一个存储过程Pro_Com,该存储过程的作用是:
当执行该存储过程时,将返回计算机系学生的所有信息。
例:
下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。
该存储过程不使用任何参数。
在SQL查询分析器中输入:
CREATEPROCEDUREau_info_all
AS
SELECTau_lname,au_fname,title,pub_name
FROMauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlest
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
GO
--在SQL查询分析器中执行au_info_all存储过程方法:
EXECUTEau_info_all
--Or
EXECau_info_all
2.执行Pro_Com存储过程,查看计算机系学生的情况。
3.删除Pro_Com存储过程。
4.参照以下的例子,使用CREATEPROCEDURE语句创建一个带参数的存储过程Pro_Stu。
该存储过程的作用是:
当任意输入一个学生的姓名时,返回该学生的学号、选修的课程名称和课程成绩。
例:
下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。
该存储过程接受与传递的参数精确匹配的值。
CREATEPROCEDUREau_info
@lastnamevarchar(40),
@firstnamevarchar(20)
AS
SELECTau_lname,au_fname,title,pub_name
FROMauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_idINNERJOINtitlest
ONt.title_id=ta.title_idINNERJOINpublishersp
ONt.pub_id=p.pub_id
WHEREau_fname=@firstname
ANDau_lname=@lastname
GO
au_info存储过程可以通过以下方法执行:
EXECUTEau_info'Dull','Ann'
--Or
EXECUTEau_info@lastname='Dull',@firstname='Ann'
--Or
EXECUTEau_info@firstname='Ann',@lastname='Dull'
5.执行Pro_Stu存储过程,查询“宋江”的学号、选修课程名称和课程成绩。
6.使用系统存储过程sp_helptext查看存储过程Pro_Stu的文本信息
7.创建一个带参数的存储过程Pro_Couse。
该存储过程的作用是:
当任意输入一门课程的课程名时,返回选修该课程的学生学号、学生姓名和成绩。
8.执行Pro_Couse存储过程,查询选修“操作系统”的学生学号、学生