zoukankan      html  css  js  c++  java
  • 事务,视图,索引,备份和恢复

    --事务

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

    一个逻辑工作单元必须有四个属性: 原子性(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文件

  • 相关阅读:
    创始人透露Twitter新盈利计划:第三方将受益
    试试ScribeFire转发我的其它博客
    2009年12月30日:新网因清除URL转发域名导致DNS解析故障
    VS2008 如果更改源代码管理插件,将关闭活动解决方案或项目
    Linq使用Group By经验总结
    使用C#的BitmapData
    Java与C#开发上的一些差异与转换方法
    成都七中成绩文件导入SQL脚本
    用SQL SERVER对EXCEL数据进行处理
    NULLIF和ISNULL
  • 原文地址:https://www.cnblogs.com/matianpeng/p/8465795.html
Copyright © 2011-2022 走看看