- 说明:这是武汉理工大学计算机学院【数据库系统原理】课程课内实验。
- >>点击查看WUTer计算机专业实验汇总
- 谨记:纸上得来终觉浅,绝知此事要躬行。
1、实验内容:
项 目 名 称 |
实验内容 |
1数据库管理系统(DBMS)实验 |
(1)熟悉DBMS的界面和操作。 (2)创建数据库和查看数据库属性。 (3)创建表、确定表的主码和约束条件。 (4)查看和修改表的结构。 (5)向数据库输入数据,观察违反列级约束时出现的情况。 (6)修改数据。 (7)删除数据,观察违反表级约束时出现的情况。 (8)备份数据库到其它磁盘(如U盘),从其它磁盘恢复数据库。 |
2数据库的创建与修改 |
(1)在DBMS的交互式环境里,用SQL语句建库、建表并插入记录。 (2)修改表结构,包括修改属性列的数据类型,增加新的属性列,删除已有的属性列。 (3)使用单个元组和多元组插入。 (4)使用子查询的修改和删除。 |
3数据库的查询 |
(1)在DBMS的交互式环境里,用SQL语句建库、建表并插入记录。 (2)简单查询操作,包括投影、选择、数据排序、模糊匹配查询等。如果结果不正确,要进行修改,直至正确为止。 (3)连接查询操作,包括等值连接、自然连接、一般连接、自身连接、外连接。 (4)使用In、比较符和Exists操作符进行嵌套查询操作。 (5)分组查询,包括分组条件表达、选择组条件表达的方法。 (6)集合查询。 (7)使用视图创建语句建视图,通过视图查询数据 |
4数据库综合应用 |
(1)设计应用实例的数据库(如图书销售数据库)。 (2)创建新用户,设置和管理数据操作权限,实现数据库的安全性。 (3)定义数据库结构,定义数据约束条件,实现数据库的完整性。 (4)根据应用要求,使用视图完成数据操作,包括数据录入、数据维护、数据查询等工作。 |
5数据的导入/导出、数据库备份和恢复 |
(1)使用DBMS工具对表中的数据导出到其它格式的文件。 (2)将其它格式的文件数据导入到数据库中。 (3)使用DBMS工具创建一个数据库的备份(海量备份、增量备份)。 (4)使用DBMS工具及所创建的数据库备份恢复这个数据库。 |
2、各个实验调试过程:
2.1 数据库管理系统(DBMS)实验
调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
- 单击桌面的“SQL Server Management Studio”快捷方式,启动SSMS。
- 在“服务器名称(S)”中输入“名称”,点击“连接”,连接至数据库
- 在“对象资源管理器”中,展开 SQL Server 20008 R2数据库引擎实例CXH。
- 右击“数据库”,然后单击“新建数据库”。
- 在“新建数据库”对话框中,输入数据库名称:SPJ_DB,其他选项使用默认值,单击“确定”, 完成数据库SPJ_DB的创建。
- 通过分析四个表得知:S表的主码为SNO,P表的主码为PNO,J表的主码为JNO,SPJ表的主码为(SNO,PNO,JNO),所以定义这四个表的过程、SQL语句如下:
点击“新建查询”按钮,在sql文件中输入下面SQL代码,输入一条执行一条; create table S(SNO char(10) primary key,SNAME char(20),STATUS char(10),CITY char(20));
create table P(PNO char(10) primary key,PNAME char(20),COLOR char(10),WEIGHT char(10));
create table J(JNO char(10) primary key,JNAME char(20),CITY char(20));
create table SPJ(SNO char(10),PNO char(10),JNO char(10),QTY char(20),primary key(SNO,PNO,JNO));
- 创建完成表后,右击“SPJ_DB/表”文件,点击刷新按钮,即可看到新建的四个空表;
- 当前表中没有数据,对“SPJ表”中SNO、PNO、JNO三个主码(或者说是外码)的约束条件进行设置,被参照表依次是S、P、J表,代码如下:
alter table SPJ add constraint SNO foreign key(SNO) references S(SNO);
alter table SPJ add constraint PNO foreign key(PNO) references P(PNO);
alter table SPJ add constraint JNO foreign key(JNO) references J(JNO);
- 查看和修改表的结构:
右击“SPJ_DB\数据库关系图”文件,选择“新建数据库关系图”选项,在新弹出的“添加表”对话框中将“J、P、S、SPJ”四个表依次“选中”→“添加”,在界面中将显示数据库的四个表之间的关系图结构。
- 向数据库输入数据,观察违反列级约束时出现的情况:
- 首先向S表中添加数据,右击“SPJ_DB\表\dbo.S”表,点击“编辑前200行”,即可进入编辑界面,参照课本P71的表格,依次输入数据。
- 如果前面输入了SNO为S1的数据,后边再重复输入时,弹出错误信息对话框,提示“未提交行2中的数据……违反了PRIMARY KEY约束……请更正错误并重试……”,这是因为主码唯一的原因。
- 对P表、J表同上。
- 对SPJ表,同样根据课本表格依次输入数据。
- 当SPJ表中的SNO、PNO、JNO三列中的任何一列输入一个在对应的S表、P表、J表中没有的数据时,例如在SNO列中输入“P1”,显示错误信息“未提交行2中的数据……INSERT语句与FOREIGN KEY约束“SNO”冲突……”。
- 修改数据:
直接修改即可。
- 删除数据,观察违反表级约束时出现的情况
对SPJ表删除数据无影响,但是对S表、P表、J表删除数据时,如删除J表中的第一行,弹出错误信息框,显示“试图删除行1时发生问题……DELETE语句与REFERENCE约束“JNO”冲突……”。
- 备份数据库到其它磁盘(如U盘),从其它磁盘恢复数据库。
- 右击数据库“SPJ_DB”,选择“任务”→“备份”选项,备份数据库界面选择备份目标(路径),然后点击“确定”,即可完成备份,在对应目录下可见文件名为“SPJ_DB.bak”的备份文件。
- 恢复数据库即备份数据库的逆过程,右击“CHENXIUHAO\数据库”,选择“还原数据库”,还原的源选择“源设备”,点击对应后边三个点按钮,弹出“指定备份”对话框,点击“添加”按钮,选择要还原的*.bak扩展名文件,“确定”,选择用于还原的备份集列表中勾选刚才添加的文件,点击“确定”即可。
2.2 数据库的创建与修改
调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
- 在DBMS的交互式环境里,用SQL语句建库、建表并插入记录。
- 点击选项菜单的“新建查询”按钮激活SQL语言输入框,输入以下SQL语句创建数据库SPJ_DB:create database SPJ_DB;
- 从题意知S表的主码为SNO,使用以下SQL语句创建S表:
- create table S(SNO char(10) primary key,SNAME char(20),STATUS char(10),CITY char(20));
- P表、J表和S表类似,但SPJ表的主码为(SNO,PNO,JNO),所以创建SPJ表的SQL语句如下:
- create table SPJ(SNO char(10),PNO char(10),JNO char(10),QTY char(20),primary key(SNO,PNO,JNO));
- 首先向S表中插入数据,其中部分语句如下:
- insert into S values('S1','精益','20','天津');
insert into S values('S2','盛锡','10','北京');
其他表格类似。
- 修改:将城市为北京的供应商S供应给工程J1的零件数修改为666;
UPDATE SPJ set QTY='666' where JNO='J1' and SNO in (SELECT SNO from S where CITY='北京');
- 删除:将城市为上海的供应商S供应给工程J4零件的供应情况删除:
delete from SPJ where JNO='J4' and SNO in (SELECT SNO from S where CITY='上海');
- 修改表结构,包括修改属性列的数据类型,增加新的属性列,删除已有的属性列。
- 使用单个元组和多元组插入。
- 使用子查询的修改和删除。
2.3 数据库查询
调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
- 简单查询操作:
- 找出所有零件的名称、颜色和重量
select PNAME,COLOR,WEIGHT from P;
- 找出工程项目J2使用的各种零件的名称及其数量
select PNAME,QTY from P,SPJ where P.PNO=SPJ.PNO and JNO='J2';
- 找出使用上海产的零件的工程号码
select JNAME from J,SPJ,S where J.JNO=SPJ.JNO and SPJ.SNO=S.SNO and S.CITY='上海';
- 找出没有使用天津产的零件的工程号码
select JNO from J where not exists(select * from SPJ,S where SPJ.JNO=J.JNO and SPJ.SNO=S.SNO and S.CITY='天津');
- 找出工程项目名带“厂”字的工程号码
select JNO from J where JNAME like'%厂';
- 将P表重量大于15的所以数据,并按重量递增进行排序查询输出
select * from P where WEIGHT>'15' order by WEIGHT asc;
- 使用视图创建语句建视图,通过视图查询数据
- 对SPJ表构建视图,将代码换成具体的名字,供应数量前添加零件颜色和重量
create view SPJ_B as
select SNAME,JNAME,PNAME,COLOR,WEIGHT,QTY
from S,P,J,SPJ
where S.SNO=SPJ.SNO and P.PNO=SPJ.PNO and J.JNO=SPJ.JNO
- 通过上面创建的视图,查询使用蓝色零件的工程名字
select DISTINCT JNAME from SPJ_B where COLOR='蓝';
2.4 数据库综合应用
- 设计应用实例的数据库(如图书销售数据库)。
- 新建某公司信息数据库,有两个关系模式:
职工(职工号,姓名,,性别,年龄,职务,工资,部门号,联系方式)
部门(部门号,名称,经理姓名,地址,电话)
- 创建表过程可采用实验一的SSMS向导的或者实验二的SQL语句,这里不赘述。
- 创建新用户,设置和管理数据操作权限,实现数据库的安全性。
- 展开“CHENXIUHAO\安全性\登录名”文件,右击“登录名”弹出“登录名-新建”页面;
- “常规”选择页输入新的登录名;
- “服务器角色”选择页勾选该用户可拥有的权限;
- “用户映射”选择页勾选该用户可管理的数据库,勾选后在下方“数据库角色成员身份”框里勾选可以进行的操作,如读数据(db_datareader)、写数据(db_datawriter)等;
- 设置完成后,点击“确定”即可设置成功
- 退出当前用户,登陆新建的用户名测试;
2.5 数据导入/导出、数据备份和恢复
- 使用DBMS工具对表中的数据导出到其它格式的文件。
- 将实验二创建的SPJ表视图导出步骤:
- 首先右击实验二创建的SPJ_DB数据库,找到“任务”→“导出数据”,弹出“SQL Server导入和导出向导”
- 首页点击“下一步”,选择数据源页面选择数据库“SPJ_DB”,点击下一步,
- 选择目标界面,目标栏选择“平面目标文件”,点击“浏览”选择保存路径,输入文件名,文件格式选择“CSV”文件,确定后,勾选“在第一个数据行中显示列名称”,点击下一步;
- 指定表复制或查询页面选择第一项,点击下一步,
- 配置平面文件目标界面“源表或源视图”栏选择要导出的视图“SPJ_V”,点击完成即可。
- 然后前往保存路径即可查看导出的Excel文件,打开可查看数据。
- 将其它格式的文件数据导入到数据库中。
- 使用DBMS工具创建一个数据库的备份(海量备份、增量备份)。
- 右击数据库“SPJ_DB”,选择“任务”→“备份”选项,备份数据库界面找到下方的“目标”框,勾选“磁盘”,点击“添加”按钮,弹出“选择备份目标”提示框,
- 提示框里选择路径、输入文件名,点击“确定”;
- 然后点击“确定”,即可完成备份,在对应备份目录下可见文件名为“SPJ_DB.bak”的备份文件。
- 使用DBMS工具及所创建的数据库备份恢复这个数据库。