zoukankan      html  css  js  c++  java
  • 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]
    #导入数据前应确保目标表已存在!
  • 相关阅读:
    量化投资:第3节 滑点策略与交易手续费
    量化投资:第2节 择时策略的优化
    量化投资: 第1节 择时策略的开发
    一步一步,完成sparkMLlib对日志文件的处理(1)
    JAVA接口与抽象类区别
    HDU1877 又一版 A+B
    HDU4548 美素数
    超级楼梯 HDU2041
    HDU2013 蟠桃记【递推】
    HDU1262 寻找素数对
  • 原文地址:https://www.cnblogs.com/zhrehe-11/p/12872008.html
Copyright © 2011-2022 走看看