java数据库编程之事务、视图、索引、备份、恢复
第五章:事务、视图、索引、备份和恢复
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数据库编程之事务、视图、索引、备份、恢复的更多相关文章
- 第五章 MySQL事务,视图,索引,备份和恢复
第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...
- java面向对象下:Java数据库编程
19.Java数据库编程: JDBC概述: JDBC(Java Database Connection)是java中提供的一套数据库编程API,它定义了一套用来访问数据库的标准Java类 ...
- java数据库编程——读写LOB、可滚动和可更新的结果集、元数据
java 数据库编程 1. 读写LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其它数据.在SQL中,二进制大对象称为BLOB,字符型大对象称为CLOB. 要读取LOB,需要 ...
- 菜鸡的Java笔记 java数据库编程(JDBC)
java数据库编程(JDBC) 介绍 JDBC 的基本功能 content (内容) 现在几乎所有的项目开发过程之中都不可能离开数据库,所以在java ...
- SQLserver学习(四)——T-SQL编程之事务、索引和视图
今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...
- SQL server学习(四)T-SQL编程之事务、索引和视图
今天来分享下T-SQL高级编程中的事务.索引.视图,可以和之前的SQL server系列文章结合起来. 一.事务 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个 ...
- JDBC与JAVA数据库编程
一.JDBC的概念 1. JDBC (Java DataBase Connectivity) Java数据库连接 a) 主要提供java数据库应用程序的API支持 2. JDBC的主要功能 a) 创建 ...
- Java数据库编程、XML解析技术
数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...
- java 数据库编程 学习笔记 不断更新
最近开始学习java,感觉java的数据库编程需要发个随笔记录一下,话不多说 切入正题. 一.数据库访问技术的简介 应用程序 → 执行SQL语句 →数据库 → 检索数据结果 → 应用程序 ( ...
随机推荐
- 第3阶段——内核启动分析之make menuconfig内核配置(2)
目标: 分析make menuconfig内核配置过程 在上1小结中(内核编译试验)讲到了3种不同的配置: (1)通过make menuconfig 直接从头到尾配置.config文件 (2) 通过m ...
- Java企业微信开发_09_身份验证之移动端网页授权(有完整项目源码)
注: 源码已上传github: https://github.com/shirayner/WeiXin_QiYe_Demo 一.本节要点 1.1 授权回调域(可信域名) 在开始使用网页授权之前,需要先 ...
- jdk源码研究1-HashMap
今天开始,研读下jdk的常用类的一些源码,下面是jdk中HashMap的研究.诚然,网上已经很多这方面的总结了,但是,个人只是想单纯地把自己的理解过程进行记录,大牛们就绕路吧,当然,欢迎扔砖头.下面是 ...
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17161237 Java中实现多线程有两种方法:继承Thread类.实现Runnable接口 ...
- 将home多余的空间分配到"/"分区下
一.操作过程 1.df -h 查看分区大小情况; [root@localhost /]# df -h Filesystem Size Used Avail Use% Mount ...
- 201521123052《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...
- Java课设(学生信息管理系统)
1.团队课程设计博客链接 http://www.cnblogs.com/Min21/p/7064093.html 2.个人负责模板或任务说明 设计登陆界面和学生信息界面的设计,学生信息的显示.退出等功 ...
- Spring第二篇和第三篇的补充【JavaConfig配置、c名称空间、装载集合、JavaConfig与XML组合】
前言 在写完Spring第二和第三篇后,去读了Spring In Action这本书-发现有知识点要补充,知识点跨越了第二和第三篇,因此专门再开一篇博文来写- 通过java代码配置bean 由于Spr ...
- eclipse安装java ee插件方法步骤
1.本人以前使用的MyEclipse进行Javaweb开发,但是后来由于myeclipse实在太臃肿,经常在运行的过程中不流畅 (可能电脑内存也不是太高吧) !所以坚决换用eclipse,但是问题 ...
- python 实现登录程序
本文介绍一个用python 实现的登录程序.python新手们可以参考一下. 用户信息存放于一个文件中,需要引入文件,校验输入的用户名.密码是否跟用户列表中的用户名密码相匹配,如果匹配,这登录成功,否 ...