MySQL 事务、视图、索引、备份和恢复

事务

为什么需要事务:

转账、总量不变,但其他值进行变化。

事务是什么:

作为单个逻辑工作单元执行的一系列操作。

多个操作作为一个整体向系统提交,要么执行/不执行。

事务是一个不可分割的工作逻辑单元。

事务的特性:简称ACID属性(事务安全型强)

原子性(Atomicity):事务是一个完整的操作,各步操作是不可分的,要么执行/不执行。

一致性(Consistency):当事务完成时,总量不变。

隔离性(lsolation):并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务。

持久性(Durability):事务完成后,它对数据库的修改被永久保持。

创建事务

#开始事务
begin;/start transaction;
#提交事务
commit;
#回滚/撤销事务
rollback;

关闭和开启事务:

set autocommit=0|1
#值为0:关闭事务
#值为1:开启事务

视图

视图做用

1.不同权限人员关注不同的数据。

2.保证数据的安全性。

3.降低数据库的复杂程度。

4.将多个物理数据库抽象为一个逻辑数据库

视图是什么

1.视图是一张虚拟表,建立在原表上,使用部分数据或多表的综合数据。

2.视图中不存放数据,数据在原始表中。

3.一个原始表,根据不同权限人员的不同需求,可以创建不同的视图。

创建视图

CTRATE VIEW view_name(规范书写在view后写视图名)
AS
  select 语句;

#使用SQL语句删除视图
DROPVIEW IF EXISTS view_name;
#IF EXISTS删除前判断视图是否存在

#使用SQL语句查看视图
select 字段1,字段2,...from view_name;

#
查看所有视图
USE information_schema;
SELECT * FROM viewsG;

视图注意

1.视图中可以使用多个表

2.一个视图可以嵌套另一个视图(千层套路)。

3.对视图进行添加、更新和删除操作时直接影响原表。

4.多表时视图不允许添加和删除数据!仅作为查询。(使用视图修改数据会有许多限制,容易出错)

索引

索引是什么

索引是一种有效组合数据的方式,为快速查找到指定记录

作用

1.大大提高数据库的检索速度

2.优化了数据库的检索速度

MySQL索引按存储类型分类

1.B-数索引:InnoDB、MyiSAM均支持

2.哈希索引

B-数索引:

使用可以显著减少定位记录时所经历的中间过程,从而加快存取速度。这个数据结构一般用于数据库的索引,综合效率较高。

阶的定义

 1、根结点至少有两个子女。

2.每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1。

3.除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m 。

4.所有的叶子结点都位于同一层。

在B-树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的分划。

因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。

B-树中的一个包含n个关键字,n+1个指针的结点的一般形式为: (n,P0,K1,P1,K2,P2,…,Kn,Pn),其中,Ki为关键字,K1<K2<…<Kn, Pi 是指向包括Ki到Ki+1之间的关键字的子树的指针。

索引类型

普通索引:允许在定义索引的列中插入重复值和空值

唯一索引:索引列数据不重复,允许有空值(只有一个)

主键索引:主外键那个意思

复合索引:将多个列组合作为索引

全文索引:支持值的全文查找,允许重复值和空值

空间索引:对空间数据类型的列建立的索引

创建/删除索引

#创建索引
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
ON table_name (column_name[length]…);

#UNIQUE|FULLTEXT|SPATIAL
#分别对应唯一索引、全文索引或空间索引

#删除索引
DROP  INDEX index_name ON table_name;

索引注意事项

1.不要使用仅包含几个不同值的列

2.表中仅包含几行

3.查询时减少使用*返回全部列,不要返回不需要的列

4.WHERE子句中有多个条件表达式时,包含索引列的表达式应置于其他条件表达式之前

5.避免在ORDER BY子句中使用表达式

备份和恢复

备份数据库

mysqldump 参数 -u -h -p
需备份的数据库名  需备份的表名 备份后的文件名称

常用参数选项

 恢复数据库

mysql –u –p 数据库名 < 备份文件名

source 数据库名

导出/导入数据

SELECT  *  FROM tablename 
         [WHERE contion]
         INTO OUTFILE 'filename' [OPTION]
#导出的目标文件


#文件导入到数据表
LOAD DATA INFILE filename INTO TABLE tablename [OPTION]
#导入数据前应确保目标表已存在!
原文地址:https://www.cnblogs.com/zhrehe-11/p/12872008.html