---恢复内容开始---

一.事务

        1.事务:就是一堆操作的集合,他们同生共死。要么执行成功,要么执行失败

           事务:是单个逻辑工作单位执行的一系列操作,一个逻辑工作单位元必须有4个属性  即原子性(Atomicity)一致性(Consistency) 隔离性(Isolation)持久性(Durability)特性通常简称为ACID

        2.事务属性

                          A:原子性  完整的,不可分割的

                          C: 一致性  事务执行完毕后,数据的状态是一致的()

                          I: ISOLation 隔离性  两个事务执行互不影响

                         D: 永久性  事务执行完后,对数据的影响是永久的。

     3.事务操作的关键字
                      自动提交事务开关     set      autocommit=1

                      开始事务 start   transaction /begin

                      提交事务 commit

                      回滚事务 rollback

  4.定义存储过程的简易的语法是

                      delimiter $$
                      create procedure usp_stulist()

                      begin
                             select * from student
                      end$$
                      delimiter;

 5.事务   存储过程  转账的例子

                  

  
DELIMITER $$
CREATE PROCEDURE usp_transfer() 
    BEGIN  
   
    DECLARE t_error INTEGER DEFAULT 0;  
    
    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 ;  
 
CALL test_sp800() 

二.视图

      1.视图:就是一张虚拟表,本质上存储的是一对sql集合

      2.定义视图语法:create view VW_stulist(VW_视图的功能)as

      3.视图的使用 和检索基本表一样,直接通过select :select * from VW_stulist 

      4.删除视图     

                       drop view 视图名
                       drop table
                       drop database
                       drop index
                       drop constraint
                      归根结底:drop  删除是结构   delete 删除数据

     5.查看库中的所有视图

             1.切换到系统数据库:  use information_schema

             2. 查看并排序:select * from views \G;

          3.查看当前库的所有视图  :show tables status where comment='view'

     6.视图注意事项

              1)视图可以查询多表数据
             2)视图可以嵌套
           3)update,insert,delete不能封装成视图内容,通过图形化界面可以操作数据(操作视图数据,影响的是基本表)。
         4)删除视图数据的时候,有一定的限定,数据结果来源于多表的时候,不能删除   

    7.视图的价值
                结果更明显。不用我们关注到底这个视图的结果集是有几张基本表互联检索出来的。
              获取数据更容易。安全性更高。

三.索引

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

           2.作用:大大提高数据库的检索速度 改善数据的性能
 
          3.MYSQL索引按存储类型分类    B-树索引: InnoDB MyISAM均支持     哈希索引

          4.普通索引:基本索引    允许在定义索引的列插入重复值和空值
        
          5.唯一索引:索引列数据不重复   允许有空值 
 
          6.主键索引:主键列中的每一个值是非空唯一的   一个主键将自动创建主键索引

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

          8.全文索引:支持值得全文查找   允许重复值和空值

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

        10.创建一个索引
                  CREATE     index 索引名
        11.删除索引
                   DROP INDEX index_name on table_name
                  删除表时候 该表的索引同时被删除

       12.下列标准选择建立索引的列
             频繁搜素的列
           经常用作查询的列
         经常排序分组的列
       经常用作连接列(主键/外键)
      请不要使用下面的列创建索引
    仅包含几个不同值的列
  表中仅包含几行

    13.查询时减少使用* 返回全部列,不要返回不需要的列
          索引应该尽量小,在字节数小的列上建立索引
          where子句有多个条件表达式,包含索引列的表达式应置于其他表达式之前
        避免在orderby子句中使用表达式
        SHOW INDEX from 表名

   14.查看数据库中全部索引信息
        USE MYSCHOOL
        SHOW INDEX FROM `STUDENT\G`

  15.事务是将一组SQL语句放在同一批次去执行
       如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行