大三上:数据库系统概论所有实验报告:https://blog.csdn.net/COCO56/article/details/102768942
文章目录
一、实验目的及要求
- 熟练使用DBMS提供的功能组件来实现向数据库中插入数据、修改数据和删除数据等操作;
- 掌握用INSERT、DELETE、UPDATE语句实现对数据库的增加、删除和修改;
- 进一步理解完整性约束的概念,了解DBMS对完整性约束检查的实现;
- 熟练使用DBMS提供的功能组件来实现向数据库中视图的定义。
- 掌握对视图的操作。
二、实验内容(或实验原理、实验拓扑)
- 数据的更新操作:包括实现对关系表进行插入、修改和删除操作。
- 体会完整性约束的作用,设置数据修改和删除的处理策略。当更新操作可能破坏参照完整性时,根据需要设置系统的操作策略。
- 视图的定义:包括实现数据库中视图的创建、修改和删除。
- 通过视图实现数据的查询和更新。
三、实验设备与环境
I7 7700HQ+16G内存+43TB分布式硬盘的笔记本电脑、Windows 10 1903政府版、Visual Studio 2019 企业版、.NET Framework 4.7.2
四、实验设计方案(包括实验步骤、设计思想、算法描述或开发流程等)
任务一
- 启动DBMS服务器,视情况决定是否附加实验用数据库。
- 利用对象资源管理器,对指定数据库中的表进行数据的添加、修改和删除。尝试去做一些违反数据库定义中的约束的操作,分析反馈操作信息,并回答思考问题。
- 在查询编辑器中,利用INSERT、DELETE、UPDATE语句在指定的数据库的相关表中进行如下数据的添加、修改和删除。对操作中出现的问题进行分析,并加以解决。
第一阶段:在已经创建好的eshop数据库中的各表中添加样例数据。
- 在eshop数据库的members表中增加2条记录,内容如下:
‘jinjin’, ‘津津有味’,‘女’,‘1982-04-14’,‘北京市’,8200.0, ‘jinjin’
‘liuzc518’,‘刘志成’,‘男’,‘1972-05-18’,‘湖南株洲’,3500.0,‘liuzc518’ - 将姓名为“津津有味”的姓名修改为“刘津”
- 将m_sex(性别)为‘男’且m_address(家庭地址)为‘湖南株洲’的会员的m_salary(月薪)增加20%
- 删除m_address(家庭地址)为‘北京市’的会员记录。
- 删除members表中所有记录。
第二阶段:教材P130 习题 5、(8)-(11)
5.针对习题4中的四个表试用SQL语言完成以下各项操作:
(8)把全部红色零件的颜色改成蓝色。
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
(11)请将(S2, J6, P4, 200)插入供应情况关系。
第三阶段:更新“学生—课程”数据库(选作)。
- 向学生表S中插入一行数据。(分析插入数据的学号与已有学号相同或不同时的反馈信息)。
- 根据学生表和课程表生成一个“计算机”系学生的成绩临时表CGRADE,表中包括SN、CNO、GRADE三个属性。
- 将王玲所学的高等数学成绩改为86.0.
- 删除成绩低于所有课程平均成绩的选课元组。
- 设置数据修改和删除的处理策略。(要求选课表中有S04的选课信息)
a.将学生表中学号为S04的学生学号修改为S28。
b.删除学生表中学号为S28的学生信息。
查看执行操作后表SC的变化情况或不能执行操作的反馈信息,并加以分析。
任务二
- 启动DBMS服务器,视情况决定是否附加实验用数据库。
- 在查询编辑器(或对象资源管理器)中,进行视图的创建、修改、删除操作。
第一阶段:在已经创建好的eshop数据库中进行视图的相关操作。
- 在members表中创建地址为“湖南株洲”的会员的视图V_addr。
- 在orders表中创建购买了商品号为“0910810004”商品的视图V_buy。
- 在members和orders表上创建“湖南株洲”的会员购买了商品号为“0910810004”商品的视图V_addr_buy。
- 在视图V_addr上查询性别为“男”的会员信息。
- 在视图V_addr中增加一条记录(内容如下),并查看members表中记录的改变情况。记录内容如下:(T-SQL)
‘fengxk’,‘冯向克’,‘男’,‘1978-06-28’,‘北京市’,5000.0,‘fxk0628’ - 将视图V_addr中会员号为“liuzc518”的会员的密码修改为“liuzc0518”,并查看members中记录的改变情况。
- 在V_addr中删除会员号为“fengxk”的记录,并查看members中记录的改变情况。
- 删除视图V_addr_buy、V_buy和V_addr
第二阶段:教材P130 习题 9(1)-(2)
9.请为三建工程项目建立一一个供应情况的视图,包括供应商代码(SNO)、零件代码( PNO)、
供应数量(QTY)。
针对该视图完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量。
(2)找出供应商S1供应三建工程的情况。
五、实验结果(包括设计效果、测试数据、运行结果等)
任务一
第一阶段:在已经创建好的eshop数据库中的各表中添加样例数据。
- 在eshop数据库的members表中增加2条记录,内容如下:
‘jinjin’, ‘津津有味’,‘女’,‘1982-04-14’,‘北京市’,8200.0, ‘jinjin’
‘liuzc518’,‘刘志成’,‘男’,‘1972-05-18’,‘湖南株洲’,3500.0,‘liuzc518’
- 将姓名为“津津有味”的姓名修改为“刘津”
- 将m_sex(性别)为‘男’且m_address(家庭地址)为‘湖南株洲’的会员的m_salary(月薪)增加20%。
- 删除m_address(家庭地址)为‘北京市’的会员记录。
- 删除members表中所有记录。
第二阶段:教材P130 习题 5、(8)-(11)
5.针对习题4中的四个表试用SQL语言完成以下各项操作:
(8)把全部红色零件的颜色改成蓝色。
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
(11)请将(S2, J6, P4, 200)插入供应情况关系。
任务二
第一阶段:在已经创建好的eshop数据库中进行视图的相关操作。
- 在members表中创建地址为“湖南株洲”的会员的视图V_addr。
- 在orders表中创建购买了商品号为“0910810004”商品的视图V_buy。
- 在members和orders表上创建“湖南株洲”的会员购买了商品号为“0910810004”商品的视图V_addr_buy。
- 在视图V_addr上查询性别为“男”的会员信息。
- 在视图V_addr中增加一条记录(内容如下),并查看members表中记录的改变情况。记录内容如下:(T-SQL)
‘fengxk’,‘冯向克’,‘男’,‘1978-06-28’,‘北京市’,5000.0,‘fxk0628’
- 将视图V_addr中会员号为“liuzc518”的会员的密码修改为“liuzc0518”,并查看members中记录的改变情况。
- 在V_addr中删除会员号为“fengxk”的记录,并查看members中记录的改变情况。
- 删除视图V_addr_buy、V_buy和V_addr
第二阶段:教材P130 习题 9(1)-(2)
9.请为三建工程项目建立一一个供应情况的视图,包括供应商代码(SNO)、零件代码( PNO)、
供应数量(QTY)。
针对该视图完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量。
(2)找出供应商S1供应三建工程的情况。
六、实验小结(包括收获、心得体会、注意事项、存在问题及解决办法、建议等)
任务一:
操作过程中,注意以下几点:
- 在输入数据时,要注意数据类型、键和数据约束的限制。
- 数据更改和删除时要注意参照完整性约束。
- 往基本表中插入记录时表名后面可带列名表(插入指定列及列顺序,指定对应列的值),也可不带列名表(指定所有列的值,按固定顺序)。
任务二:
操作过程中,注意以下几点:
- 视图是一个虚表,只是为用户提供了一个观察底层数据的窗口,通过视图看到的数据会随关系表的变化而改变。
- 用户可像操作关系表一样操作视图,但操作能否成功,还要看对视图的操作能否由DBMS转化为对相应基表的操作。
七、附录(包括作品、流程图、源程序及命令清单等)
-- 任务一:
-- 第一阶段:在已经创建好的eshop数据库中的各表中添加样例数据。
USE eshop
--(1)在eshop数据库的members表中增加2条记录,内容如下:
--‘jinjin’, ‘津津有味’,‘女’,‘1982-04-14’,‘北京市’,8200.0, ‘jinjin’
--‘liuzc518’,‘刘志成’,‘男’,‘1972-05-18’,‘湖南株洲’,3500.0,‘liuzc518’
INSERT INTO members VALUES('jinjin','津津有味','1982-04-14','女','北京市',8200.0,'jinjin')
INSERT INTO members VALUES('liuzc518','刘志成','1972-05-18','男','湖南株洲',3500.0,'liuzc518')
--(2)将姓名为“津津有味”的姓名修改为“刘津”
update members set M_name='刘津' where M_account='jinjin'
--(3)将m_sex(性别)为‘男’且m_address(家庭地址)为‘湖南株洲’的会员的m_salary(月薪)增加20%
update members set M_salary*=1.2 where M_sex='男' and M_address='湖南株洲'
--(4)删除m_address(家庭地址)为‘北京市’的会员记录。
delete from members where M_address='北京市'
--(5)删除members表中所有记录。
delete from members
--第二阶段:教材P130 习题 5、(8)-(11)
use spj
--(8)把全部红色零件的颜色改成蓝色。
UPDATE P SET
PColor='蓝' WHERE PColor='红' ;
--(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
UPDATE SPJ SET SNO='S3' WHERE SNO='S5'AND JNO='J4' AND PNO='P6'
--(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
DELETE FROM SPJ WHERE SNO='S2';
DELETE FROM S WHERE SNO='S2';
--(11)请将(S2, J6, P4, 200)插入供应情况关系。
INSERT INTO SPJ(SNO, JNO, PNO, QTY)
/*INTO子句中指明列名*/
VALUES('S2', 'J6', 'P4', 200);
/*插入的属性值与指明列要对应*/
--任务二:
--第一阶段:在已经创建好的eshop数据库中进行视图的相关操作。
USE eshop
--(1)在members表中创建地址为“湖南株洲”的会员的视图V_addr。
create view V_addr as select * from members where M_address='湖南株洲'
--(2) 在orders表中创建购买了商品号为“0910810004”商品的视图V_buy。
create view V_buy as select * from orders where P_no='0910810004'
--(3)在members和orders表上创建“湖南株洲”的会员购买了商品号为“0910810004”商品的视图V_addr_buy。
create view V_addr_buy as SELECT members.* FROM members
JOIN orders ON members.m_account = orders.m_account
AND p_no = '0910810004' AND m_address = '湖南株洲'
--(4)在视图V_addr上查询性别为“男”的会员信息。
SELECT * FROM V_addr WHERE m_sex = '男'
--(5)在视图V_addr中增加一条记录(内容如下),并查看members表中记录的改变情况。记录内容如下:(T-SQL)
--‘fengxk’,‘冯向克’,‘男’,‘1978-06-28’,‘北京市’,5000.0,‘fxk0628’
INSERT into V_addr VALUES('fengxk','冯向克','1972-05-18','男','北京市',5000.0,'fxk0628')
--(6)将视图V_addr中会员号为“liuzc518”的会员的密码修改为“liuzc0518”,并查看members中记录的改变情况。
UPDATE V_addr
SET m_password = 'liuzc0518'
WHERE m_password = 'liuzc518'
select * from members where M_account='liuzc518'
--(7)在V_addr中删除会员号为“fengxk”的记录,并查看members中记录的改变情况。
DELETE
FROM V_addr
WHERE m_account = 'fengxk'
select * from members where M_account='fengxk'
--(8) 删除视图V_addr_buy、V_buy和V_addr
DROP VIEW V_addr_buy, V_buy, V_addr
--第二阶段:教材P130 习题 9(1)-(2)
use spj
--9.请为三建工程项目建立一一个供应情况的视图,包括供应商代码(SNO)、零件代码( PNO)、
--供应数量(QTY)。针对该视图完成下列查询:
--创建视图:
CREATE VIEW V_SPJ AS
SELECT SNO, PNO, QTY FROM SPJ
WHERE JNO=
(SELECT JNO FROM J WHERE JNAME='三建')
--(1)找出三建工程项目使用的各种零件代码及其数量。
SELECT PNO,QTY FROM V_SPJ;
--(2)找出供应商S1供应三建工程的情况。
SELECT PNO,QTY FROM V_SPJ /*S1供应三建工程的零件号和对应的数量*/
WHERE SNO='S1'