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基础 ...
随机推荐
- 【Python】正则表达式简单教程
说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...
- Jmeter连接Redis,获取Redis数据集
Redis(REmote DIctionary Server)是一个开源的内存数据结构存储,用作数据库,缓存和消息代理. 本博文是分享jmeter怎么连接使用Redis数据库. 安装Redis数据集J ...
- The 15th Zhejiang Provincial Collegiate Programming Contest(部分题解)
ZOJ 4024 Peak 题意 给出n和n个数,判断该数列是否是凸形的. 解题思路 从前往后第一对逆序数,和从后往前第一队逆序数,如果都非零而且相邻,证明该数组是凸形的. 代码 #include & ...
- Spring Boot入门(13)自制音乐平台
经过笔者这几天的辛勤劳作(其实就是苦逼地码代码),一个新的网站已经上线啦!该网站是用Spring Boot工具写的,主要实现的功能如下: 根据歌曲名称和音乐平台搜索歌曲,并实现歌曲的在线播放: 歌 ...
- C# 隐式转换关键字 implicit
implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 引用摘自:implicit(C# 参考 ...
- 《C#并发编程经典实例》学习笔记-进程(process)和线程(thread)
本文主要参考自孙钟秀主编的<操作系统教程>一书中关于进程和线程的部分. 进程 为什么引入进程? 一,刻画系统动态性,发挥系统并发性,提高资源利用率. 以C#为例,在编辑器Visual St ...
- IIS发布网站 报错500.19 错误解决过程记录
首先先报上我的环境 WindowsServer 2012 IIS 8.5 网站是FrameWork 4.0 发布网站后浏览,报错信息如下: 解决过程记录如下: 1.看到这个问题首先想到的是权限问题,设 ...
- Android Studio RecyclerView用法
首先创建一个布局 里面放一个文本 <TextView android:id="@+id/textView" android:layout_width="60dp&q ...
- Java学习笔记之——自动装箱与拆箱
自动装箱与拆箱 基本类型与引用类型的互相转换 1. 基本类型对应的包装类 byte short char int long flaot double ...
- 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记
一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...