大型数据库第三次实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京邮电大学计算机学院
《大型数据库技术》
实验三:MySQL数据库进阶开发
姓名:班级:学号:
年月日星期
说明:斜体需要输出的部分。
1MySQL的存储过程和函数
1.1创建企业销售系统的数据库,命名为salesdb
1.2创建一张商品销售表,命名为salerecords,包括如下字段:商品ID,商品名称,
销售单价,销售数量。
以上不需要截图。
1.3创建一个存储过程,名称自订,通过输入商品ID,商品名称,销售单价,销售数量
往表中插入一条记录。
输出截图:(包括存储过程定义,调用三次存储过程,以及表的查询结果)
1.4创建一个存储过程,名称自订,通过输入商品名称往表中插入100条记录。其中,
所插入第一条记录的商品ID由现有表中商品ID的最大值+1构成,后续记录中商品ID依次递增1。所插入第一条记录的商品价格与现有表中商品价格的最小值相同,后续记录的商品价格依次递增1。商品销售数量随机生成。
输出截图:(包括存储过程定义,表中前10条查询结果)
1.5创建一个存储过程,名称自定,通过输入商品ID的最小值,最大值,将表中商品
ID处于(最小值,最大值)范围内,且为偶数的记录删除,包括最小值与最大值本身。此处不考虑商品ID不存在的情况,在实验时请选择1.4中创建的商品ID范围的子集。
输出截图:
1.6创建两个事件调度器,第一个每3秒往1.2的表中插入一条记录,第二个每30秒清
空1.2的表中的所有记录。
输出截图:(只需要截取两个事件调度器的定义,以及在三个不同时刻查询表中记录count (*)的结果。)
2MySQL的触发器
2.1定义一个触发器,实现如下功能,在往1.2的表中插入记录的时候,将记录同时也插
入到一张新的表sale_backup.
输出截图:(包括触发器定义,以及调用了1.4的存储过程后sale_backup的前10条记录)
3MySQL的事务控制
3.1启动一个事务往1.2的表中插入任意三条记录,提交在第二条和第三条记录中定义
一个savepoint,在插入完成后回滚到定义的savepoint。
输出截图:(包括整个操作过程)
3.2 简述读锁和写锁的区别
a、对MyISAM表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。
b、对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。
简而言之,就是读锁会阻塞写,但是不会堵塞读。而写锁则会把读和写都堵塞。
4MySQL的分区
4.1分别使用range分区(自行决定区间)和hash分区创建对应与1.2中表的分区。输出截图:
4.2插入100条记录后,确认分区中的记录分布情况。
输出截图: