1. use master
  2. go
  3. if exists(select * from sysDatabases where name = 'BankDB')
  4. drop database BankDB
  5. go
  6. create database BankDB
  7. go
  8. use BankDB
  9. go
  10. --建用户信息表
  11. if exists(select * from sysObjects where name = 'Xxl_UserInfo')
  12. drop table Xxl_UserInfo
  13. go
  14. create table Xxl_UserInfo
  15. (
  16. Xxl_User_Id int not null primary key identity ,
  17. Xxl_User_Name ) not null ,
  18. Xxl_User_Sex bit not null ,
  19. Xxl_User_IDcard ) not null unique ,
  20. 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]'),
  21. Xxl_User_Address ) not null
  22. )
  23. go
  24. --建用户卡信息表
  25. if exists(select * from sysObjects where name = 'Xxl_CardInfo')
  26. drop table Xxl_CardInfo
  27. go
  28. create table Xxl_CardInfo
  29. (
  30. 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]') ,
  31. Xxl_Card_pwd ) ') ,
  32. From_Xxl_User_Id int not null references Xxl_UserInfo(Xxl_User_Id),
  33. Xxl_Card_Date DateTime not null default(getdate()) ,
  34. Xxl_Card_Balance ,) ) ,
  35. Xxl_Card_State ,,)),
  36. Xxl_Card_Text ) not null
  37. )
  38. go
  39. --建交易信息表
  40. if exists(select * from sysObjects where name = 'Xxl_TransInfo')
  41. drop table Xxl_TransInfo
  42. go
  43. create table Xxl_TransInfo
  44. (
  45. Xxl_Trans_FlowNum int not null identity primary key ,
  46. From_Xxl_Card_No ) not null references Xxl_CardInfo(Xxl_Card_No) ,
  47. Xxl_Trans_Type ,)) ,
  48. Xxl_Trans_Quota ,) ) ,
  49. Xxl_Trans_Date DateTime not null default(getdate()) ,
  50. Xxl_Trans_ed_Balance ,) ) ,
  51. Xxl_Trans_Text ) not null
  52. )
  53. go
  54. ------添加用户信息
  55. ,','湖北武汉')
  56. ,','湖北武汉')
  57. ,','湖北武汉')
  58. ----添加用户卡信息
  59. ,,,'使用')
  60. ,,,'使用')
  61. ,,,'使用')
  62. ,,,'使用')
  63. ----添加交易信息
  64. ,,,'存入300元')
  65. ,,,'存入300元')
  66. ,,,'存入6000元')
  67. ,,,'转账3000元给6666888812454852')
  68. ,,,'6666888865896548转入的3000元')
  69. ,,,'存入3300元')
  70. ,,,'存入3000元')
  71. ,,,'取出2500元')
  72. ------备份交易信息表
  73. select * into Xxl_TransInfo_BAK from Xxl_TransInfo
  74. --------查询各表数据
  75. --select * from Xxl_UserInfo
  76. --select * from Xxl_CardInfo
  77. --select * from Xxl_TransInfo
  78. --select * from Xxl_TransInfo_BAK
  79. ----------------------------------------创建函数----------------------------------------
  80. --加逗号的函数
  81. if exists(select * from sysObjects where name='function_JiaDouhao')
  82. drop function function_JiaDouhao
  83. go
  84. ,))
  85. ) as
  86. begin
  87. ))
  88. ))
  89. )
  90. begin
  91. )+@b
  92. )
  93. end
  94. return @a+@b
  95. end
  96. go
  97. ------------------------------------------结束------------------------------------------
  98. ----------------------------------------创建视图----------------------------------------
  99. --用户信息视图
  100. if exists(select * from sysObjects where name ='vw_UserInfo')
  101. drop view vw_UserInfo
  102. go
  103. create view vw_UserInfo
  104. as
  105. select
  106. Xxl_User_Id 编号,
  107. Xxl_User_Name 姓名,
  108. case Xxl_User_Sex
  109. then '女'
  110. then '男'
  111. end 性别,
  112. Xxl_User_IDcard 身份证,
  113. Xxl_User_Moblie 联系电话,
  114. Xxl_User_Address 籍贯
  115. from Xxl_UserInfo
  116. go
  117. --使用视图
  118. --select * from vw_UserInfo
  119. --卡信息视图
  120. if exists(select * from sysObjects where name='vw_CardInfo')
  121. drop view vw_CardInfo
  122. go
  123. create view vw_CardInfo
  124. as
  125. select
  126. Xxl_Card_No 卡号,
  127. Xxl_User_Name 姓名,
  128. Xxl_Card_Balance 余额,
  129. Xxl_Card_Date 开卡日期,
  130. case Xxl_Card_State
  131. then '正常'
  132. then '冻结'
  133. then '注销'
  134. end 状态,
  135. dbo.function_JiaDouhao(Xxl_Card_Balance) 货币表示
  136. from Xxl_UserInfo UserInfo inner join Xxl_CardInfo CardInfo on UserInfo.Xxl_User_Id = CardInfo.From_Xxl_User_Id
  137. go
  138. --使用视图
  139. --select * from vw_CardInfo
  140. --交易记录视图
  141. if exists(select * from sysObjects where name='vw_TransInfo')
  142. drop view vw_TransInfo
  143. go
  144. create view vw_TransInfo
  145. as
  146. select ----卡号,交易日期,交易类型,交易金额,余额,描述
  147. Xxl_Card_No 卡号,
  148. Xxl_Trans_Date 交易日期,
  149. case Xxl_Trans_Type
  150. then '存入'
  151. then '支取'
  152. end 交易类型,
  153. case Xxl_Trans_Type
  154. ),Xxl_Trans_Quota)
  155. ),Xxl_Trans_Quota)
  156. end 交易金额,
  157. Xxl_Trans_ed_Balance 余额,
  158. Xxl_Trans_Text 描述
  159. from Xxl_CardInfo CardInfo inner join Xxl_TransInfo TransInfo on CardInfo.Xxl_Card_No = TransInfo.From_Xxl_Card_No
  160. go
  161. --使用视图
  162. --select * from vw_TransInfo
  163. --------------------------------------------结束--------------------------------------------
  164. ----------------------------------------创建存储过程----------------------------------------
  165. --1 查询余额
  166. if exists(select * from sysObjects where name='p_SelectBalance')
  167. drop proc p_SelectBalance
  168. go
  169. create proc p_SelectBalance
  170. )
  171. as
  172. select 货币表示 as 余额 from vw_CardInfo where 卡号 = @CardNo
  173. go
  174. --exec p_SelectBalance '6666888845125214'
  175. --2 查询某两日期之间交易记录
  176. if exists(select * from sysObjects where name='p_SelectStart_StopDate')
  177. drop proc p_SelectStart_StopDate
  178. go
  179. create proc p_SelectStart_StopDate
  180. ),
  181. @StartDate datetime,
  182. @StopDate datetime
  183. as
  184. ,@StopDate)
  185. go
  186. --exec p_SelectStart_StopDate '6666888845125214','1990-1-1','2018-9-9'
  187.  
  188. --3 修改密码功能
  189. if exists(select * from sysObjects where name='p_Update_Pwd')
  190. drop proc p_Update_Pwd
  191. go
  192. create proc p_Update_Pwd
  193. ),
  194. ),
  195. )
  196. as
  197. update Xxl_CardInfo set Xxl_Card_pwd=@CardPwdStop where Xxl_Card_No = @CardNo and Xxl_Card_pwd = @CardPwdStart
  198. go
  199. --exec p_Update_Pwd '6666888845125214','666888','548888'
  200. --4 存款功能(备份)
  201. if exists(select * from sysObjects where name='p_SeveMoney')
  202. drop proc p_SeveMoney
  203. go
  204. create proc p_SeveMoney
  205. ),
  206. ,),
  207. ) output
  208. as
  209. --判断存款金额
  210.  
  211. begin
  212. set @errMeg = '输入金额有误!'
  213.  
  214. end
  215. begin tran
  216.  
  217. ,)
  218. select @startBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @CardNo
  219. --添加存款记录
  220. ,), @Quota) + '元'))
  221. select @err = @@ERROR + @err
  222. --更新余额
  223. update Xxl_CardInfo set Xxl_Card_Balance = (@startBalance + @Quota) where Xxl_Card_No = @CardNo
  224. select @err = @@ERROR + @err
  225.  
  226. begin
  227. set @errMeg = '操作成功'
  228. commit tran
  229.  
  230. end
  231. begin
  232. set @errMeg = '未知错误!'
  233. rollback tran
  234.  
  235. end
  236. go
  237. --5 取款功能(备份)
  238. if exists(select * from sysObjects where name='p_GetMoney')
  239. drop proc p_GetMoney
  240. go
  241. create proc p_GetMoney
  242. ),
  243. ,),
  244. ) output
  245. as
  246. --判断取款金额
  247.  
  248. begin
  249. set @errMeg = '输入金额有误!'
  250.  
  251. end
  252. --查询原有余额
  253. ,)
  254. select @startBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @CardNo
  255. --判断余额是否足够
  256. if @startBalance > @Quota
  257. begin
  258. set @errMeg = '余额不足!'
  259.  
  260. end
  261. begin tran
  262.  
  263. --添加取款记录
  264. ,), @Quota) + '元'))
  265. select @err = @@ERROR + @err
  266. --更新余额
  267. update Xxl_CardInfo set Xxl_Card_Balance = (@startBalance - @Quota) where Xxl_Card_No = @CardNo
  268. select @err = @@ERROR + @err
  269.  
  270. begin
  271. set @errMeg = '操作成功'
  272. commit tran
  273.  
  274. end
  275. else
  276. begin
  277. set @errMeg = '未知错误!'
  278. rollback tran
  279.  
  280. end
  281. go
  282. --6 转帐功能(备份)
  283. if exists(select * from sysObjects where name='p_TeansferMoney')
  284. drop proc p_TeansferMoney
  285. go
  286. create proc p_TeansferMoney
  287. ),
  288. ),
  289. ,),
  290. ) output
  291. as
  292. --判断目标账户是否为本身
  293. if @FromCardNo != @ToCardNo
  294. begin
  295. set @errMeg = '目标账户不可以为自己!'
  296.  
  297. end
  298. --判断目标账户是否存在
  299. if not exists(select * from Xxl_CardInfo where Xxl_Card_No = @ToCardNo)
  300. begin
  301. set @errMeg = '目标账户不存在!'
  302.  
  303. end
  304. --判断转账金额是否正确
  305.  
  306. begin
  307. set @errMeg = '输入金额有误!'
  308.  
  309. end
  310. --查询From原有余额
  311. ,)
  312. select @FromStartBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @FromCardNo
  313. --判断From余额是否充足
  314. if @FromStartBalance < @Quota
  315. begin
  316. set @errMeg = '余额不足!'
  317.  
  318. end
  319. begin tran
  320.  
  321. --查询To原有余额
  322. ,)
  323. select @ToStartBalance=Xxl_Card_Balance from Xxl_CardInfo where Xxl_Card_No = @ToCardNo
  324. --更新余额
  325. update Xxl_CardInfo set Xxl_Card_Balance = (@FromStartBalance - @Quota) where Xxl_Card_No = @FromCardNo
  326. select @err = @@ERROR + @err
  327. update Xxl_CardInfo set Xxl_Card_Balance = (@ToStartBalance + @Quota) where Xxl_Card_No = @ToCardNo
  328. select @err = @@ERROR + @err
  329. --添加交易记录
  330. ,), @Quota) + '元给'+@ToCardNo)
  331. select @err = @@ERROR + @err
  332. ,), @Quota) + '元'))
  333. select @err = @@ERROR + @err
  334.  
  335. begin
  336. set @errMeg = '操作成功!'
  337. commit tran
  338.  
  339. end
  340. else
  341. begin
  342. set @errMeg = '未知错误!'
  343. rollback tran
  344.  
  345. end
  346. go
  347. --exec p_TeansferMoney '6666888812454852','6666888845125214',300.00
  348. --7 随机产生卡号(卡号格式为:8228 6688 XXXX XXXX 注:随机产生的卡号已经存在的不能用
  349. if exists(select * from sysObjects where name='P_GenerateBankcard')
  350. drop proc P_GenerateBankcard
  351. go
  352. create proc P_GenerateBankcard
  353. ) output
  354. as
  355.  
  356. begin
  357. ), ,),)
  358. if not exists(select * from Xxl_CardInfo where Xxl_Card_No = @Card)
  359. break
  360. end
  361. go
  362. --declare @Card char(16)
  363. --exec P_GenerateBankcard @Card output
  364. --select @Card as 卡号
  365. --8 开户功能
  366. if exists(select * from sysobjects where name = 'P_AccountOpening')
  367. drop proc P_AccountOpening
  368. go
  369. create proc P_AccountOpening
  370. ),
  371. @Sex bit,
  372. ),
  373. ),
  374. ),
  375. ) output
  376. as
  377. if exists (select * from Xxl_UserInfo where Xxl_User_IDcard =@IdCard)
  378. begin
  379. set @errMeg = '存在此账户!'
  380.  
  381. end
  382. begin tran
  383. declare @UserID int
  384.  
  385. insert Xxl_UserInfo values(@Name,@Sex,@IdCard,@Moblie,@Address)
  386. select @err = @@ERROR + @err
  387. )
  388. exec P_GenerateBankcard @Card output
  389. select @UserID = Xxl_User_Id from Xxl_UserInfo where Xxl_User_IDcard = @IdCard
  390. ,,'使用')
  391. select @err = @@ERROR + @err
  392. )
  393. begin
  394. set @errMeg = '开户成功!'
  395. commit tran
  396.  
  397. end
  398. else
  399. begin
  400. set @errMeg = '未知错误!'
  401. rollback tran
  402.  
  403. end
  404. go
  405. --9 解冻功能
  406. if exists(select * from sysobjects where name = 'P_ThawAccount')
  407. drop proc P_ThawAccount
  408. go
  409. create proc P_ThawAccount
  410. )
  411. as
  412. where Xxl_Card_No = @CardNo
  413.  
  414. go
  415. --10 根据用户身份证,查询该用户下所有的银行卡信息
  416. if exists(select * from sysobjects where name = 'P_SelectCard')
  417. drop proc P_SelectCard
  418. go
  419. create proc P_SelectCard
  420. )
  421. as
  422. )
  423. select @ID = Xxl_User_Id from Xxl_UserInfo where Xxl_User_IDcard = @IdCard
  424. select * from Xxl_CardInfo where From_Xxl_User_Id = @ID
  425. go
  426. --------------------------------------------结束--------------------------------------------

ATM-简单SQL查询的更多相关文章

  1. kotlin 写的一个简单 sql 查询解析器

    package com.dx.efuwu.core import org.apache.commons.lang.StringUtils import java.sql.PreparedStateme ...

  2. 记一个简单的sql查询

    在我们做各类统计和各类报表的时候,会有各种各样的查询要求.条件 这篇主要记录一个常见的统计查询 要求如下: 统计一段时间内,每天注册人数,如果某天没有人注册则显示为0 现在建个简单的表来试试 建表语句 ...

  3. 发送json-简单的传参查询和简单的sql查询

    简单的传参查询并转化为json using System; using System.Collections.Generic; using System.Linq; using System.Web; ...

  4. 一条简单的 SQL 查询语句到底经历了什么?

    一.MySQL 基础架构   整体来说 MySQL 主要分为两个部分,一个部分是:Server 层,另一部分是:存储引擎层. 其中 Server 层包括有连接器.查询缓存.分析器.优化器.执行器等,存 ...

  5. sql最简单的查询语句

    -- 2 **************************************************** -- 最简单的查询语句 -- 2.1 ----------------------- ...

  6. 简单记录几个有用的sql查询

    转载自:http://blog.itpub.net/16436858/viewspace-676265/ 下面示例中,查询的数据表参考这一篇的Person表. 一.限制返回的行数 1.Sql Serv ...

  7. sql查询语句如何解析成分页查询?

    我们公司主要mysql存储数据,因此也封装了比较好用mysql通用方法,然后,我们做大量接口,在处理分页查询接口,没有很好分查询方法.sql查询 语句如何解析成“分页查询”和“总统计”两条语句.可能, ...

  8. Hibernate SQL查询 addScalar()或addEntity()

    本文完全引用自: http://www.cnblogs.com/chenyixue/p/5601285.html Hibernate除了支持HQL查询外,还支持原生SQL查询.          对原 ...

  9. 提高SQL查询效率(SQL优化)

    要提高SQL查询效率where语句条件的先后次序应如何写 http://blog.csdn.net/sforiz/article/details/5345359   我们要做到不但会写SQL,还要做到 ...

  10. 【T-SQL基础】01.单表查询-几道sql查询题

    概述: 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础 ...

随机推荐

  1. 【Python】正则表达式简单教程

    说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...

  2. Jmeter连接Redis,获取Redis数据集

    Redis(REmote DIctionary Server)是一个开源的内存数据结构存储,用作数据库,缓存和消息代理. 本博文是分享jmeter怎么连接使用Redis数据库. 安装Redis数据集J ...

  3. The 15th Zhejiang Provincial Collegiate Programming Contest(部分题解)

    ZOJ 4024 Peak 题意 给出n和n个数,判断该数列是否是凸形的. 解题思路 从前往后第一对逆序数,和从后往前第一队逆序数,如果都非零而且相邻,证明该数组是凸形的. 代码 #include & ...

  4. Spring Boot入门(13)自制音乐平台

      经过笔者这几天的辛勤劳作(其实就是苦逼地码代码),一个新的网站已经上线啦!该网站是用Spring Boot工具写的,主要实现的功能如下: 根据歌曲名称和音乐平台搜索歌曲,并实现歌曲的在线播放: 歌 ...

  5. C# 隐式转换关键字 implicit

    implicit 关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 引用摘自:implicit(C# 参考 ...

  6. 《C#并发编程经典实例》学习笔记-进程(process)和线程(thread)

    本文主要参考自孙钟秀主编的<操作系统教程>一书中关于进程和线程的部分. 进程 为什么引入进程? 一,刻画系统动态性,发挥系统并发性,提高资源利用率. 以C#为例,在编辑器Visual St ...

  7. IIS发布网站 报错500.19 错误解决过程记录

    首先先报上我的环境 WindowsServer 2012 IIS 8.5 网站是FrameWork 4.0 发布网站后浏览,报错信息如下: 解决过程记录如下: 1.看到这个问题首先想到的是权限问题,设 ...

  8. Android Studio RecyclerView用法

    首先创建一个布局 里面放一个文本 <TextView android:id="@+id/textView" android:layout_width="60dp&q ...

  9. Java学习笔记之——自动装箱与拆箱

    自动装箱与拆箱 基本类型与引用类型的互相转换 1. 基本类型对应的包装类 byte    short       char      int       long    flaot    double ...

  10. 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记

    一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...