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

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. 学生管理系统开发代码分析笔记:jsp+java bean+servlet技术

    1 序言 学习java web的时候很渴望有一份完整的项目给我阅读,而网上的大部分项目拿过来都无法直接用,好不容易找到了一个学生管理系统也是漏洞百出.在此,我将边修改边学习这份代码,并且加上完全的注释 ...

  2. 主从及转发DNS搭建

    author:JevonWei 版权声明:原创作品 主DNS 安装bind软件包 yum -y install bind systemctl start named systemctl enable ...

  3. JavaScript实现全选和全不选

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  4. 使用SVG基本操作API

    前面的话 本文将详细介绍SVG基本操作API,并使用这些API操作实例效果 基础API 在javascript中,可以使用一些基本的API来对SVG进行操作 [NS地址] 因为SVG定义在其自身的命令 ...

  5. Java的构造器

    初始化和清理是涉及安全的两个问题.C++和Java都引入了构造器(constructor)的概念,这是一个在创建对象时被自动调用的特殊方法. 可以假想为编写的每个类都定义一个initialize()方 ...

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

    1. 本周学习总结 这周因为一些事情耽搁了,几乎没什么打java代码,这几天尽量补过来 2. 书面作业 1.List中指定元素的删除 1.1 实验总结 不贴大段代码了,简要总结一下.切割成数组,主要用 ...

  7. 201521123107 《Java程序设计》第1周学习总结

    第1周学习总结 1.本周学习总结 本周我们正式开始了对一门新的编程语言java的学习.本周的主要内容是初步了解了java的发展过程,java具有简约且简单 .平台无关性等优点.java的3个关键的工具 ...

  8. 201521123097《Java程序设计》第二周学习总结

    1.本周学习总结 (1)学习了java的一些类型和变量. (2)学习了码云的部分功能的使用. 2.书面作业 使用Eclipse关联jdk源代码,并查看String对象的源代码. 为什么要尽量频繁的对字 ...

  9. 12个Sublime Text应用技巧和诀窍

    本文为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能. 1) 选择 以下是一些Sublime Text选择文本的快捷键 ...

  10. Java课程设计——学生成绩管理系统(201521123003 董美凤)

    Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...