数据库上机实验及指导分析解析Word下载.docx
- 文档编号:20878328
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:11
- 大小:20.78KB
数据库上机实验及指导分析解析Word下载.docx
《数据库上机实验及指导分析解析Word下载.docx》由会员分享,可在线阅读,更多相关《数据库上机实验及指导分析解析Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
MaxSize=25MB,
FileGrowth=2MB)
LogOn
(Name=Emplog,
\你的学号\data\Emplog.ldf’,
FileGrowth=5%)
按“Ctrl+F5”执行语句,或点击快捷图标栏的“√”图标执行之,完成数据库的创建
附:
增加、修改、删除数据或日志文件用以下命令:
ALTERDATABASE数据库名
ADDFILE<
filespec>
[,…n]
|MODIFYFILE<
fiespec>
|REMOVEFILE逻辑文件名
|ADDLOGFILE<
|MODIFYNAME=新数据库名
<
:
=
(NAME=逻辑文件名
[,NEWNAME=新逻辑文件名]
[,FILENAME=‘OS文件的路径及名字’]
[,SIZE=文件的初始大小]
[,MAXSIZE=最大的文件尺寸]
[,FILEGROWTH=文件大小增量]
)
1-2利用SQL创建人员表person、月薪表salary及部门表dept。
要求:
按表1-1、表1-2及表1-3中的字段说明创建。
表1-1person表结构
字段名
数据类型
字段长度
允许空否
字段说明
P_no
Char
6
NotNull
工号,主键
P_name
Varchar
10
姓名
Sex
2
性别
BirthDate
Datetime
8
Null
出生日期
Prof
职称
Deptno
4
部门代码,外键(参照dept表)
表1-2Salary表结构
工号,主键,外键(参照person表)
Base
Dec
5
基本工资
Bonus
奖金,要求>
50
Fact
实发工资=基本工资+奖金
Month
Int
月份
表1-3dept表结构
部门代码,主键
Dname
部门名称
1-3利用SQL语句创建视图。
在基表person上创建员工视图PersonView,其中包含工号、姓名、性别、职称和部门代码等字段。
1-4创建索引。
①在人员表的姓名列上创建一个单列索引name_sort
②在人员表的出生日期列和姓名列上创建一个组合索引birth_name
③在人员表的姓名列上创建一个惟一索引u_name_sort
④在月薪表的实发列上创建一个聚簇索引fact_idx
1-5删除索引。
删除月薪表上的索引fact_idx
2、SQL操纵子语言实验
2-1利用SQL语句向表person、salary和dept中插入数据。
按表2-1、表2-2及表2-3中的数据插入。
表2-1表person中的数据
000001
王云
男
1973-4-7
中级
0001
000002
谢志文
1975-2-14
000003
李浩然
1970-8-25
高级
0002
000004
廖小玲
女
1979-8-6
初级
000005
梁玉琼
0003
000006
罗向东
1979-5-11
000007
肖家庆
1963-7-14
表2-2表salary中的数据
2100
300
1
1800
2800
280
2500
250
2300
275
1750
130
2400
210
表2-3表dept中的数据
人事部
财务部
市场部
2-2用SQL语句修改表中的数据。
将salary表中工号为000006的员工工资增加为1800,奖金增加为160。
2-3用SQL语句删除表中的数据。
删除person表中工号为000010的员工数据
2-4更新视图。
将员工视图PersonView中姓名为王云的员工职称改为高级。
2-5向视图插入数据。
向视图PersonView中插入一行数据(‘000008’,‘刘美萍’,‘女’,‘中级’,‘0002’)。
2-6删除视图。
将视图PersonView删除。
2-7利用SQL语句查询person表中的所有数据。
2-8条件查询。
①查询person表中所有不重复的职称
②查询person表中职称为中级的所有员工数据
③查询person表中具有高级职称的男员工信息
④查询person表中姓名为王云、谢志文或罗向东的员工数据
2-9使用ORDERBY排序
利用SQL语句将工号在000003和000008之间的员工的月收入按实发工资升序排列。
2-10查询工号为000002的员工的基本工资增加2倍,奖金增加1.5倍后的实际收入。
2-11利用SQL语句查询各部门的实发工资总数。
2-12利用SQL语句查询1月份发放奖金平均数大于200元的部门,并从低到高排序。
2-13查询人事部所有员工信息。
2-14查询person表中职称为中级的员工信息。
2-15查询每个员工1月份的工资和奖金。
2-16查询比工号为000005的员工实发工资高的所有员工信息。
2-17查询比部门0003所有员工实发工资都高的员工。
2-18查询实发工资比平均实发工资高的员工代码及实发。
2-19使用UNION查询。
利用SQL语句分别查询具有高、中级职称的职工姓名,合并输出。
二、数据库完整性实验
1、表本身的完整性
1-1利用T-SQL语句在表定义时指定默认、创建默认、查看默认和删除默认。
①删除表salary中的列month,然后修改表salary并增加列month,并将其默认值设为2
②创建默认prof_default并与prof列绑定
③查看默认prof_default
④将默认prof_default解除绑定,然后将它删除
实验指导:
1ALTERTABLEsalary
DROPCOLUMNmonth
GO
ALTERTABLEsalary
ADDmonthINTNOTNULLDEFAULT2
2CREATEDEFAULTprof_defaultAS‘高级’
EXECsp_bindefaultpro_default,‘person.prof’
3Sp_helpprof_default
4EXECsp_unbindefault‘person.prof’
DROPDEFAULTprof_default
1-2创建规则、删除规则。
要求:
①创建规则sex_rule并与sex列绑定,指定性别列的值为男或女
②将规则sex_rule解除绑定,然后将它删除
1CREATERULEsex_ruleAS@sexIN(‘男’,‘女’)
Sp_bindrule‘sex_rule’,‘person.sex’
2Sp_unbindrule‘person.sex’
DROPRULEsex_rule
1-3定义检查约束、查看表的定义、删除检查约束。
①将表salary的bonus列定义为检查约束,并限制其值不小于50
②向已有表salary中增加一个检查约束base_check,限制base列的值在0-5000之间
③查看对表salary结构的定义
④删除表salary中的限制base_check
1ALTERTABLEsalaryADDCONSTRAINTbonus_checkCHECK(bonus>
=50)
2ALTERTABLEsalaryWITHNOCHECKADDCONSTRAINTbase_checkCHECK(baseBETWEEN0AND5000)
3EXECsp_helpsalary
4ALTERTABLEsalaryDROPCONSTRAINTbase_check
1-4惟一性约束的使用。
①将dept表中的dname列定义为惟一性约束
②将person表的p_no列和p_name列联合定义为惟一性约束
1ALTERTABLEdeptADDCONSTRAINTunique_dnameUNIQUE(dname)
2ALTERTABLEpersonADDCONSTRAINTunique_pno_pnameUNIQUE(pno,pname)
2、表间参照完整性
2-1定义外键约束。
①创建表时将表person的deptno列定义为外键,并参考表dept的列deptno
②将salary表中的p_no设为外键,并使其参照表person中的p_no
1ALTERTABLEpersonADDCONSTRAINTdeptno_FKFOREIGNKEY(deptno)REFERENCESdept(deptno)
2-2测试对主表进行插入、更新及删除操作时的影响。
①向表dept中插入一行数据(‘0004’,‘研发部’),测试是否影响从表。
②将表dept中的部门号0003改为0006,测试是否影响从表。
③删除表dept中部门号为0001的员工数据,测试是否影响从表。
2-3测试对从表进行插入、更新及删除操作时的影响。
①向表person中插入一行数据(‘000012’,‘宋全礼’,‘男’,‘1980-7-17’,‘初级’,‘0005’),测试是否违背参照完整性。
②将表person中工号为000002的员工所在部门更新为0005,测试是否违背参照完整性。
③删除表person中工号为000005的员工数据,测试是否违背参照完整性。
三、存储过程与触发器实验
3-1触发器的应用
(1)在salary表上创建一个UPDATE类型的触发器tr_update_salary,当对salary表进行更新操作时,能显示“有?
条记录被修改!
”(记录代码)
(2)编写SQL语句,实现“将基本工资少于2000的员工工资修改为2000元”,请观察语句执行后系统的提示信息。
(记录代码,结果截图)
(1)CREATETRIGGERtr_update_salaryONsalary
FORUPDATE
AS
DECLARE@msgvarchar(50)
SELECT@msg='
有'
+STR(@@ROWCOUNT)+'
条记录被修改'
SELECT@msg
RETURN
3-2级联触发器的使用
CREATETRIGGERpub_delONpublishersFORDELETEAS
IF@@rowcount=0
RETURN
DELETEtitlesFROMtitlest,deleteddWHEREt.pub_id=d.pub_id
这是一段创建触发器的代码,该触发器的功能表示,当删除了publishers表中的数据后,级联删除titles表中对应的行,类似于外键约束中的CASCADE行为。
请模仿以上代码,创建触发器tr_delete_person,要求:
当person表中某些记录删除时,salary表的相应记录也级联删除,并编写相应的SQL语句验证你的触发器是否起作用。
3-2预习并完成教材第19章19.1节存储过程的例题
四、数据库系统管理实验
1-1用企业管理器备份和恢复数据库。
①创建备份设备PubsBac
②备份数据库Pubs
③删除数据库Pubs中的employee表
④备份数据库Pubs到备份设备PubsBac
⑤删除数据库Pubs的表Sales
⑥依次恢复数据库Pubs
1创建备份设备PubsBac
在企业管理器下,展开服务器组,然后展开服务器。
展开“管理”文件夹,右击“备份”,然后单击“新建备份设备”命令。
在出现的对话框“名称”框中输入该命名设备的名称PubsBac,然后单击“文件名”按纽,输入磁盘备份设备所使用的文件名,单击浏览按纽显示“备份设备位置”对话框,并选择磁盘设备所使用的本地计算机上的物理文件,单击“确定”即可。
2备份数据库Pubs
在企业管理器中,展开“数据库”文件夹,右击要备份的数据库,指向“所有任务”子菜单,然后单击“备份数据库”命令。
在出现的对话框“常规”选项卡的“名称”框内,输入备份集名称,也可以在“描述”框中输入对备份集的描述。
在“备份”选项下,选项“数据库——完全”。
在“目的”选项下,单击“磁盘”,然后指定备份的目的地。
如果没有出现备份目的地,则单击“添加”并“选择备份目的的备份设备PubsBac”。
在“重写”选项下,选择“追加到媒体”。
如果需要安排特定的备份时间,可以选择“调度”复选框进行选择。
打开“选项”选项卡,按照提示可以选择一些需要的功能(可选)。
如果是第一次使用备份媒体,或者要更改现有的媒体标签,则在“媒体集标签”框下选择“初始化并标识媒体”复选框,然后输入媒体集名称和媒体集描述。
只有在重写媒体时才能对其进行初始化和标识设置。
3删除数据库Pubs中的employee表
4备份数据库Pubs到备份设备PubsBac中。
(参考②)
5删除数据库Pubs中的表sales。
6恢复数据库Pubs。
在企业管理器中,展开“数据库”文件夹,右击数据库Pubs,指向“所有任务”并单击“还原数据库”命令。
在出现的“还原数据库”对话框“常规”选项卡中,在“还原为数据库”文本框中,可以改变还原的数据库的名称。
在“还原”项中,单击“数据库”单选按纽。
在“要还原的第一个备份”列表中,选择最近一次备份的备份集,在“还原”列表中,选择要还原的数据库备份。
可以打开“选项”选项卡,指定一些特殊选项(可选)。
单击“确定”即可。
7恢复数据库Pubs
按⑥的方法,恢复数据库Pubs,并查看数据库Pubs是否恢复到备份前状态。
实验报告
实验名称
日期
学号
班级
正文一律采用五号宋体、TimesNewRoman(英文字体),行间距1.5倍,题与题之间空一行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 上机 实验 指导 分析 解析