建表
1 CREATE TABLE cardInfo 2 ( 3 cardid CHAR(16)not NULL PRIMARY key, 4 `password` CHAR(6)not NULL , 5 curID INT(4)not NULL, 6 savingID INT(11)not NULL, 7 openDate TIMESTAMP not NULL, 8 openMoney DECIMAL(20) not NULL, 9 balance DECIMAL(20) not NULL, 10 IsReportLoss bit not NULL, 11 customerID INT(4)not NULL 12 ) 13 ALTER TABLE cardinfo ADD CONSTRAINT Fk_cuid FOREIGN KEY(customerID) REFERENCES userinfo(customerID); 14 ALTER TABLE cardinfo ADD CONSTRAINT FK_saving FOREIGN KEY(savingID) REFERENCES deposit(savingID); 15 16 17 #drop table if exists cardinfo; 18 19 20 CREATE TABLE userInfo 21 ( 22 customerID INT(4) PRIMARY KEY not NULL, 23 customerName CHAR(8) not NULL, 24 PID CHAR(18) not NULL, 25 telephone CHAR(20) not NULL, 26 address VARCHAR(50) 27 ) 28 29 30 CREATE TABLE tradeInfo 31 ( 32 cardID CHAR(16) not NULL, 33 tradeDate TIMESTAMP not NULL, 34 tradeMoney DECIMAL(20)not NULL, 35 tradeType char(4)not NULL, 36 remark text 37 ) 38 ALTER TABLE tradeinfo ADD CONSTRAINT FK_cid FOREIGN KEY(cardid) REFERENCES cardinfo(cardid); 39 40 CREATE TABLE deposit 41 ( 42 savingID INT(4) NOT NULL PRIMARY KEY, 43 savingName VARCHAR(20) NOT NULL, 44 descrip VARCHAR(50) 45 )
測試數據:
1 #存款類型 2 INSERT INTO deposit (savingName,descrip) VALUES ('活期','按存款日結算利息'); 3 INSERT INTO deposit (savingName,descrip) VALUES ('定期一年','存款期是1年'); 4 INSERT INTO deposit (savingName,descrip) VALUES ('定期二年','存款期是2年'); 5 INSERT INTO deposit (savingName,descrip) VALUES ('定期三年','存款期是3年'); 6 INSERT INTO deposit (savingName) VALUES ('定活兩便'); 7 INSERT INTO deposit (savingName) VALUES ('通知'); 8 INSERT INTO deposit (savingName,descrip) VALUES ('零存整取一年','存款期是1年'); 9 INSERT INTO deposit (savingName,descrip) VALUES ('零存整取二年','存款期是2年'); 10 INSERT INTO deposit (savingName,descrip) VALUES ('零存整取三年','存款期是3年'); 11 INSERT INTO deposit (savingName,descrip) VALUES ('存本取息五年','按月支取利息'); 12 SELECT * FROM deposit; 13 14 INSERT INTO userInfo(customerName,PID,telephone,address ) 15 VALUES('張三','123456789012345','010-67898978','北京海淀'); 16 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) 17 VALUES('1010357612345678',1,1000,1000,1); 18 19 INSERT INTO userInfo(customerName,PID,telephone) 20 VALUES('李四','321245678912345678','0478-44443333'); 21 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) 22 VALUES('1010357612121134',2,1,1,2); 23 24 INSERT INTO userInfo(customerName,PID,telephone) 25 VALUES('王五','567891234532124670','010-44443333'); 26 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) 27 VALUES('1010357612121130',2,1,1,3); 28 29 INSERT INTO userInfo(customerName,PID,telephone) 30 VALUES('丁六','567891321242345618','0752-43345543'); 31 INSERT INTO cardInfo(cardID,savingID,openMoney,balance,customerID) 32 VALUES('1010357612121004',2,1,1,4); 33 34 SELECT * FROM userInfo; 35 SELECT * FROM cardInfo; 36 37 38 /* 39 張三的卡號(1010 3576 1234 5678)取款900元,李四的卡號(1010 3576 1212 1134)存款5000元,要求保存交易記錄,以便客戶查詢和銀行業務統計。 40 說明:當存錢或取錢(如300元)時候,會往交易信息表(tradeInfo)中添加一條交易記錄, 41 同時應更新銀行卡信息表(cardInfo)中的現有余額(如增加或減少300元) 42 43 */ 44 SELECT * FROM cardInfo; 45 SELECT * FROM tradeInfo; 46 /*--------------交易信息表插入交易記錄--------------------------*/ 47 INSERT INTO tradeInfo(tradeType,cardID,tradeMoney) 48 VALUES('支取','1010357612345678',900); 49 /*-------------更新銀行卡信息表中的現有余額-------------------*/ 50 UPDATE cardInfo SET balance=balance-900 WHERE cardID='1010357612345678'; 51 52 53 /*--------------交易信息表插入交易記錄--------------------------*/ 54 INSERT INTO tradeInfo(tradeType,cardID,tradeMoney) 55 VALUES('存入','1010357612121134',5000); 56 /*-------------更新銀行卡信息表中的現有余額-------------------*/ 57 UPDATE cardInfo SET balance=balance+5000 WHERE cardID='1010357612121134'; 58 59 60 /*--------檢查測試數據是否正確---------*/ 61 SELECT * FROM cardInfo; 62 SELECT * FROM tradeInfo;
實現功能:
1 SELECT * from userinfo; 2 SELECT * from cardinfo; 3 SELECT * from deposit; 4 SELECT * from tradeinfo; 5 6 #修改張三的密碼為:123456 李四的密碼為123123 7 UPDATE cardinfo SET `PASSWORD`=123456 WHERE customerID=1; 8 UPDATE cardinfo SET `PASSWORD`=123123 WHERE customerID=4; 9 10 #辦理銀行卡掛失 11 SELECT cardid 卡號,curID 貨幣,savingName 儲蓄種類, openDate 開戶日期, openMoney 開戶金額,balance 余額,`password` 密碼,IF(IsReportLoss=0,'未掛失','已掛失') 是否掛失,customerName 客戶姓名 12 FROM cardinfo,userinfo,deposit WHERE cardinfo.customerID=userinfo.customerID and cardinfo.savingID=deposit.savingID;/*若全為未掛失則自己修改幾條*/ 13 14 #統計銀行總存入和總支出 15 SELECT tradetype 資金流向,SUM(trademoney) 總金額 FROM tradeinfo GROUP BY tradetype; 16 17 #查詢本周開戶信息 18 SELECT cardid 卡號,customerName 客戶姓名 ,curID 貨幣,savingName 儲蓄種類, openMoney 開戶金額,balance 余額,IF(IsReportLoss=0,'未掛失','已掛失') 賬戶狀態 19 FROM cardinfo,userinfo,deposit WHERE cardinfo.customerID=userinfo.customerID and cardinfo.savingID=deposit.savingID AND WEEK(NOW())=WEEK(opendate); 20 21 #查詢本月交易金額最高的卡號 22 SELECT cardID from tradeinfo WHERE tradeMoney IN(SELECT MAX(tradeMoney) from tradeinfo WHERE MONTH(tradeDate)=MONTH(NOW())) 23 24 #查詢掛失客戶 25 SELECT customerName 客戶姓名,telephone 聯系電話 from userinfo WHERE customerID in 26 (SELECT customerID from cardinfo WHERE IsReportLoss=1); 27 28 #查詢客戶余額<200則提醒繳費 29 SELECT customerName 客戶名稱,telephone 聯系電話,balance 存款余額 FROM userinfo,cardinfo WHERE userinfo.customerID=cardinfo.customerID AND balance<200; 30 31 #銀行卡視圖 32 DROP VIEW IF EXISTS vw_cardinfo; 33 CREATE VIEW vw_cardInfo 34 AS 35 (SELECT cardid 卡號,customerName 客戶姓名, curID 貨幣,savingName 儲蓄種類, openDate 開戶日期, openMoney 開戶金額,balance 余額,`password` 密碼,IF(IsReportLoss=0,'未掛失','已掛失') 是否掛失 36 FROM cardinfo,userinfo,deposit WHERE cardinfo.customerID=userinfo.customerID and cardinfo.savingID=deposit.savingID); 37 38 #銀行卡交易記錄視圖 39 CREATE VIEW vw_transInfo 40 AS 41 (SELECT tradeDate 交易日期,tradeType 交易類型,cardinfo.cardid 卡號,tradeMoney 交易金額,remark 備注 FROM tradeinfo,cardinfo WHERE tradeinfo.cardID=cardinfo.cardid);