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

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. 第3阶段——内核启动分析之make menuconfig内核配置(2)

    目标: 分析make menuconfig内核配置过程 在上1小结中(内核编译试验)讲到了3种不同的配置: (1)通过make menuconfig 直接从头到尾配置.config文件 (2) 通过m ...

  2. Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)

    注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先 ...

  3. jdk源码研究1-HashMap

    今天开始,研读下jdk的常用类的一些源码,下面是jdk中HashMap的研究.诚然,网上已经很多这方面的总结了,但是,个人只是想单纯地把自己的理解过程进行记录,大牛们就绕路吧,当然,欢迎扔砖头.下面是 ...

  4. 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17161237 Java中实现多线程有两种方法:继承Thread类.实现Runnable接口 ...

  5. 将home多余的空间分配到"/"分区下

    一.操作过程 1.df -h 查看分区大小情况; [root@localhost /]# df -h Filesystem            Size  Used Avail Use% Mount ...

  6. 201521123052《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  7. Java课设(学生信息管理系统)

    1.团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模板或任务说明 设计登陆界面和学生信息界面的设计,学生信息的显示.退出等功 ...

  8. Spring第二篇和第三篇的补充【JavaConfig配置、c名称空间、装载集合、JavaConfig与XML组合】

    前言 在写完Spring第二和第三篇后,去读了Spring In Action这本书-发现有知识点要补充,知识点跨越了第二和第三篇,因此专门再开一篇博文来写- 通过java代码配置bean 由于Spr ...

  9. eclipse安装java ee插件方法步骤

    1.本人以前使用的MyEclipse进行Javaweb开发,但是后来由于myeclipse实在太臃肿,经常在运行的过程中不流畅 (可能电脑内存也不是太高吧)   !所以坚决换用eclipse,但是问题 ...

  10. python 实现登录程序

    本文介绍一个用python 实现的登录程序.python新手们可以参考一下. 用户信息存放于一个文件中,需要引入文件,校验输入的用户名.密码是否跟用户列表中的用户名密码相匹配,如果匹配,这登录成功,否 ...