银行操作系统简单交易

来源:互联网 发布:苹果系统删除软件 编辑:程序博客网 时间:2024/05/21 08:04

#创建用户并给其附权限


#用户信息
create table useinfo(
customerID int (4) primary key auto_increment,
customerName char(8) not null comment'用户编号',
pid char (18) unique not null comment ' 身份证号',
telephone char(11) not null  comment '手机号',
address varchar(50) comment '居住地址'
)engine = innoDB,comment = '用户表';


#银行卡信息表
create table cardInfo(
cardID char(16) primary key not null comment'银行卡号',
curID varchar(50) not null default 'RMB' ,
savingID varchar(50) not null comment = '存款类型',
openDate timestamp not null default now() comment '开户日期',
openMoney decimal(9,2) not null comment '开户金额',
balance decimal(9,2) not null comment '余额',
password char(6) not null default '888888',
IsReportLosss bit not null default 0,
customerID int not null comment'客户编号'
);


#交易信息表
create table tradeInfo(
transDate timestamp not null default now() comment'交易日期',
cardID char(16) not null ,
transType char(6) not null comment'交易类型',
transMoney decimal(9,2) not null comment'交易金额',
remark text comment '备注'
);


#存款类型表
create table deosit(
savingID int primary key auto_increment comment'存款类型号',
savingName varchar(50) not null comment'存款类型名称',
descrip varchar(252)  comment'描述'
);


#银行卡信息到用户信息的外键约束
alter table cardInfo add constraint 'fk_user_cardInfo' foreing key ('customerID') references 'userInfo'(customerID)


alter table tradeInfo add constraint 'fk_trade_cardInfo' foreing key  ('cardID') references 'cardInfo'('cardID')


1.办理银行卡挂失

   使用UPDATE语句实现密码变更和卡挂失
     UPDATE … WHERE …
UPDATE cardInfo SET IsReportLoss=1 WHERE cardID='1010357612121134' 
        SELECT * FROM cardInfo


2.统计银行总存入金额和总支取金额
   使用聚合函数SUM()
      SELECT tradeType 资金流向, SUM(tradeMoney) 总金额 FROM…
SELECT * FROM tradeInfo; 
SELECT tradeType 资金流向, SUM(tradeMoney) 总金额 FROM tradeInfo GROUP BY tradeType;


3.查询本周开户的卡号,显示该卡相关信息
       SELECT …FROM…WHERE WEEK(NOW()) = WEEK(openDate);
SELECT c.cardID 卡号,u.customerName 姓名,c.curID 货币,d.savingName 存款类型,c.openDate 开户日期,c.openMoney 开户金额,c.balance 存款余额,IsReportLoss 账户状态
FROM cardInfo c INNER JOIN userInfo u ON (c.customerID = u.customerID)
INNER JOIN deposit d ON (c.savingID = d.savingID )
WHERE WEEK(NOW()) = WEEK(openDate);


4.查询本月交易金额最高的卡号
   使用子查询和DISTINCT关键字去掉重复的卡号
      SELECT DISTINCT cardID  FROM transInfo  WHERE transMoney = ( SELECT … FROM … )
SELECT * FROM tradeInfo;
SELECT DISTINCT cardID FROM tradeInfo WHERE  tradeMoney=
(SELECT MAX(tradeMoney) FROM tradeInfo
WHERE MONTH(tradeDate)=MONTH(NOW())
AND YEAR(tradeDate)=YEAR(NOW()));



5.查询挂失账号的客户信息
     使用子查询IN 或内联接查询INNER JOIN
        SELECT … FROM userInfo  WHERE customerID IN ( SELECT … FROM … )
 SELECT customerName AS 客户姓名,telephone AS 联系电话 FROM userInfo 
          WHERE customerID IN (SELECT customerID FROM cardInfo WHERE IsReportLoss='挂失');


6.催款提醒业务
    使用子查询IN 或内联接查询IN0.NER JOIN
       SELECT … FROM userInfo  INNER JOIN …
SELECT customerName AS 客户姓名,telephone AS 联系电话,balance AS 存款余额 
FROM userInfo INNER JOIN cardInfo ON  userInfo.customerID=cardInfo.customerID 
WHERE balance<200;
0 0
原创粉丝点击