MySQL-存储过程与触发器
MySQL-存储过程与触发器
urcuteimmehinge目标
本实验任务是掌握MySQL数据库编程技术,学会独立编写和调试存储过程和触发器
打开 MySQL 服务
sudo service mysql start
#使用 root 用户登录,输入密码
mysql -u root -p
后续的实验都在 MySQL 的控制台输入命令进行操作。
功能描述
1.图书信息表(book)
字段名称 数据类型 是否可为空
图书编号(PK) varchar(20) 否
书名 varchar(50) 否
作者 varchar(12) 否
出版社 varchar(50) 是
出版日期 date 是
简介 varchar(200) 是
2.读者信息表(student)
字段名称 数据类型 是否可为空
读者学号(PK) int 否
读者姓名 varchar(10) 否
读者性别(男/女) varchar(3) 否
所在系 varchar(12) 否
生效时间 date 是
失效时间 date 是
累计借书量 int 是
3.借阅表(borrow)
字段名称 数据类型 是否可为空
读者学号 int 否
图书编号 varchar(20) 否
借书日期 date 否
还书日期 date 是
根据上述表结构完成任务。
分析
- 创建一个存储过程,传入一个读者姓名,以输出参数的形式返回借了多少本书。
- 调用上述存储过程,检索张延借了多少本书。
- 在读者信息表上建立触发器,删除某个读者信息时,删除借阅表中相应的记录。
步骤
- 连接数据库,新建SQL窗口,创建测试表,插入测试数据:
#创建测试表
1 | create table book( |
- 创建一个存储过程,传入一个读者姓名,以输出参数的形式返回借了多少本书:
1 | CREATE DEFINER=`root`@`localhost` PROCEDURE `p_select`(in name varchar(10), out num int) |
- 调用上述存储过程,检索张延借了多少本书:
1 | call p_select('张延',@num); |
- 在读者信息表上建立触发器,删除某个读者信息时,删除借阅表中相应的记录:
1 | DELIMITER $$ |
- 删除编号为1004的读者信息后查看借阅信息表:
原始的借阅信息表
1 | delete from student where sno=1004; |
删除读者信息后的借阅信息表
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果