之前我们有介绍和学习过“视图,索引,事务,备份与还原”,还有不清楚的小伙伴,可以去看小编之前的文章。
下面我们直接进行课后练习!
课后练习
- 创建一个银行账户表 - uid 主键自增 - uname 用户名 - upsw 密码 - yue 余额 - 创建一个日志表 - lid 主键自增 - fromuid 外键,从哪个账户转出去 - touid 外键, 转到哪个账户 - qian 转账钱数 - 为账户表增加两行数据 - 执行正常转账操作,并增加一条日志记录,注意使用事务保证逻辑的正确,结束前提交事务 - 执行错误的逻辑,然后回滚事务 - 使用mysqldump备份数据 - 使用mysql恢复数据 - 使用select方式备份数据
ALTER DATABASE zy6 DEFAULT CHARACTER SET=utf8;
CREATE DATABASE zy6;
USE zy6;
#创建一个银行账户表
#uid 主键自增
#uname 用户名
#upsw密码
#yue余额
CREATE TABLE bank(
uid INT PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(20) NOT NULL,
upsw VARCHAR(10) NOT NULL,
yue INT
)
#创建一个日志表
#lid主键自增
#fromuid 外键,从哪个账户转出去
#touid外键, 转到哪个账户
#qian转账钱数
CREATE TABLE rz(
lid INT PRIMARY KEY AUTO_INCREMENT,
fromuid INT,
touid INT,
qian INT
)
ALTER TABLE rz ADD CONSTRAINT b_id FOREIGN KEY(fromuid) REFERENCES bank(uid);
ALTER TABLE rz ADD CONSTRAINT r_id FOREIGN KEY(touid) REFERENCES bank(uid);
#为账户表增加两行数据
INSERT INTO bank VALUES(NULL,'giao旭','123',10000),(NULL,'sao旭','456',5000)
#执行正常转账操作,并增加一条日志记录,注意使用事务保证逻辑的正确,结束前提交事务
UPDATE bank SET yue=yue-1000 WHERE uid=1;
INSERT INTO rz VALUES(NULL,1,1,-1000);
COMMIT;
SELECT * FROM bank
SELECT * FROM rz
#执行错误的逻辑,然后回滚事务
BEGIN
UPDATE bank SET yue=yue-1000 WHERE uname='giao旭';
UPDATE bank SET yue=yue+1000 WHERE uname='骚旭';
ROLLBACK;
#使用mysqldump备份数据
mysqldump -uroot -p zy6>D:/aaa.sql
#使用mysql恢复数据
mysql -uroot -p zy6
#使用select方式备份数据
SELECT * FROM bank INTO OUTFILE 'c:ss.txt'
#使用insert方式恢复数据
LOAD DATA INFILE 'e:insert.txt' INTO TABLE bank
最后,我们来看看截图: