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

--事务

事务是一种机制,一个操作序列,包含了一组数据库操作命令,事务是作为单个逻辑工作单元执行的一系列操作。

一个逻辑工作单元必须有四个属性: 原子性(Atomicity),一致性(Consistency),隔离性(lsosation),持久性(Durablity),这些特性通常称为:ACID

1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,

   要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

2.一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。

3.隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。

4.持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

执行事务的语法关键字

1.开始事务

BEGIN;

2.提交事务

COMMIT

3.回滚(撤销)事务

ROLLBACK;

 实例--

DELIMITER $$
CREATE PROCEDURE usp_transfer() 
    BEGIN  
    ##错误总数默认是0
    DECLARE t_error INTEGER DEFAULT 0;   ##语法错误 form   违反了约束
    ## continue 继续  hanlder 执行   并且对 t_error重新赋值为1
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;  
    SET autocommit=0;
        START TRANSACTION;  
        UPDATE bank SET balance=balance-100 WHERE cid=1;    
        UPDATE bank SET balance =balance+100 WHERE cid=2;
        IF t_error > 0 THEN  
            ROLLBACK;  
        ELSE  
            COMMIT;  
        END IF;  
     SET autocommit=1; 
    END$$  
DELIMITER ;  

--视图

视图是保存在数据库中的SELECT查询,使用视图原因两点:一,安全考虑,用户不必看到整个数据库的结构,而隐藏部分内容,二,符合用户日常业务逻辑,使他们更容易理解数据。

视图相关的MySQL指令

操作指令代码
创建视图 CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
使用视图 当成表使用就好
修改视图 CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];
查看数据库已有视图 >SHOW TABLES [like...];(可以使用模糊查找)
查看视图详情 DESC 视图名或者SHOW FIELDS FROM 视图名
视图条件限制

[WITH CHECK OPTION]

视图通常用来进行以下三种操作

1.筛选表中的行 ,2.防止未经许可的用户访问敏感数据,3.将多个物理数据表抽象唯一个逻辑数据表。

4.删除视图
drop view 视图名

--索引

1.索引是占硬盘空间 ,也是按页存放的 。

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

建立索引的原则
  1.在列基数比较少的列上,不适合创建索引
  2.在不经常使用的列 上,建立索引没有意义  

  3.在频繁搜索的列上,适合建立索引

-索引分类
 

mysql索引按存储类型分2种:
01.B-树索引(BTREE):INNODB,MyISAM 支持
02.哈希索引
 
01.普通索引:允许在定义为索引的列中 出现 重复值和空值!
02.唯一索引:索引列不允许出现重复值,但是可以出现一个空值!
03.主键索引:创建主键的时候,系统会默认创建一个主键索引!唯一!不能为空!
04.复合索引:将我们的多个列组合起来!(name,sid)姓名和身份证号!  name被查询时才能触发索引的使用!
             需要注意的是,只有查询中使用了复合索引最左边的字段时,索引才会被使用!
05.全文索引:允许值的全文查询!允许空值和重复值!适合在一个内容比较多的列!text!
06.空间索引:对空间数据类型的列建立的索引!

-创建索引

CREATE UNIQUE(唯一),FULLTEXT(全文),SPATIAL(空间) INDEX  指定索性名称 ON 指定需要创建索引的表名(指定需要创建索引的列);

-删除索引

DROP INDEX 指定索引名 ON 指定创建索引的表名;

删除索引时注意:

删除表时,该表的所有索引将同时被删除。

删除表中的列时,如果 要删除的列为索引的组成部分,则该列也会从索引中删除,如果组成索引的所有列都被删除,则整个索引将被删除。

-查看索引

SHOW INDEX FROM 指定的表名

--数据库的备份和恢复

备份

 mysqldump -uroot -hlocalhost -p myschool>指定的地址和.sql文件


 恢复

注意:数据库必须已经存在,否则会报错。
 mysql -uroot -proot myschool<指定的地址和.sql文件

原文地址:https://www.cnblogs.com/matianpeng/p/8465795.html