事务,视图,索引,备份和恢复

事务,视图,索引,备份和恢复

一.事务

1.Transaction是将一系列数据操作捆绑成为一个整体进行统一管理。
2.事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的,特别适用于多用户同时操作
的数据库系统。
3.事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,即原子性(Atomicity),一致性(Consistency),隔离性
(Lsolation)及持久性(Durability),这些特性通常简称为ACID。
(1).原子性
事务是一个完整的操作,事务的各元素是不可分的。
(2).一致性
当事务完成时,数据必须处于一致状态。
(3).隔离性
对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。
(4).持久性
事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。
4.MySQL中提供了多种存储引擎支持事务,支持事务的存储引擎有InnolDB和BDB。InnoDB存储引擎事务主要通过UNDO日志和REDO日志实现,MyISAM
存储引擎不支持事务。
UNDO日志:复制事务执行前的数据,用于在事务发生异常时回滚数据。
REDO日志:记录在事务执行中,每条对数据进行更新的操作,当事务提交时,该内容将被刷新到磁盘。
(1).开始事务BEGIN;或START TRANSATION;
(2).提交事务COMMIT;
(3).回滚(撤销)事务ROLLBACK;
在数据库操作中,为了有效保证并发读取数据的正确性,提出了事务的隔离级别。在MySQL中,事务的默认隔离级别是REPEATABLE-READ(可重读)隔离级别
会话B中未关闭自动提交,在会话A中执行事务未结束时(未执行COMMIT或ROLLBACK),会话B只能读取到位提交数据。
5.MySQL中默认开启自动提交模式,即未指定开启事务时,每条SQL语句都是单独的事务执行完毕自动提交。
SET autocommit=0|1;
值为0:关闭自动提交。
值为1:开启自动提交。
6.编写事务时要遵守以下原则:
(1).事务尽可能简短
(2).事务中访问的数据量尽量最少
(3).查询数据时尽量不要使用事务
(4).在事务处理过程中尽量不要出现等待用户输入的操作

二.视图

视图是保存在数据库中的select查询。
使用视图的原因:一个是出于安全考虑,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易
理解数据。
视图是另一种查看数据库中一个或多个表中数据的方法。视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。
视图通常用来进行以下三种操作:
筛选表中的行。
防止未经许可的用户访问敏感数据。
将多个物理数据表抽象为一个逻辑数据表。
1.使用SQL语句创建视图
CREATE VIEW 视图名 AS ;
视图一般以view_xxx或v_xxx的样式来命名
2.使用SQL语句删除视图
DROP VIEW [IF EXISTS] 视图名;
3.使用SQL语句查看视图数据
SELECT 字段1,字段2,......FROM view_name;
4.使用视图的注意事项
(1).每个视图中可以使用多个表
(2).与查询相似,一个视图可以嵌套另一个视图,但最好不要超过三层
(3).对视图数据进行添加,更新和删除操作直接引用表中的数据
(4).当视图数据来自多个表时,不允许添加和删除数据
利用视图更新数据实际上是对数据库中的原始数据表进行更新操作。因为使用视图修改数据库数据会有许多限制,所以一般在实际开发中视图
仅用作查询。

三.索引

索引提供指针以指向存储在表中指定列的数据值,再根据指定的排序次列排列这些指针。
根据索引的存储类型,可以将索引分为B-树索引(BTREE)和哈希索引(HASH)。InnoDB和MyISAM存储引擎支持B-树索引。
在MySQL中,常用的索引有以下六类:
1.普通索引
允许在定义索引的列中插入重复值和空值,它的唯一任务是加快对数据的访问速度。
2.唯一索引
不允许两行具有相同的索引值,允许有空值。
若创建了唯一约束,则将自动创建唯一索引。尽管唯一索引有助于找到信息,但为了获得最佳性能,扔建议使用主键约束。
3.主键索引
在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。
4.复合索引
可以将多个列组合作为索引,这种索引称为复合索引。
只有在查询中使用了组合索引最左边字段时,索引才会被使用,即第一个字段作为前缀的集合。
5.全文索引
作用是在定义所以的列上支持值得全文查找,全文索引可以在char,varchar或者text类型的列上创建,MySQL5.5中只有MyISAM存储
引擎支持全文索引。
6.空间索引
空间索引是对空间数据类型的列建立的索引,如GEOMETRY,POINT等。非空,只能在存储引擎为MyISAM的表中创建。
创建索引:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON table_name (column_name[length]......);
删除索引:
DROP INDEX index_name ON table_name
注意:删除表时,该表的所有索引将同时被删除。
删除表中的列时,如果要删除的列为索引的组成部分,则该列也会从索引中删除。如果组成索引的所有列都被删除,则整个索引将
被删除。
查看索引:
SHOW INDEX FROM table_name;

四.数据库的备份和恢复

1.使用mysqldump命令备份数据库
mysqldump命令格式:
mysqldump -u username -h host -ppassword dbname[tbname1[,tbname2......]]>filename.sql
注意:mysqldump是DOS系统下的命令,在使用时无须进入mysql命令行,否则将无法执行。
2.使用mysql命令恢复数据库
mysql -u username -p [dbname] < filename.sql
注意:在执行该语句之前,必须在MySQL服务器中创建新数据库,如果不存在新数据库恢复数据库过程将会出错。
使用source命令恢复数据库
source filename;
3.通过复制文件实现数据备份和恢复
注意:使用此种方法备份数据库是,为了保证所备份数据的完整性,在停止MySQL数据库服务器之前,需要先执行FLUSH TABLES语句将
所有数据写入到数据文件中。
4. 表数据导出到文本文件
SELECT columnlist FROM tablename [WHERE contion] INTO OUTFILE 'filename' [option];
5.文本文件导入到数据表
LOAD DATA INFILE filename INTO TABLE tablename [OPTION];

你可能感兴趣的:(事务,视图,索引,备份和恢复)