E-R图


创建数据库

#创建银行存取款系统数据库 如果存在先删除在创建
DROP DATABASE IF EXISTS bankDB;
CREATE DATABASE IF NOT EXISTS bankDB;#创建普通用户bankMaster并授权
GRANT ALL ON bankDB TO bankMaster@localhost IDENTIFIED BY '1234';

创建表

#创建银行客户表
DROP TABLE IF EXISTS userInfo;
CREATE TABLE IF NOT EXISTS userInfo(customerID INT(8) PRIMARY KEY AUTO_INCREMENT COMMENT'客户编号',customerName VARCHAR(10) NOT NULL COMMENT'开户姓名',PID CHAR(18) NOT NULL COMMENT'省份证编号',telephone CHAR(11) NOT NULL COMMENT '手机号码',address VARCHAR(50) COMMENT'地址'
)ENGINE=INNODB CHARSET=utf8 COMMENT='客户表';#创建银行卡信息表
DROP TABLE IF EXISTS cardInfo;
CREATE TABLE IF NOT EXISTS cardInfo(cardID VARCHAR(19) NOT NULL PRIMARY KEY COMMENT'银行卡卡号',curID VARCHAR(10) NOT NULL DEFAULT'RMB' COMMENT'币种',savingID INT(2) NOT NULL COMMENT'存款类型 ',openDate TIMESTAMP NOT NULL COMMENT'开卡日期',openmoney DECIMAL NOT NULL COMMENT '开卡金额',balance DECIMAL NOT NULL COMMENT '账户余额',`password` VARCHAR(6) NOT NULL DEFAULT'888888' COMMENT'密码',IsReportLoss BIT NOT NULL DEFAULT 0 COMMENT '是否挂失',customerID INT(8) NOT NULL COMMENT'客户编号'#CONSTRAINT FK_customerID FOREIGN KEY(customerID) references userInfo(customerID)
)ENGINE=INNODB CHARSET=utf8 COMMENT='银行卡信息表';
ALTER TABLE cardinfo MODIFY openmoney DECIMAL(9,2);
ALTER TABLE cardinfo MODIFY balance DECIMAL(9,2);
#创建外键
ALTER TABLE cardInfo
ADD CONSTRAINT FK_customerID FOREIGN KEY(customerID) REFERENCES userINfo(customerID);
ALTER TABLE cardInfo
ADD CONSTRAINT FK_savingID FOREIGN KEY(savingID) REFERENCES deposit(savingID);
#删除外键
#alter table cardInfo drop foreign key FK_savingID;#交易信息表
DROP TABLE IF EXISTS tradeInfo;
CREATE TABLE IF NOT EXISTS tradeInfo(transDate TIMESTAMP NOT NULL COMMENT'交易日期',cardID CHAR(19) NOT NULL COMMENT'卡号',transType CHAR(10) NOT NULL COMMENT'交易类型',transMonry DECIMAL NOT NULL COMMENT'交易金额',remark TEXT COMMENT'交易备注',CONSTRAINT FK_cardID FOREIGN KEY(cardID) REFERENCES cardInfo(cardID)
)ENGINE=INNODB CHARSET=utf8 COMMENT='交易信息表';#存款类型表
DROP TABLE IF EXISTS deposit;
CREATE TABLE IF NOT EXISTS deposit(savingID INT(2) PRIMARY KEY COMMENT'存款类型 ',savingName VARCHAR(20) NOT NULL COMMENT'存款类型名称',curID VARCHAR(10) NOT NULL DEFAULT'RMB' COMMENT'存款币种'
)ENGINE=INNODB CHARSET=utf8 COMMENT='存款类型表';

插入数据

#银行客户表数据
INSERT INTO userInfo(customerID,customerName,PID,telephone,address)
VALUES(1,'丁六','567891321242345618','13645667783','北京西城区'),
(2,'王五','56789132124234567X','13642345112','河北石家庄市'),
(3,'张三','567891321242345789','13567893246','北京海定区'),
(4,'丁一','123451321242345618','13056434411','河南新乡'),
(5,'李四','678911321242345618','13318877954','山东济南市');
#存款类型表数据
INSERT INTO deposit(savingID,savingName)
VALUES(1,"定期一年"),(2,"定期二年"),(3,'活期');
#银行卡信息数据
INSERT INTO cardInfo(cardID,savingID,openDate,openmoney,balance,`password`,IsReportLoss,customerID)
VALUES('1010357612121004',1,NOW(),1,1001,'888888',0,1),
('1010357612121130',1,NOW(),1,1,'888888',0,2),
('1010357612125678',3,NOW(),1000,6100,'123456',0,3),
('1010357612128284',3,NOW(),1000,1001,'888888',0,4),
('1010357612123333',1,NOW(),1,1501,'123123',1,5);
UPDATE cardINfo SET cardID='1010357612121134' WHERE cardID='1010357612123333';
#交易信息表数据
INSERT INTO tradeInfo(transDate,cardID,transType,transMonry,remark)
VALUES(NOW(),'1010357612125678','支取',900,NOW()),
(NOW(),'1010357612121130','存入',300,NOW()),
(NOW(),'1010357612121004','存入',1000,NOW()),
(NOW(),'1010357612121130','存入',1900,NOW()),
(NOW(),'1010357612121134','存入',5000,NOW()),
(NOW(),'1010357612121134','存入',500,NOW()),
(NOW(),'1010357612121134','支取',2000,NOW()),
(NOW(),'1010357612125678','存入',2000,NOW()),
(NOW(),'1010357612121134','支取',2000,NOW()),
(NOW(),'1010357612125678','存入',2000,NOW()),
(NOW(),'1010357612125678','存入',2000,NOW());
#update tradeinfo set transType='支取' where cardID='1010357612121134
#delete from tradeinfo;

模拟常规业务

#模拟常规业务
#(1)修改客户密码:张三、李四
UPDATE cardInfo SET `password`=123456 WHERE cardID='1010357612125678';
UPDATE cardInfo SET `password`=123123 WHERE cardID='1010357612121134';
#(2)办理银行卡挂失 :李四
UPDATE cardInfo SET IsReportLoss=1 WHERE cardID='1010357612121134';
SELECT c.`cardID` '卡号',c.`curID` '货币', d.`savingName` '储存种类', c.`openmoney` '开户金额', c.`balance`'余额',
c.`password` '密码',c.`IsReportLoss`'是否挂失',u.`customerName`'客户姓名'
FROM cardInfo c
INNER JOIN userInfo u
ON c.`customerID`=u.`customerID`
INNER JOIN `deposit` d
ON c.`savingID`=d.`savingID`;
#统计银行总存入金额和总支出金额
SELECT transType 资金流向,SUM(transMonry) 总金额 FROM tradeinfo
WHERE transType='支取'OR transType='存入'
GROUP BY transType;
#查询本周开户信息
SELECT c.`cardID` '卡号', u.`customerName` '姓名',c.`curID` '货币',d.`savingName` '存款类型',
c.`openDate` '开户日期', c.`openmoney` '开好户金额', c.`balance` '存款余额', c.`IsReportLoss`'账户状态'
FROM userinfo u
INNER JOIN cardinfo c
ON u.`customerID`=c.`customerID`
INNER JOIN deposit d
ON c.`savingID`=d.`savingID`
WHERE WEEK(c.`openDate`)=WEEK(NOW());
#查询本月交易金额最高的卡号:存款、取款
SELECT cardID FROM tradeinfo WHERE transMonry=(SELECT MAX(transMonry) FROM tradeInfo WHERE transType='支出' OR transType='存入'AND MONTH(transDate)= MONTH(NOW())
);
#查询挂失客户
SELECT u.`customerName` '客户姓名',u.`telephone` '联系电话',c.`cardID` '卡号',c.`IsReportLoss` '1是/2否挂失'
FROM userinfo u
INNER JOIN cardinfo c
ON c.`customerID`=u.`customerID`
WHERE c.`IsReportLoss`= b'1';
#催款提醒业务
SELECT u.`customerName` '客户姓名',u.`telephone` '联系电话',c.`balance` '存款余额'
FROM userinfo u
INNER JOIN cardinfo c
ON u.`customerID`=c.`customerID`
WHERE c.`balance`<200;

创建视图

#创建用户视图
DROP VIEW IF EXISTS view_userInfo;
CREATE VIEW view_userInfo
AS
SELECT customerID '客户编号', customerName '开户名',PID '身份证号',telephone '电话号码',address '居住地址'
FROM userinfo u;
#创建银行卡视图
DROP VIEW IF EXISTS view_cardinfo;
CREATE VIEW view_cardinfo
AS
SELECT cardID '卡号',customerName '客户名',c.savingID '货币种类',savingName '存款类型',openDate '开户日期',
balance'余额', `password`'密码',IsReportLoss'是否挂失'
FROM userinfo u
INNER JOIN cardinfo c
ON u.customerID=c.customerID
INNER JOIN deposit d
ON c.savingID=d.savingID;
#创建交易记录视图
DROP VIEW IF EXISTS view_transInfo;
CREATE VIEW view_transInfo
AS
SELECT transDate '交易日期',transType '交易类型',cardID '卡号', transMonry '交易金额', remark '备注'
FROM tradeinfo;

数据库事务处理

#使用事物完成转账
#模拟从‘1010357612121134’账户中转账出300元给卡号为’1010357612125678‘的账户 李四转给丁一300
#先关闭自动提交
SET autocommit=0;
#开启事物
START TRANSACTION;
UPDATE cardinfo SET balance=balance-300 WHERE cardID='1010357612121134';
UPDATE cardinfo SET balance=balance+300 WHERE cardID='1010357612125678';
#提交事物 永久保存
COMMENT;
#遇到问题回滚数据回到初始状态
ROLLBACK;
#还原自动提交
SET autocommit=1;

Mysql模拟银行数据库系统相关推荐

  1. Ubuntu下使用C语言和MySQL模拟一个银行管理系统

    首先MySQL基础语法就不说了就增删改查,网上一找一大堆.API函数在MySQL官网上面都有.下面会主要介绍几个常用的. MYSQL C语言API 1.云服务器选择 我选择的是腾讯云服务器,学生认证后 ...

  2. java模拟银行存取_JAVA基础案例 模拟银行存取款业务

    模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型.操作 ...

  3. C语言程序模拟银行输入密码,模拟银行输入密码--源码

    原标题:模拟银行输入密码--源码 C语言-模拟银行输入密码 //C语言-模拟银行输入密码 #include #include int main() { int pass;//存放密码的变量 int i ...

  4. java银行叫号模拟系统_Java 模拟银行叫号机

    创建一个程序,利用多线程模拟银行的排号器的工作过程,即利用多个线程模拟客户到排号器上取号的过程. 提示:设计一个类用于产生号码,设计多个线程模拟用户得到号码.BANK 排号的实现 SroNum 类 p ...

  5. Python基础项目实践之:面向对象方法实现模拟银行管理系统

    Python课堂基础实践系列: Python基础项目实践之:学生信息管理系统 python基础项目实践之: 学生通讯录管理系统 Python基础项目实践之:面向对象方法模拟简单计算器 Python基础 ...

  6. 演练 模拟银行账户业务

    模拟银行账户业务 需求 模拟银行账户业务 创建包bank.com 编写Account类,添加带参 方法实现存款和取款业务 存款时帐户初始金额为0元 取款时如果余额不足给出提示 效果 temp 分析脑图

  7. java实验报告之模拟银行存取款业务

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2022.12.20 La ...

  8. java模仿银行账务业务_Java基础案例 - 模拟银行存取款业务

    博学谷--让IT教学更简单,让IT学习更有效 模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务.登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当 ...

  9. 模拟银行ATM存款存取款的相关功能

    模拟银行ATM存款存取款的相关功能 具体需求: 模拟.3张银行卡,1001,1002,1003,分别设置密码和余额(可以用9个变里分别保存卡号.密码和余额) 提示用户输入银行卡和密码 如果用户输入正确 ...

最新文章

  1. Cisco *** 完全配置指南-连载-PIX和ASA连接的故障诊断与排除
  2. 【BLE MIDI】开发 BLE MIDI 硬件电子乐器设备需要遵循的相关规范 ( 资料收集 )
  3. [SDOI2015]约数个数和
  4. ggplot2箱式图两两比较_作图技巧024篇ggplot2在循环中的坑
  5. 数据3分钟丨《个人信息保护法》将施行;2021全球分布式云大会将在沪召开;GaussDB取得“双第一”...
  6. linxu /proc/stat 文件
  7. matlab 最小二乘法拟合_最小二乘法与高斯马尔科夫定理(无偏性、有效性)
  8. 传言阿里P10赵海平,被P11多隆判定3.25离职,如何评价阿里 P10 赵海平对王垠的面试?
  9. 某用户的计算机最近运行速度明显变慢,电脑运行速度慢,详细教您电脑运行速度变得越来越慢如何解决...
  10. 详解Docker的网络模式之host模式(host网络模式)
  11. 用一个创业故事串起操作系统原理(五)
  12. 苹果手机微信声音小怎么调大声_【泽云广场|好声音KTV】19.9元畅享门市价198元下午场欢唱+茶水!79.9元尊享全天场欢唱+酒水小吃附带纸巾!越夜越时尚!...
  13. Monitor模式和AP模式下获取WiFi的CSI信号
  14. sudoku me_Sudoku,一个完整的MFC应用程序。 第7部分
  15. java过滤微信昵称emoji表情
  16. 计算机无法打开优盘,电脑插入u盘后打不开如何修复
  17. 安格最近推出的AG6202来设计一款HDMI 1.4转VGA的产品|AG6202设计应用
  18. 物联网设备数据流转之数据何时存储:Spring事件及监听机制, 数据入库
  19. 使用Excel 表示汽车、摩托车10年免检时间、非常清晰。
  20. matlab 反激实例(S440_Flyback.slx)

热门文章

  1. java数组字符串转数组或集合
  2. Java servlet视频教程,完整体系课程-动力节点
  3. 回归预测分析MATLAB代码
  4. 计算机摄影比赛,计算机与信息学院影动我心摄影大赛策划.ppt
  5. RT-Thread_rt_kprintf()打印浮点数(解决方法1:rt_vsnprintf替换为vsnprinitf)
  6. 微服务:程序员和架构师的分水岭
  7. centos7 安装 swoole
  8. seo与外链绝密技巧珍藏版分享
  9. python 实现学生信息管理系统+MySql 数据库,包含源码及相关实现说明~
  10. Matlab实现图像压缩