MySQL 存储过程实现简单的借书还书业务 |
您所在的位置:网站首页 › 存储过程的测试 › MySQL 存储过程实现简单的借书还书业务 |
案例:使用存储过程完成借书操作
案例:使用存储过程完成借书操作
注:未经本作者允许,严禁转载 一、准备数据建库建表加数据 ## 借书案例 -- 创建数据库 CREATE DATABASE db_book_case; -- 使用数据库 USE db_book_case; -- 创建图书信息表 CREATE TABLE books( book_id INT AUTO_INCREMENT, book_name VARCHAR(50) NOT NULL, book_author VARCHAR(20) NOT NULL, book_price DECIMAL(10,2) NOT NULL, book_stock INT NOT NULL, book_desc VARCHAR(200), PRIMARY KEY (book_id) ); -- 添加图书信息 INSERT INTO books(book_name,book_author,book_price,book_stock,book_desc) VALUES('Java程序设计','老威',67.9,20,'老威教你Java入门到入土'); INSERT INTO books(book_name,book_author,book_price,book_stock,book_desc) VALUES('Java王者之路','海明',97.9,10,'Java王者领路人·海明'); -- 创建学生信息表 CREATE TABLE students( stu_num CHAR(8), stu_name VARCHAR(20) NOT NULL, stu_gender CHAR(2) NOT NULL DEFAULT '男', stu_age INT NOT NULL, PRIMARY KEY (stu_num) ); -- 添加学生信息 INSERT INTO students(stu_num,stu_name,stu_gender,stu_age)VALUES('1001','张三','男','18'); INSERT INTO students(stu_num,stu_name,stu_gender,stu_age)VALUES('1002','李四','女','18'); INSERT INTO students(stu_num,stu_name,stu_gender,stu_age)VALUES('1003','王五','男','18'); 二、创建关系表创建一个存储过程实现借书的操作:哪个学生借了哪本书,一共借了多少本? 业务分析 操作: 保存借书记录修改图书库存条件: 判断学生是否存在判断图书是否存在,库存是否充足创建借书记录表 -- 借书记录表 CREATE TABLE records( rid INT AUTO_INCREMENT COMMENT '借书记录id', snum CHAR(8) NOT NULL COMMENT '学生id', bid INT NOT NULL COMMENT '图书id', borrwo_num INT NOT NULL COMMENT '借书的数量', is_return INT NOT NULL COMMENT '0表示未归还,1表示已经归还', borrow_date DATE NOT NULL COMMENT '借书时间', CONSTRAINT FK_RECORDS_STUDENTS FOREIGN KEY(snum) REFERENCES students(stu_num), CONSTRAINT FK_RECORDS_BOOKS FOREIGN KEY(bid) REFERENCES books(book_id), PRIMARY KEY (rid) );创建没问题,调用测试一下存储过程 ## 调用存储过程借书 -- 测试学号不存在 SET @state=0; CALL proc_borrow_book('1005',1,2,@state); SELECT @state FROM DUAL; -- 测试图书不存在 SET @state=0; CALL proc_borrow_book('1001',3,2,@state); SELECT @state FROM DUAL; -- 测试图书库存不足 SET @state=0; CALL proc_borrow_book('1001',2,50,@state); SELECT @state FROM DUAL; -- 测试借书成功 SET @state=0; CALL proc_borrow_book('1001',1,2,@state); SELECT @state FROM DUAL;来看一下结果,是否有借书记录 books 表原来库存是 20 本的 现在是18本 我这里写的是如果还书的库存为 0 则删除该记录,也是没问题的 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |