金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 数据库 > Server创建一个银行数据管理系统Ⅰ,在用mybatis向

Server创建一个银行数据管理系统Ⅰ,在用mybatis向

发布时间:2020-01-05 05:39编辑:数据库浏览(169)

    问题说明:使用的MySQL是5.1.37版本,用的mysql-connector-java-5.0.4.jar版本,在java文件中定义的字段是Date类型,MySQL中定义的字段类型是datetime类型的,

    使用SQL-Server创建一个银行数据管理系统Ⅰ

    1、事务(Transaction):

    尝试了以下方式都不成功,报的错误还是一个,方法如下:

    作者声明:

    事务是将一系列数据操作绑成一个整体进行统一管理。

    如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分。

    如果事务执行是遇到错误且必须取消或回滚,则数据将全部恢复到操作前的状态,所有数据的更改均被清除。

    定义:

    事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所欲的命令作为一个整体起向系统提交侧小操作请求,即这一组数据库命令要么都执行,要么都不执行。

      Eg:

    转账过程就是一个整体

    它需要两条UPDATE语句来完成,这两条语句是一个整体

    如果其中任一条出现错误,则整个转账业务也应取消,两个账户中的余额应恢复到原来的数据,从而确保转账前和转账后的余额不变,即都是1001元

    事务是作为单一逻辑工作单元执行一系列操作。一个逻辑工作单位必须有四个属性,

    即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),这些特性通常简称为ACID。

    ●原子性:事务是一个完整的操作,事务的各步操作(各元素)是不可分的(原子的),要么都执行,要么都不执行

    ●一致性:当事务完成时,数据必须处于一致状态。

    ●隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,他不应以任何方式依赖于或影响其他事务。

    ● 持久性:事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。

    1.第一个方法:

    刚开始写博客,难免有些不足的地方,再就是本人初涉软件开发这一行业,是个不折不扣的小白,文章中肯定也会出现一些错误的地方,希望发现错误的朋友们可以及时的指出来,不足的地方还请各路大神们多多指教,以便本人参考和学习,多谢。

    2、执行事务:

    //  Date date = new Date();
    //  shop.setLastEditTime(date);

     

    默认设置下,枚举SQL语句就是一个事务,即执行SQL语句后自动提交,为了达到将几个操作作为一个整体的目的,

    需要使用BEGIN或START TRANSACTION开启一个事务,或者执行命令SETAUTOCOMMIT = 0,

    来禁止当前回话的自动提交后,后面的语句作为事务的开始。

    MySQL中支持事务的存储引擎有InnoDB和BDB

    执行事务的语法:

    SQL使用下列语句来管理事务。

    (1)开始事务

    语法

    BEGIN;   //开始的意思  

    或者  

    START  TRANSACTION;

    这个语句显式地标记一个事务的起始点。

    (2)提交事务

    语法

    COMMIT;

    这个语句标志一个事务成功提交。

    自事务开始至提交语句之间执行的所有数据更新将永久地保存在数据库数据文件中,并释放连接是占用的资源。

    (3)回滚(撤销)事务

    语法

    ROLLBACK;

    清除自事务起始点至该语句所做的所有数据更新操作,将数据状态回滚到事务开始前,并释放由事务控制的资源。

    设置值自动提交关闭或开始:

    MySQL中默认开启自动提交模式,即为指定开启事务时,

    每条SQL语句都是单独的事务执行完毕自动提交,可以关闭自动提交模式,手动提交或回滚事务。

    语法

    SET  autocommit = 0 | 1;

    值为0:关闭自动提交。

    值为1:开启自动提交。

                               当执行SET autocommit = 0后,即关闭自动提交,

    从下一条SQL语句开始则开启新事务,需使用COMMIT或ROLLBACK语句结束该事务。

    编写事务的原则:

    事务尽可能简短;

    事务中访问的数据量尽量最少;

    查询数据时尽量不要使用事务;

    在事务处理过程中尽量不要出现等待用户输入的操作;

    2.第二个方法:

    首先,要创建一个完整的数据管理系统,不是一蹴而就的,一定要要一步一步的来,不断完善,最终方能达到自己想要的结果,所以我在这里也是一点一点分步来做的。

    3、视图:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      Timestamp ts = new Timestamp(System.currentTimeMillis());
      String strDate = sdf.format(ts);
      shop.setLastEditTime(Timestamp.valueOf(strDate));

    - 创建数据库,数据库属性在这里用的是默认(不推荐使用这种偷懒的做法)

    1 --创建数据库,使用默认配置
    2 create database 某银行客户管理系统
    3 go
    

    视图是保存在数据库中的SELECT查询。因此,对查询执行的大多数操作饿可在视图上进行。

    使用视图的原因有两点:一个是处于安全考虑,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易理解数据。

    定义:

           视图是另一种查看数据库中一个或多个表中数据的方法。

    视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。当然,它也可以包含全部的行和列。

    但是,视图并不是数据库中存储的数值的集合,它的行和列来自查询中引用的表。在执行是,他直接显示来自于表中的数据。

    视图充当着查询中指定表筛选器。定义视图的查询可以基于一个或多个表,也可以基于其他视图、当前数据库或其他数据库。

    视图是一张虚拟表

    u 表示一张表的部分数据或多张表的综合数据

    u 其结构和数据是建立在对表的查询基础上

    视图中不存放数据

    u 数据存放在视图所引用的原始表中

    一个原始表,根据不同用户的不同需求,可以创建不同的视图

    视图通常用来进行一下三种操作:

    (1)筛选表中的行。

    (2)防止为经许可的用户访问敏感数据。

    (3)将多个物理数据表抽象为一个逻辑数据表。

    (4)降低数据库的复杂程度

    对最终用户的好处:

    (1)结果更容易理解。创建视图是,可以将列名改为有意义的名称,使用户更容易理解列所有表的内容。在视图中修改名不会影响基表的列名。

    (2)获得数据更容易。很多人对SQL不太了解,因此对他们来说,创建对多个表的复杂查询很困难,可以通过创建视图来方便用户访问多个表中的数据。

    对开发人员的好处:

    (1)限制数据检索更容易。开发人员于是需要隐藏某些行或列中的信息。通过使用视图,用户可以灵活地访问他们的数据,同时保证同一个表或其他表中的其他数据的安全性。要实现这一个目标,可以在创建视图时将对用户保密的列排出在外。

    (2)维护应用程序更方便。调试视图表调试查询更容易,跟踪视图中各个步骤的错误更为容易,这是因为所有的步骤都是视图的组成部分。

    后来百度查贴吧,说有可能是jar包版本冲突问题,但是原来代码时可以运行的,而此处不能运行,就尝试了把自己引入的包mysql-connector-java-5.0.4.jar换成高版本的,问题成功解决。

    - 创建表,共四个,分别是:客户信息,银行卡信息,业务类型,交易记录

     1 use 某银行客户管理系统
     2 
     3 
     4 --创建业务类型表,包含业务编号,业务名称和业务描述
     5 create table 业务类型
     6 (
     7 业务编号 int identity(1,1) primary key,
     8 
     9 业务名称 varchar(50) not null unique,
    10 
    11 业务描述 varchar(100)
    12 )
    13 
    14 
    15 --创建客户信息表,包含客户编号,姓名,居住地,手机号码和身份证号码
    16 CREATE TABLE 客户信息
    17  (
    18  客户编号 INT IDENTITY(101,1) PRIMARY KEY, 
    19 
    20  姓名 VARCHAR(25) NOT NULL,
    21  
    22  居住地 VARCHAR(50),
    23  
    24  手机号码 CHAR(11) UNIQUE NOT NULL 
    25  check(手机号码 like '1[358][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
    26 
    27  身份证号码 CHAR(18) UNIQUE NOT NULL
    28  check(left(身份证号码,17) 
    29  like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
    30  and (right(身份证号码,1) like '[0-9]' or right(身份证号码,1) like 'X')
    31  )
    32 
    33 
    34 --创建银行卡信息表
    35 CREATE TABLE 银行卡信息
    36 (
    37 卡号 CHAR(19) PRIMARY KEY CHECK(卡号 LIKE '6223 2017 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]'),
    38 
    39 密码 BIGINT CHECK(密码>99999 AND 密码<=999999)
    40         DEFAULT 111111
    41         NOT NULL,
    42 
    43 存款类型 int not null,
    44 
    45 余额 MONEY CHECK(余额>=10) NOT NULL,
    46 
    47 持卡客户 INT not null,
    48 
    49 注册日期 DATETIME NOT NULL default(getdate()),
    50 
    51 是否挂失 char(2) default('否') check(是否挂失='是' or 是否挂失='否')
    52 )
    53 
    54 
    55 --创建交易记录表
    56 create table 交易记录
    57 (
    58 记录编号 int identity(1,1) primary key,
    59 
    60 卡号 char(19) not null,
    61 
    62 交易日期 datetime not null,
    63 
    64 交易金额 money not null,
    65 
    66 交易类型 char(4) not null check(交易类型='收入' or 交易类型='支出'),
    67 
    68 交易备注 varchar(50)
    69 )
    

    4、创建和使用视图:

    后来又尝试了从哪个版本开始有问题的,原来是mysql-connector-java-5.0.5.jar开始后面的几个版本都好使。

    - 建立外键

    1 --建立外键
    2 alter table 银行卡信息
    3 add foreign key(存款类型) references 业务类型(业务编号)
    4 
    5 alter table 银行卡信息
    6 add foreign key(持卡客户) references 客户信息(客户编号)
    7 
    8 alter table 交易记录
    9 add foreign key(卡号) references 银行卡信息(卡号)
    

    到了这里,创建银行数据库系统的第一步就算是完成了,接下来要建立一些触发器和存储过程,以及插入一些测试数据,详情请关注本人的下一篇博客,谢谢。

     

    使用SQL语句创建视图

               语法:

    CREATE  VIEW  视图名

    AS

    <SELECT语句>

    注:在SQL语句名命规范中,视图一般以view_xxx或v_xxx的样式来命名;

    与创建数据表相同,在创建视图之前,如果数据库中已存在同名视图,需要先删除在创建。

    使用SQL语句删除视图

    语法

    DROP  VIEW  [IF  EXISTE] 视图名;

    使用SQL语句看视图数据

    语法

    SELECT  字段1,字段2,…… FROM  view_name;

                    使用查询语句SELECT执行视图的SQL代码,可获得数据结果集。

    查看所有视图

    USE information_schema;

    SELECT * FROM viewsG;

    使用视图的注意事项

    (1)每个视图中可以使用多个表。

    (2)与查询相似,一个视图可以嵌套另一个视图,但最好不要超过三层。

    (3)对视图数据进行添加、更新和删除操作直接引用表中的数据。

    (4)当视图数据来自多个表时,不允许添加和删除数据。

    注:使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询

    换成高版本的几个jar包后,以上的两个方法都可以使用。

    5、索引:

    具体的原因不知道MySQL进行了什么优化,只是知道了解决的办法,有知道的欢迎来说下原因

    索引提供指针有存储在表中指定列的数据值,在根据指定的排序列这些指针。

    数据库使用索引的方式与使用书的目录很相似;通过搜索索引找到特定的值,在跟随指针到包含该值的行。

     索引是一种有效组合数据的方式,为快速查找到指定记录

       作用:

      大大提高数据库的检索速度

      改善数据库性能

      MySQL索引按存储类型分类

      B-树索引:InnoDB、MyISAM均支持

      哈希索引

    MySQL中,常用的索引有以下六类。

    1. 普通索引:普通索引是MySQL中的基本索引类型,允许在定义索引的列中插入重复值和空值。

    2.唯一索引:唯一索引不允许两行具有相同的索引值。如果现有数据中存在重复的键值,则一般情况下多数数据库不允许创建唯一索引。

    允许有空值

    3.主键索引:在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。

               主键列中的每个值是非空、唯一的

    4.复合索引:在创建索引是,并不是只能对其他一列创建索引,与创建主键一样,可以多个列组合作为索引,这种索引称为符合索引。

    5.全文索引:全文索引的作用是在定义索引的列上支持值的全文查找,允许这些索引列中插入重复的空值和重复值。

    6.空间索引:空间索引是对空间数据类型的列建立的索引,如GEOMETRY、POINT等。

    6、使用索引: 

    创建索引:使用CREATE INDEX语句可以在以经存在的表上添加索引:

    语法

    CREATE  [UNIQUE | FULLTEXT | SPATIAL] INDEX  index_name

    ON  table_name  (column_name[length]……)

    其中:

    (1)UNIQUE | FULLTEXT | SPATIAL:分别表示唯一索引、全文索引的空间索引,为可选参数。

    (2)index_name:指定索引名。

    (3)column_name:指定需要创建索引的列。

    (4)length:指定索引长度,可选参数,只有字符创类型才能指定索引长度。

    (5) table_name:指定创建索引的表名。

    删除索引:

    语法

    DROP  INDEX  index_name  ON  table_name;

      注:删除表时,该表的所有索引将同时被删除。

    删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将被删除。

    按照下列标准选择建立索引的列

    u 频繁搜索的列

    u 经常用作查询选择的列

    u 经常排序、分组的列

    u 经常用作连接的列(主键/外键)

    不要使用下面的列创建索引

    u 仅包含几个不同值的列

    u 表中仅包含几行

    本文由金沙国际官网发布于数据库,转载请注明出处:Server创建一个银行数据管理系统Ⅰ,在用mybatis向

    关键词: