第五章:事务、视图、索引、备份和恢复

5.1:事务

事务的概念:事务(transcation)是讲一系列数据操作捆绑成为一个整体进行统计管理。

如果某一事务执行成功了,则该事务进行操作的所有数据将会提交,如果数据在执行的时候遇到错误且必须取消或回滚,则数据将会全部恢复到操作之前的状态,所有的数据更改将被清除。

5.1.1:为什么需要事务

如果不用事务进行捆绑一些操作的话,在执行过程中有可能一条执行成功,中途发生错误,一些失败了,这样的话执行完之后的数据就有问题,所有我们要引入事务!!

我们有时候要把几个操作捆绑在一起,要么一起成功,如果有一个失败,则此事务就失败了,必须全部成功,才会成功!!,

5.1.2:什么是事务

事务是一种机制,一个操作的序列,包含看一组数据库操作的命令,并且把所有的命令坐位一个整体一起想系统提交或撤销操作请求。即这一组数据库命令要么都执行,要么都不执行。因此事务是一个不可分割的工作逻辑单元。

事务是作为单个工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,即原子性(Atomicity)、一致性(Consitency)、隔离线(lsolation)、及持久性(Durability)  这些特征通常简称为ACID;

原子性

事务是一个完整的操作,事务各元素是不可分的(原子的)、事务中所有的元素必须作为一个整体提交或回滚,如果任何一部分失败,则整个事务都失败了

一致性

当事务完成时,必须处于一致的状态,在正在进行的事务中,数据库可能处于不一致的状态,如果数据可能部分修改了,然而当事务成功完成时,数据必须再次回到已知的已知状态,通过事务对数据所做的修改不能损坏数据,或者说事务不能是数据存储处于不稳定状态。。。

隔离性

对数据库进行修改所有的并发事务是彼此隔离的。这表明事务必须是独立的。。不会依赖或影响其他事务。。

持久性

事务执行完之后对数据库的数据进行修改,都是永久的保存起来了。。

5.1.3:如何执行事务

1:开始事务

语法:begin或者start  transcation

2:提交事务

语法:commit

3:回滚/撤销 事务

语法:rollback;

例子:

USE mybank;

/*设置结果集一gbk的编码格式显示*/

SET NAMES utf8;

/*开始事务(指定事务此处开始,后面的sql语句就是一个整体*/

BEGIN; /* start transaction;*/

UPDATE bank SET currentMoney =currentMoney-500 WHERE customerName='张三';

UPDATE bank SET currentMoney =currentMoney+500 WHERE customerName='李四';

/*提交事务,写入硬盘,保存起来*/

COMMIT;

2:设置自动提交关闭或开启

因为每条sql语句都有自动提交的功能,所以我们通过命令来控制

Set  autocommit=0;    //关闭自动提交

Set  autocommit=1;    //打开自动提价

5.2:视图

5.2.1:为什么需要视图

在实际工作中,不同身份的用户可能关注的数据不同,处于安全原因,用户不必要知道整个数据库的结构,隐藏了一些数据,我们可以把重复使用的复杂结果保存在视图里面。方便多次使用查询。。。

5.2.2:什么是视图

视图是一种查看数据库中一个或者多个表的数据的方法,视图是一张虚拟表,通常作为来自一个或者多个表的行或列的子集创建的,当然他也可以包含全部的列,他的数据来自子查询的引用表,视图充当着一个查询中指定的筛选器,定义视图可以查询一个或者多个表,也可以嵌套视图,就是一个视图里面放另一个视图,也可以基于当前数据库或其他数据库。

视图通常用来以下操作

筛选表中的行

防止未经许可用户访问敏感数据

将多个物理数据表抽象为一个逻辑数据表

对最终用户的好处

结果容易理解

获得数据更容易

对开发者好处

限制数据检索更加容易

维护更加方便

5.2.3:如何创建或者使用视图

使用SQL语句创建视图

语法:

Create  view  视图名

As

<select 语句>;             //查询语句

使用sql语句删除视图

Drop  view   if exists  视图名;

使用sql语句查看视图

Select  *   from   view_Name(视图名称);

视图注意事项

每个视图可以使用多个表

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

对视图进行条件数据或者更新数据直接引用的表中的数据

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

5.3:索引

5.3.1:什么是索引

数据库中的索引和字典中的目录类似,可以利用目录查找到所需要的信息。无需阅读整本书,

索引的作用是通过使用索引,大大提高了数据库的检索速度,改善性能。

5.3.2:索引分类

普通索引

是mysql的基本索引,允许在定义中插入重复的值或者空值,唯一任务就是加快对数据库的访问。

唯一索引   unique 关键词

不允许两行具有相同的索引值。和唯一约束   unique   key  一样的效果

主键索引

在数据库中定义主键将自动创建主键索引,主键索引要求主键中每一个值是非空的、唯一的。可以加快访问速度·

复合索引

在创建索引的时候,并不是对其中一个创建,而是多个列绑定起来一起创建的索引,及多个组合起来不会重复,

全文索引

全文索引的作用是在定义索引的列上支持值的全文查找,允许这些列插入重复和空值,主要用于大量的文本搜索,

空间索引

对数据类型的列建立的索引,必须是不能为空的

5.3.3:创建索引

语法:

Create  [unique] [fullText] [spaital] index  index_name   on   table_name(column [length]….);

例子:create unique  index   index_student_studentName   on  student(studentName);

5.3.4:删除索引

Drop   index  index_name  on table_name;

注意:

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

删除表的列是,如果要删除的列为索引的组成部分,则该列也会从索引的删除,如果组成的所有列被删除,则整个索引就被删除,,

使用索引加快速度,但没必要每个列都创建索引,因此索引要维护的,并且战友一定的资源,可以按照下列标准创建索引

频繁搜索的列

经常用作查询的列

经常排序的列,分组的列

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

不要使用这些创建列

仅包含几个不同的值

表中仅包含几行

5.3.5:查询索引

Show   index  form table_name(表名);

例子:show   index  from  student\G;     //(G代表会格式输出)

5.4:数据库的备份和恢复

5.4.1:使用mysqlDump命令备份数据库

语法:mysqldump  -u 账户名 -h  host   -p passWord   dbName[table1,table2]>filename.sql

例子:mysqldump   -u root –p  myschool student>d:\backmyschool09.sql;

EnterPassword:输入密码

Mysqldump提供了很多参数:可以用命令参考mysqldump  help;

5.4.2:使用mysql命令恢复数据库

语法:mysql  -u  username  -p  DBName<file.sql;        //也支持Linux系统下

例子:mysql  -u root –p schoolDB<d:\back\schoo;l09.sql;

语法:source  fileName;

步骤:

Create database  myschoolDB;

Use  myschoolDB;

/*恢复数据库*/

Source  d:\backup\myschool09.sql;

5.4.4:表数据的导出到文本文件

语法:

Select  coloumnlist   from   Tablename;

[where contion]

Into  outfile  ‘fileName’[option];

例子:select   *  from  result where subjectNo=(select subjectNo from subject where subjectName=’logic java’)   into  outfile ’ d:/backup/reuslt_java.txt’;

5.4.5:文本文件导入到数据库

语法:

Load  data   infile  into  table  tablename [option];

例子:use  myschoolDB;

/*创建result表*/

Create table result(

studentNo int(4) not null  comment ‘学号’,

studentName  varchar(50) comment  ‘学生姓名’

) charset =utf8;

/*加载书籍*/

Load  data  infile  ‘d:/back/reslt_java.txt’  into  table  result;

java数据库编程之事务、视图、索引、备份、恢复的更多相关文章

  1. 第五章 MySQL事务,视图,索引,备份和恢复

    第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...

  2. java面向对象下:Java数据库编程

    19.Java数据库编程: JDBC概述:        JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...

  3. java数据库编程——读写LOB、可滚动和可更新的结果集、元数据

    java 数据库编程 1. 读写LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其它数据.在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB. 要读取LOB,需要 ...

  4. 菜鸡的Java笔记 java数据库编程(JDBC)

    java数据库编程(JDBC)        介绍 JDBC 的基本功能            content (内容)        现在几乎所有的项目开发过程之中都不可能离开数据库,所以在java ...

  5. SQLserver学习(四)——T-SQL编程之事务、索引和视图

    今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...

  6. SQL server学习(四)T-SQL编程之事务、索引和视图

    今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...

  7. JDBC与JAVA数据库编程

    一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...

  8. Java数据库编程、XML解析技术

    数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...

  9. java 数据库编程 学习笔记 不断更新

    最近开始学习java,感觉java的数据库编程需要发个随笔记录一下,话不多说 切入正题. 一.数据库访问技术的简介 应用程序  →  执行SQL语句 →数据库 → 检索数据结果 → 应用程序   ( ...

随机推荐

  1. 初识php soap 学习过程中的摘抄,便于后期翻阅

    SOAP 简单对象访问协议, webService三要素 , SOAP.WSDL(WebServicesDescriptionLanguage).UDDI(UniversalDescriptionDi ...

  2. WPF依赖属性2

    前一个博客,介绍了依赖属性的基本定义,在定义的过程中register中的的两个参数,并没有传入参数,不知道其是用来干什么的,以下,我们将介绍这两个参数的真正用途FrameworkPropertyMet ...

  3. Docker 集群环境实现的新方式

    近几年来,Docker 作为一个开源的应用容器引擎,深受广大开发者的欢迎.随着 Docker 生态圈的不断建设,应用领域越来越广.云计算,大数据,移动技术的快速发展,加之企业业务需求的不断变化,紧随技 ...

  4. docker学习之--日常命令

    .查看镜像 sudo docker images sudo pull docker.io #下载镜像 sudo push docker.io #上传镜像 sudo docker save -o cen ...

  5. js script放在head和body里面的区别

    详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp66       java script放在head和body的区别   ...

  6. Javascript学习日志(三):闭包

    说实话,前面一节的原型和原型链在当初学的时候并没有很头疼,对着高级编程第三版撸了几遍就理解透了,闭包这一节真的挺头疼的,很惭愧,看了差不多十来遍吧,还翻看了网上的其他博客和解释文档,五花八门的表达方式 ...

  7. 转:【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17348313 happen-before规则介绍 Java语言中有一个"先行发生 ...

  8. NullpointerException处理

    毫无疑问,空指针NullpointerException是我们最常遇到异常,没有之一! 在刚进入编程职业时,我想,大部分刚进入的同学肯定会受到前辈们的叮咛:一定要防止空指针,这是个低级错误.你们不是? ...

  9. java四则运算生成器

    题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: 除 ...

  10. 201521123061 《Java程序设计》第八周学习总结

    201521123061 <Java程序设计>第八周学习总结 1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结 主要是应用到了list中的a ...