数据管理技术-Lab6
Task1:
- 新建数据库 Library
- 新建如下表:(键与约束自行合理设定即可,字段可自由增加,比如 ID)
账户(用户名, 密码, …)
书库(ISBN, 书名, 数量, …)
借阅记录(用户名, ISBN, 借书时间, 到期时间, 还书时间, …)
Ps:到期时间约定为借书时间+30天。
新建表:
1 | create table account( |
插入数据
1 | INSERT INTO account (user_name, u_password) VALUES |
1-1
用户密码检查/修改: 接收四个参数(用户名,密码,新密码,动作),若动作为1,则检查用户名和密码是否和密码表中存的相符,相符则返回 true,不相符返回false; 若动作为2, 则首先检查用户名、密码是否相符,若不相符返回false,相符则将密码表中的密码改成新密码,返回true。密码要求只包含数字和字母,长度大于等于4、小于等于10。
代码如下:
1 | delimiter $$ |
测试:
1 | call check_or_modify_password('George', '212234', '212.234', 2, @res); |
测试前account
表:

测试后res
输出0,1, 0, 1, 1,测试后account
表:

1-2
借书:接收两个参数(用户名,ISBN),没有足够的书、用户不存在或一个人借阅两本同样的书时返回false,合法执行后,借阅记录表会新增一条记录,书库对应书的数量也需要减1,并返回true;
代码如下:
1 | delimiter $$ |
测试:
1 | call borrow_book('avs', '10008', @res); |
测试前library
表:

测试前record
表:

测试后res
结果为0, 1, 0, 1, 0
测试后library
表:

测试后record
表:

1-3
还书:接收两个参数(用户名,ISBN),未查询到借阅记录时返回false,合法执行后,借阅记录表对应记录会修改还书时间,书库对应书的数量需要加1,并返回true;
代码如下:
1 | delimiter $$ |
测试:
1 | call return_book('Hannah', '10008', @res); |
测试前library
表:

测试前record
表:

测试后res
结果:1, 1,0
测试后library
表:

测试后record
表:

1-4
查看当前借阅记录:接受一个参数(用户名),返回该用户名的当前借阅中的记录(用户名, ISBN, 到期时间)
代码如下:
1 | delimiter $$ |
测试:
1 | call check_record('Hannah'); |
结果如下:



Task2:
创建表:
1 | create table tableA ( |
2-1
加载(一次性插入40万条记录).
代码如下:
1 | delimiter $$ |
测试:
1 | call load_data(400000); |
结果:

2-2
使用定义好的加载存储过程或自定义函数,完成400万条记录的插入.
代码如下:
1 | delimiter $$ |
测试:
1 | call insert_data(4000000); |
结果如图: