数据库平时上机实验报告.docx
《数据库平时上机实验报告.docx》由会员分享,可在线阅读,更多相关《数据库平时上机实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
![数据库平时上机实验报告.docx](https://file1.bdocx.com/fileroot1/2023-7/27/2b9535e2-5534-4c6d-ada4-aa56fa1c2714/2b9535e2-5534-4c6d-ada4-aa56fa1c27141.gif)
数据库平时上机实验报告
实验一数据库的定义和建立实验
一、实验目的
要求学生熟练掌握和使用T-SQL﹑SQLServer企业管理器创建数据库﹑基本表﹑视图﹑索引和修改表结构,及向数据库输入数据的操作;学会创建和使用表的主外码和约束。
二、实验内容
本实验针对上述两个题目分别完成以下相应任务:
1﹑创建相应的数据库和查看数据库属性;
2﹑创建基本表﹑确定表的主码和相应的约束,为主码建索引;
3﹑创建﹑查看视图;
4﹑创建表之间的关联;
5﹑利用T-SQL和SQLServer企业管理器向数据库输入数据。
二、SQL语句
创建基本表﹑确定表的主码和相应的约束,为主码建索引;
1、CREATETABLES//建立S表
(SNOCHAR
(2)UNIQUE
SNAMECHAR(6)
STATUSCHAR
(2)
CITYCHAR(4)
PRIMARYKEY(SNO)//确定主码SNO
CREATEUNIQUEINDEXS1ONS(SNOASC))//为主码SNO建立索引
2、CREATETABLEP//建立P表
(PNOCHAR
(2)UNIQUE
PNAMECHAR(6)
COLORCHAR
(2)
WEIGHTSMALLINT
PRIMARYKEY(PNO)//确定主码PNO
CREATEUNIQUEINDEXP1ONP(PNOASC))//为主码PNO建立索引
3、CREATETABLEJ//建立J表
(JNOCHAR
(2)UNIQUE
JNAMECHAR(8)
CITYCHAR(4)
PRIMARYKEY(JNO)//确定主码JNO
CREATEUNIQUEINDEXJ1ONJ(JNOASC))//为主码JNO建立索引
4、CREATETABLESPJ//建立SPJ表
(SNOCHAR
(2)UNIQUE
JNOCHAR
(2)
PNOCHAR
(2)
CITYCHAR(4)
QTYINT
PRIMARYKEY(SNO,JNO,PNO)//确定主码
CREATEUNIQUEINDEXSPJ1ONSPJ(SNOASC))
四﹑思考题
1﹑为什么要建立索引?
在你的数据库中建立多少索引合适?
答:
使用索引可以明显地加快数据查询的速度;使用索引可以保证数据的唯一性;可以加快连接速度。
索引的个数应该由所要建立的数据库内部关系来确定,不宜过多,越精越好。
对于此次实验中的选课数据库只需要建立四个。
2﹑索引和视图能否修改吗?
为什么?
答:
可以
3﹑为什么不能随意删除被参考表中的主码?
答:
数据库中,主码在于实施所谓的实体完整性,各个表之间由码进行联系,不能随意删除被参照表中的主码。
实验二数据库的查询实验
一﹑实验目的
要求学生掌握SQLServer查询分析器和T-SQL语言的使用方法,熟练掌握和使用简单表的数据查询﹑数据排序和数据连接查询﹑嵌套查询等操作方法,
二﹑实验内容
用T-SQL语言表示以下操作:
题目1实验内容:
1.检索上海产的零件的工程名称;
2.检索供应工程J1零件P1的供应商号SNO;
3.检索供应工程J1零件为红色的供应商号SNO;
4.检索没有使用天津生产的红色零件的工程号JNO;
5.检索至少用了供应商S1所供应的全部零件的工程号JNO;
6.检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数量QTY降序排列。
三、SQL语句
1、SELECTJNAME
FROMSPJ,S,J
WHERES.SNO=SPJ.SNOAND
S.CITY=’上海’ANDJ.JNO=SPJ.JNO
2、SELECTSNO
FROMSPJ
WHEREJNO='J1'ANDPNO='P1
3、SELECTSNO
FROMSPJ,P
WHEREJNO=’J1’ANDSPJ.PNO=P.PNOANDCOLOR=’红’
4、SELECTJNO
FROMSPJ
WHEREJNONOTIN(SELECTJNOFROMSPJ,P,S
WHERES.CITY='天津'ANDCOLOR='红'
ANDS.SNO=SPJ.SNOANDP.PNO=SPJ.PNO)
5、SELECTPNO
FROMSPJ
WHERESNO=’S1’
SELECTJNO
FROMSPJ
WHEREPNO=’P1’ANDJNOIN(SELECTJNO
FROMSPJ
WHEREPNO=’P2’)
6、SELECTJNO,QTY
FROMSPJ
WHEREPNO=’P1’
ORDERBYQTYDESC
四﹑思考题
1.如何提高数据查询和连接速度。
答:
建立视图
2.试比较连接查询和嵌套查询
答:
有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比嵌套查询高出很多;当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造具有结构化程序设计的优点,但是相比于连接运算,目前商用关系数据库管理系统对嵌套查询的优化做的还不够完善,所以在实际应用中,能够用连接运算表达的查询尽可能采用连接运算。
实验三数据库的维护实验
一﹑实验目的
要求学生熟练使用和掌握数据库的维护操作,包含数据的插入、检索、修改,掌握SQLServer中用户、角色及操作权限的管理方法,学会创建和使用规则、缺省和触发器。
二﹑实验内容
用T-SQL语言表示以下操作:
题目1实验内容:
1.把全部红色零件颜色改为粉红色;
2.由S1供给J1的零件P1今改为由S2供应,作必要修改;
3.删去全部蓝色零件及相应的SPJ记录;
4.把全部螺母的重量置为0;
5.为SPJ表的QTY字段设计CHECK约束:
0〈QTY〈1000;
6.实现对SPJ表的操作权限管理的使用。
三、SQL语句
1、UPDATEP
SETCOLOR=’粉红’
WHEREPNOIN(SELECTPNOFROMP
WHERECOLOR=’红’)
2、UPDATESPJ
SETSNO=’S2’
WHERESNO=’S1’ANDJNO=’J1’ANDPNO=’P1’
3、DELETE
FROMP
WHERECOLOR=’蓝’
DELETE
FROMSPJ
WHEREPNO='P3'ORPNO='P5'
4、UPDATEP
SETWEIGHT='0'
WHEREPNAME='螺母'
5、CREATTABLESPJ
SNOCHAR
(2)
PNOCHAR
(2)
JNOCHAR
(2)
QTYINTCHECK(06、CREATEROLEUSER1
GRANTSELECT,UPDATE,DELETE,INSERT
ONSPJ
TOUSER1
四、思考题
1.为什么不能随意删除被参考表中的主码。
答:
破坏了数据的完整性
2.数据库中一般不允许更改主码数据。
如果需要更改主码数据时,怎样处理?
答:
需要查看是否该表的主码别的表的外码并被依赖,如果是需要先将另一个表中跟需要删除的信息有关的元组,然后再更改主码数据。
3.两种SQLServer的安全认证模式及特点。
答:
混合模式,就是使用windos集成的身份验证也可以,使用SQLServer独立认证可以。
这种方式验证方式较宽,安全性跟兼容性是较为平衡的。
Windows集成身份验证,仅仅支持windos集成的身份,这种方式比较不安全,因为没有SQLServer的独立授权,与Windows自身的权限可能出现交叉问题,会造成安全问题。
4.什么是触发器?
主要功能时什么?
答:
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。
任何用户对表的增,删,改操作均由服务器自动激活相应的触发器,在关系数据库管理系统核心层进行集中的完整性控制。
触发器类似于约束,但是比约束更加灵活,可以实现复杂的检查和操作,具有更精细和更强大的数据控制能力。
实验四数据库的统计输出实验
一﹑实验目的
熟练掌握和使用分组查询和函数查询的使用方法,完成数据查询中的统计、计算输出的操作方法。
二﹑实验内容
题目1实验内容:
1.找出向北京供应商购买重量大于30的零件的工程号;
2.找出工程项目J2使用的各种零件的名称及其数量;
3.按工程号递增的顺序列出每个工程购买的零件总数;
4.编程输出如下报表:
供应商
零件
工程项目
数量
三﹑SQL语句
1、SELECTSPJ.JNO
FROMSPJ,S,P
WHERES.SNO=SPJ.SNOANDP.PNO=SPJ.PNOAND
S.CITY=’北京’ANDP.WEIGHT>30
2、SELECTP.PNAME,SPJ.QTY
FROMP,SPJ
WHEREP.PNO=SPJ.PNOANDJNO=’J2’
3、SELECTJNO,SUM(QTY)
FROMSPJ
GROUPBYJNO
ORDERBYJNOASC
4、SELECTSNO,PNO,JNO,QTY
FROMSPJ
GROUPBYSNO,PNO,JNO,QTY
ORDERBYJNOASC
四﹑思考题
1.统计函数和分组统计函数有什么不同?
答:
统计函数是按某种要求,对某个属性的一列值进行计算,对数值进行整合,而分组统计函数是将查询结果按某一列或多列的值分组,值相等的为一组。
目的是为了细化聚集函数的作用对象。
分组后聚集函数将作用于每一个组,即每一组都有一个函数值。
2.使用GROUPBY<条件条件>子句后,语句中的统计函数的运行结果有什么不同?
答:
如果未对查询结果分组,聚集函数将作用于整个查询结果,分组后聚集函数将作用于每一个组,即每一个组都有一个函数值'。