ATM-简单SQL查询
use master
go
if exists(select * from sysDatabases where name = 'BankDB')
drop database BankDB
go
create database BankDB
go
use BankDB
go
--建用户信息表
if exists(select * from sysObjects where name = 'Xxl_UserInfo')
drop table Xxl_UserInfo
go
create table Xxl_UserInfo
(
Xxl_User_Id int not null primary key identity ,
Xxl_User_Name ) not null ,
Xxl_User_Sex bit not null ,
Xxl_User_IDcard ) not null unique ,
Xxl_User_Moblie ) not null check(Xxl_User_Moblie like '1[3579][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
Xxl_User_Address ) not null
)
go
--建用户卡信息表
if exists(select * from sysObjects where name = 'Xxl_CardInfo')
drop table Xxl_CardInfo
go
create table Xxl_CardInfo
(
Xxl_Card_No ) not null primary key check(Xxl_Card_No like '66668888[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') ,
Xxl_Card_pwd ) ') ,
From_Xxl_User_Id int not null references Xxl_UserInfo(Xxl_User_Id),
Xxl_Card_Date DateTime not null default(getdate()) ,
Xxl_Card_Balance ,) ) ,
Xxl_Card_State ,,)),
Xxl_Card_Text ) not null
)
go
--建交易信息表
if exists(select * from sysObjects where name = 'Xxl_TransInfo')
drop table Xxl_TransInfo
go
create table Xxl_TransInfo
(
Xxl_Trans_FlowNum int not null identity primary key ,
From_Xxl_Card_No ) not null references Xxl_CardInfo(Xxl_Card_No) ,
Xxl_Trans_Type ,)) ,
Xxl_Trans_Quota ,) ) ,
Xxl_Trans_Date DateTime not null default(getdate()) ,
Xxl_Trans_ed_Balance ,) ) ,
Xxl_Trans_Text ) not null
)
go
------添加用户信息
,','湖北武汉')
,','湖北武汉')
,','湖北武汉')
----添加用户卡信息
,,,'使用')
,,,'使用')
,,,'使用')
,,,'使用')
----添加交易信息
,,,'存入300元')
,,,'存入300元')
,,,'存入6000元')
,,,'转账3000元给6666888812454852')
,,,'6666888865896548转入的3000元')
,,,'存入3300元')
,,,'存入3000元')
,,,'取出2500元')
------备份交易信息表
select * into Xxl_TransInfo_BAK from Xxl_TransInfo
--------查询各表数据
--select * from Xxl_UserInfo
--select * from Xxl_CardInfo
--select * from Xxl_TransInfo
--select * from Xxl_TransInfo_BAK
----------------------------------------创建函数----------------------------------------
--加逗号的函数
if exists(select * from sysObjects where name='function_JiaDouhao')
drop function function_JiaDouhao
go
,))
) as
begin
))
))
)
begin
)+@b
)
end
return @a+@b
end
go
------------------------------------------结束------------------------------------------
----------------------------------------创建视图----------------------------------------
--用户信息视图
if exists(select * from sysObjects where name ='vw_UserInfo')
drop view vw_UserInfo
go
create view vw_UserInfo
as
select
Xxl_User_Id 编号,
Xxl_User_Name 姓名,
case Xxl_User_Sex
then '女'
then '男'
end 性别,
Xxl_User_IDcard 身份证,
Xxl_User_Moblie 联系电话,
Xxl_User_Address 籍贯
from Xxl_UserInfo
go
--使用视图
--select * from vw_UserInfo
--卡信息视图
if exists(select * from sysObjects where name='vw_CardInfo')
drop view vw_CardInfo
go
create view vw_CardInfo
as
select
Xxl_Card_No 卡号,
Xxl_User_Name 姓名,
Xxl_Card_Balance 余额,
Xxl_Card_Date 开卡日期,
case Xxl_Card_State
then '正常'
then '冻结'
then '注销'
end 状态,
dbo.function_JiaDouhao(Xxl_Card_Balance) 货币表示
from Xxl_UserInfo UserInfo inner join Xxl_CardInfo CardInfo on UserInfo.Xxl_User_Id = CardInfo.From_Xxl_User_Id
go
--使用视图
--select * from vw_CardInfo
--交易记录视图
if exists(select * from sysObjects where name='vw_TransInfo')
drop view vw_TransInfo
go
create view vw_TransInfo
as
select ----卡号,交易日期,交易类型,交易金额,余额,描述
Xxl_Card_No 卡号,
Xxl_Trans_Date 交易日期,
case Xxl_Trans_Type
then '存入'
then '支取'
end 交易类型,
case Xxl_Trans_Type
),Xxl_Trans_Quota)
),Xxl_Trans_Quota)
end 交易金额,
Xxl_Trans_ed_Balance 余额,
Xxl_Trans_Text 描述
from Xxl_CardInfo CardInfo inner join Xxl_TransInfo TransInfo on CardInfo.Xxl_Card_No = TransInfo.From_Xxl_Card_No
go
--使用视图
--select * from vw_TransInfo
--------------------------------------------结束--------------------------------------------
----------------------------------------创建存储过程----------------------------------------
--1、 查询余额
if exists(select * from sysObjects where name='p_SelectBalance')
drop proc p_SelectBalance
go
create proc p_SelectBalance
)
as
select 货币表示 as 余额 from vw_CardInfo where 卡号 = @CardNo
go
--exec p_SelectBalance '6666888845125214'
--2、 查询某两日期之间交易记录
if exists(select * from sysObjects where name='p_SelectStart_StopDate')
drop proc p_SelectStart_StopDate
go
create proc p_SelectStart_StopDate
),
@StartDate datetime,
@StopDate datetime
as
,@StopDate)
go
--exec p_SelectStart_StopDate '6666888845125214','1990-1-1','2018-9-9'
--3、 修改密码功能
if exists(select * from sysObjects where name='p_Update_Pwd')
drop proc p_Update_Pwd
go
create proc p_Update_Pwd
),
),
)
as
update Xxl_CardInfo set Xxl_Card_pwd=@CardPwdStop where Xxl_Card_No = @CardNo and Xxl_Card_pwd = @CardPwdStart
go
--exec p_Update_Pwd '6666888845125214','666888','548888'
--4、 存款功能(备份)
if exists(select * from sysObjects where name='p_SeveMoney')
drop proc p_SeveMoney
go
create proc p_SeveMoney
),
,),
) output
as
--判断存款金额
begin
set @errMeg = '输入金额有误!'
end
begin tran
,)
select @startBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @CardNo
--添加存款记录
,), @Quota) + '元'))
select @err = @@ERROR + @err
--更新余额
update Xxl_CardInfo set Xxl_Card_Balance = (@startBalance + @Quota) where Xxl_Card_No = @CardNo
select @err = @@ERROR + @err
begin
set @errMeg = '操作成功'
commit tran
end
begin
set @errMeg = '未知错误!'
rollback tran
end
go
--5、 取款功能(备份)
if exists(select * from sysObjects where name='p_GetMoney')
drop proc p_GetMoney
go
create proc p_GetMoney
),
,),
) output
as
--判断取款金额
begin
set @errMeg = '输入金额有误!'
end
--查询原有余额
,)
select @startBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @CardNo
--判断余额是否足够
if @startBalance > @Quota
begin
set @errMeg = '余额不足!'
end
begin tran
--添加取款记录
,), @Quota) + '元'))
select @err = @@ERROR + @err
--更新余额
update Xxl_CardInfo set Xxl_Card_Balance = (@startBalance - @Quota) where Xxl_Card_No = @CardNo
select @err = @@ERROR + @err
begin
set @errMeg = '操作成功'
commit tran
end
else
begin
set @errMeg = '未知错误!'
rollback tran
end
go
--6、 转帐功能(备份)
if exists(select * from sysObjects where name='p_TeansferMoney')
drop proc p_TeansferMoney
go
create proc p_TeansferMoney
),
),
,),
) output
as
--判断目标账户是否为本身
if @FromCardNo != @ToCardNo
begin
set @errMeg = '目标账户不可以为自己!'
end
--判断目标账户是否存在
if not exists(select * from Xxl_CardInfo where Xxl_Card_No = @ToCardNo)
begin
set @errMeg = '目标账户不存在!'
end
--判断转账金额是否正确
begin
set @errMeg = '输入金额有误!'
end
--查询From原有余额
,)
select @FromStartBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @FromCardNo
--判断From余额是否充足
if @FromStartBalance < @Quota
begin
set @errMeg = '余额不足!'
end
begin tran
--查询To原有余额
,)
select @ToStartBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @ToCardNo
--更新余额
update Xxl_CardInfo set Xxl_Card_Balance = (@FromStartBalance - @Quota) where Xxl_Card_No = @FromCardNo
select @err = @@ERROR + @err
update Xxl_CardInfo set Xxl_Card_Balance = (@ToStartBalance + @Quota) where Xxl_Card_No = @ToCardNo
select @err = @@ERROR + @err
--添加交易记录
,), @Quota) + '元给'+@ToCardNo)
select @err = @@ERROR + @err
,), @Quota) + '元'))
select @err = @@ERROR + @err
begin
set @errMeg = '操作成功!'
commit tran
end
else
begin
set @errMeg = '未知错误!'
rollback tran
end
go
--exec p_TeansferMoney '6666888812454852','6666888845125214',300.00
--7、 随机产生卡号(卡号格式为:8228 6688 XXXX XXXX) 注:随机产生的卡号已经存在的不能用
if exists(select * from sysObjects where name='P_GenerateBankcard')
drop proc P_GenerateBankcard
go
create proc P_GenerateBankcard
) output
as
begin
), ,),)
if not exists(select * from Xxl_CardInfo where Xxl_Card_No = @Card)
break
end
go
--declare @Card char(16)
--exec P_GenerateBankcard @Card output
--select @Card as 卡号
--8、 开户功能
if exists(select * from sysobjects where name = 'P_AccountOpening')
drop proc P_AccountOpening
go
create proc P_AccountOpening
),
@Sex bit,
),
),
),
) output
as
if exists (select * from Xxl_UserInfo where Xxl_User_IDcard =@IdCard)
begin
set @errMeg = '存在此账户!'
end
begin tran
declare @UserID int
insert Xxl_UserInfo values(@Name,@Sex,@IdCard,@Moblie,@Address)
select @err = @@ERROR + @err
)
exec P_GenerateBankcard @Card output
select @UserID = Xxl_User_Id from Xxl_UserInfo where Xxl_User_IDcard = @IdCard
,,'使用')
select @err = @@ERROR + @err
)
begin
set @errMeg = '开户成功!'
commit tran
end
else
begin
set @errMeg = '未知错误!'
rollback tran
end
go
--9、 解冻功能
if exists(select * from sysobjects where name = 'P_ThawAccount')
drop proc P_ThawAccount
go
create proc P_ThawAccount
)
as
where Xxl_Card_No = @CardNo
go
--10、 根据用户身份证,查询该用户下所有的银行卡信息
if exists(select * from sysobjects where name = 'P_SelectCard')
drop proc P_SelectCard
go
create proc P_SelectCard
)
as
)
select @ID = Xxl_User_Id from Xxl_UserInfo where Xxl_User_IDcard = @IdCard
select * from Xxl_CardInfo where From_Xxl_User_Id = @ID
go
--------------------------------------------结束--------------------------------------------
ATM-简单SQL查询的更多相关文章
- kotlin 写的一个简单 sql 查询解析器
package com.dx.efuwu.core import org.apache.commons.lang.StringUtils import java.sql.PreparedStateme ...
- 记一个简单的sql查询
在我们做各类统计和各类报表的时候,会有各种各样的查询要求.条件 这篇主要记录一个常见的统计查询 要求如下: 统计一段时间内,每天注册人数,如果某天没有人注册则显示为0 现在建个简单的表来试试 建表语句 ...
- 发送json-简单的传参查询和简单的sql查询
简单的传参查询并转化为json using System; using System.Collections.Generic; using System.Linq; using System.Web; ...
- 一条简单的 SQL 查询语句到底经历了什么?
一.MySQL 基础架构 整体来说 MySQL 主要分为两个部分,一个部分是:Server 层,另一部分是:存储引擎层. 其中 Server 层包括有连接器.查询缓存.分析器.优化器.执行器等,存 ...
- sql最简单的查询语句
-- 2 **************************************************** -- 最简单的查询语句 -- 2.1 ----------------------- ...
- 简单记录几个有用的sql查询
转载自:http://blog.itpub.net/16436858/viewspace-676265/ 下面示例中,查询的数据表参考这一篇的Person表. 一.限制返回的行数 1.Sql Serv ...
- sql查询语句如何解析成分页查询?
我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...
- Hibernate SQL查询 addScalar()或addEntity()
本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原 ...
- 提高SQL查询效率(SQL优化)
要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359 我们要做到不但会写SQL,还要做到 ...
- 【T-SQL基础】01.单表查询-几道sql查询题
概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...
随机推荐
- 动态代理实现AOP
代理 代理顾名思义:代为处理.不是对目标对象的直接操作,而是通过代理对目标对象进行包装,此时可以在目标对象的基础上添加额外的操作以满足业务需求.图示 分类:动态代理.静态代理. 代理三要素:共同接口. ...
- Java基础系列--包装类
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/5462489.html 1.8种基本数据类型都有各自的包装类,其对应关系为: 基本—————— ...
- 怎样监听vue.js中v-for全部渲染完成?
vue里面本身带有两个回调函数: 一个是Vue.nextTick(callback),当数据发生变化,更新后执行回调. 另一个是Vue.$nextTick(callback),当dom发生变化,更新后 ...
- Linux服务器GlashFish的Domain管理
1.本文内容 Glassfish(V3.1)的Domain创建,删除,登陆,部署等 Linux客户端工具: SecureCRTPortable和 WinSCP (请自行下载) 2.1 新建Domain ...
- Google Maps API Key申请办法(最新)
之前的Google Maps Api的API Key很容易申请,只需要按照一个简单的表单提交部署的网站地址即可,自动生成API Key并给出引用的路径. 但是最近在处理另外一个项目的时候发现之前的这种 ...
- 数据库 'xxxx' 的事务日志已满。若要查明无法重用日志中的空间的原因
一.出现的背景: 在SQL server中执行SQL语句出现如下图: 二.出现的原因: 我到数据库的服务器看了一下硬盘空间发现此数据库所在的D盘空间几乎已经用尽.如图: 三.解决方法: 第一种方法:直 ...
- [PHP]代码执行和生命周期
PHP代码的执行:1.和大部分程序一样,接收数据,处理数据,输出结果2.编写的代码就是输入的数据,php内核进行处理,返回相应的输出3.php作为业务程序和编译语言的区别就是,php多了一步把用户代码 ...
- 2.QT-窗口组件(QWidget),QT坐标系统,初探消息处理(信号与槽)
本章主要内容如下: 1) 窗口组件(QWidget) 2) QT坐标系统 3) 消息处理(信号与槽) 窗口组件(QWidget) 介绍 Qt以组件对象的方式构建图形用户界面 Qt中没有父组件的顶级组件 ...
- 一个3年Java程序员的坎与选择
前言 LZ 15年本科毕业,不知不觉3年过去了,去年底裸辞回到成都来发展,年后开始找工作,面试了几家公司,现在整理整理做个总结,也方便规划下一个3到5年以及和广大想要进阶的Java程序员同胞们共勉. ...
- 通过DFS求解有向图(邻接表存储)中所有简单回路
前言 查阅了网上许多关于通过DFS算法对有向图中所有简单回路的查找,发现有很多关于使用DFS求解有向回路中所有简单回路的帖子,(在按照节点编号情况下)但大多数仅仅寻找了编号递增的回路.又或者未对结果去 ...