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基础 ...
随机推荐
- pxe+http+kickstart实验原理
1.说明 所谓的PXE是Preboot Execution Environment的缩写,字面上的意思是开机前的执行环境. 要实现pxe,至少需要3个服务 2.流程 注意:全部用的udp封装 1)cl ...
- 用 pyinstaller 打包含xpinyin 库的Python程序
在文章用 pyinstaller 打包含有 pinyin 库的程序中,给出了如何使用pyinstaller 打包含xpinyin 库的Python程序的方法,能生成可运行的exe文件.本文将会给出 ...
- 【转载】Windows服务器修改远程桌面默认端口
因为 windows服务器远程桌面端口默认是 3389端口,使用系统默认端口的风险很大,很容易被攻击软件扫描以及攻击,同时频繁的扫描和攻击会导致服务器的 CPU 及带宽资源耗尽,因此为了保证服务器的安 ...
- 使用Topshelf开发Windows服务、log4net记录日志
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...
- ___树形菜单Ztree.js显示.
----视图@{ Layout = null;} <!DOCTYPE html><HTML><HEAD> <TITLE> ZTREE DEMO - be ...
- Linux-cut命令(22)
cut剪切命令cut命令通常用来对某个文本文件进行解析,擅长处理以一个字符间隔的文本内容 -b :以字节(bytes)为单位进行分割.这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志. -c ...
- 谈谈知识的融会贯通:以“java中的迭代器失效问题”为例
提示 文中涉及知识点: Collection . Iterator Guava 中的 Lists.partition 方法 如果你对这两个知识点不了解,强烈建议阅读文中引用的参考文章. 场景一:以Ar ...
- Android Material Design控件使用(二)——FloatButton TextInputEditText TextInputLayout 按钮和输入框
FloatingActionButton 1. 使用FloatingActionButton的情形 FAB代表一个App或一个页面中最主要的操作,如果一个App的每个页面都有FAB,则通常表示该App ...
- Python 语法笔记
1.else与while结合 while a>0: pass else: pass #当a<=0时执行 2.with语法,无需关闭文件,python自动关闭 with open('a.tx ...
- 协程与Epoll的配合
想快速了解协程与网络调用的原来么,那么请赶紧关闭本页,因为下面都是在扯淡. 这几天是端午假期,第一天大算照着网上一大堆基于ucontext来写协程的文章自己也写一个简单的协程实现.于是第一天我就开始动 ...