--创建文件夹
exec xp_cmdshell 'md D:\bank',no_output
--建库
use master
if exists(select * from sysdatabases where name='bankDB')
drop database bankDB
go
create database bankDB
on
(
name='bankDB',
filename='D:\bank\bankDB.mdf'
)
go
use bankDB
go
--建立用户信息表
create table userInfo
(
customerID int identity(1,1),--顾客编号
customerName varchar(10) not null,--开户名
PID char(19) not null,--身份z
telephone char(13) not null,--联系电话
address text --居住地址
)
--用户表约束
alter table userInfo
add constraint PK_customerID primary key(customerID)
,constraint CK_PID check(len(PID)=18 or len(PID)=15)
,constraint UQ_PID unique(PID)
,constraint CK_telephone check(telephone like '____-________' or len(telephone)=11)--建立yhk信息表
create table cardInfo
(
cardID char(19) not null,--卡号
curType char(4) not null,--货币种类
savingType char(10) not null,--存款类型
openDate datetime not null,--开户日期
openMoney money not null,--开户金额
balance money not null,--余额
pass char(6) not null,--密码
IsReportLoss char(2) not null,--是否挂失
customerID int not null --顾客编号
)
--银行表约束
alter table cardInfo
add constraint PK_cardID primary key(cardID)
,constraint CK_cardID check(len(cardID)=19)
,constraint DF_curType default('RMB') for curType
,constraint CK_savingType check(savingType in('活期','定活两便','定期'))
,constraint DF_openDate default(getdate()) for openDate
,constraint CK_openMoney check(openMoney>=1)
,constraint CK_balance check(balance>=1)
,constraint DF_pass default('888888') for pass
,constraint CK_IsReportLoss check(IsReportLoss in ('是','否'))
,constraint DF_IsReportLoss default ('否') for IsReportLoss
,constraint FK_cardInfo_userInfo foreign key(customerID) references userInfo(customerID)--建立交易信息表
create table transInfo
(
transDate datetime not null,--交易时间
cardID char(19) not null,--卡号
transType char(4) not null,--交易类型
transMoney money not null,--交易金额
remark text --备注
)
--交易表约束
alter table transInfo
add constraint DF_transDate default(getdate()) for transDate
,constraint FK_transInfo_cardInfo foreign key(cardID) references cardInfo(cardID)
,constraint CK_transType check(transType in ('存入','取出'))
,constraint CK_transMoney check(transMoney>0)--插入测试数据
--插入测试数据
delete from cardInfodelete from userInfo
declare @customerID int
insert into userInfo values('张三',123456789012345,'0010-67898978','北京海淀')
select @customerID=max(customerID) from userInfo
insert into cardInfo (cardID,savingType,openMoney,balance,customerID)
values('1010 3576 1234 5678','活期',1000,1000,@customerID)insert into userInfo (customerName,PID,telephone)
values('李四',321245678912345678,'0478-44443333')
select @customerID=max(customerID) from userInfo
insert into cardInfo(cardID,savingType,openMoney,balance,customerID)
values('1010 3576 1212 1134','定期',1,1,@customerID)select * from userInfo
select * from cardInfo--张三取900,李四存5000
insert into transInfo(transType,cardID,transMoney) values('取出','1010 3576 1234 5678',900)
update cardInfo set balance = balance-900 where cardID='1010 3576 1234 5678' insert into transInfo(transType,cardID,transMoney) values('存入','1010 3576 1212 1134',5000)
update cardInfo set balance = balance+5000 where cardID='1010 3576 1212 1134'--7常规业务模拟
--1.修改密码
update cardInfo set pass=123456 where cardID='1010 3576 1234 5678'
update cardInfo set pass=123123 where cardID='1010 3576 1212 1134'
--2.李四申请挂失
update cardInfo set IsReportLoss='是' where cardID='1010 3576 1212 1134'
select * from cardInfo
--3.统计银行的资金流通余额和盈利结算
declare @inMoney money,@outMoney money
select @inMoney=sum(transMoney) from transInfo where transType ='存入'
select @outMoney=sum(transMoney) from transInfo where transType='取出'
print '银行流通余额总计为:'+convert(varchar(10),(@inMoney-@outMoney))+'RMB'
print '盈利结算为:'+convert(varchar(10),(@outMoney*0.008-@inMoney*0.003))
--4.查询本周开户的卡号,显示该卡相关信息。
SELECT * FROM cardInfo WHERE (DATEDIFF(Day,getDate(),openDate)<DATEPART(weekday,openDate))
/*---------查询本月交易金额最高的卡号----------------------*/
SELECT * FROM transInfo
SELECT DISTINCT cardID FROM transInfo WHERE transMoney=(SELECT Max(transMoney) FROM transInfo)
/*---------查询挂失帐号的客户信息---------------------*/
SELECT customerName as 客户姓名,telephone as 联系电话 FROM userInfo
WHERE customerID IN (SELECT customerID FROM cardInfo WHERE IsReportLoss='是')
/*------催款提醒:例如某种业务的需要,每个月末,如果发现用户帐上余额少于200元,将致电催款。---*/
SELECT customerName as 客户姓名,telephone as 联系电话,balance as 帐上余额
FROM userInfo INNER JOIN cardInfo ON userInfo.customerID=cardInfo.customerID WHERE balance<200
新安装了jdk
6
的程序员们也许会发现,除了传统的
bin、jre
等目录,jdk
6
新增了一个名为
db
的目录。这便是
java
6
的新成员:java
db。这是一个纯
java
实现、开源的数据库管理系统(dbMS),源于
Apache
软件基金会(asf)名下的项目
Derby。它只有
2MB
大小,对比动辄上
G
的数据库来说可谓袖珍。但这并不妨碍
Derby
功能齐备,支持几乎大部分的数据库应用所需要的特性。更难能可贵的是,依托于
asf
强大的社区力量,Derby
得到了包括
ibm
和
Sun
等大公司以及全世界优秀程序员们的支持。这也难怪
Sun
公司会选择其
10.2.2
版本纳入到
jdk
6
中,作为内嵌的数据库。这就好像为
jdk
注入了一股全新的活力:java
程序员不再需要耗费大量精力安装和配置数据库,就能进行安全、易用、标准、并且免费的数据库编程。在这一章中,我们将初窥
java
db
的世界,来探究如何使用它编写出功能丰富的程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)