MySQL:事务,备份,恢复...

什么是事务  : 

事务(TRANSACTION) : 是作为单个逻辑工作单元执行的一系列操作 .

a . 多个操作作为一个整体向系统提交,要么都执行、要么都不执行  .

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


事务必须具备以下四个属性,简称ACID 属性    : 

    原子性(Atomicity) : 

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

    一致性(Consistency) :

            当事务完成时,数据必须处于一致状态

    隔离性(Isolation) :

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

    持久性(Durability) :

         事务完成后,它对数据库的修改被永久保持

MySQL中支持事务的存储引擎有 InnoDB  和  BDB

    开始事务    :

        语法:  BEGIN ;       或         START TRANSACTION;

    提交事务    :

        语法:  COMMIT ;

BEGIN;    #开始事务(指定事务从此处开始,后续的SQL语句都是一个整体

/*--转账:张三的账户减少500元,李四的账户增加500元--*/
UPDATE `bank` SET `currentMoney`=`currentMoney`-500
     WHERE `customerName`='张三';
UPDATE `bank` SET `currentMoney`=`currentMoney`+500
     WHERE `customerName`='李四';

COMMIT;   #提交事务,事务结果

    回滚(撤销)事务  :

        语法:    ROLLBACK ;

BEGIN;

UPDATE `bank` SET `currentMoney`=`currentMoney`-1000 WHERE `customerName`='张三';

ROLLBACK;   #回滚事务,数据恢复到原始状态

自动关闭和开启事务

     a . 默认情况下,每条单独的SQL语句视为一个事务

    b . 关闭默认提交状态后,可手动开启、关闭事务

语法 : 

        关闭自动提交状态     值为0:关闭自动提交

             SET autocommit = 0 ;             

        开启自动提交状态    值为1:开启自动提交

             SET autocommit = 1;

     注  :   有开必须的有关!!!!

SET autocommit=0;   #关闭自动 提交,以下视为一个事务

/*--转账:张三的账户减少500元,李四的账户增加500元--*/
UPDATE `bank` SET `currentMoney`=`currentMoney`-500 
     WHERE `customerName`='张三';
UPDATE `bank` SET `currentMoney`=`currentMoney`+500 
     WHERE `customerName`='李四';
     
COMMIT;    #提交事务

UPDATE `bank` SET `currentMoney`=`currentMoney`-1000 WHERE `customerName`='张三';

ROLLBACK;  #回滚事务

SET autocommit = 1;   #开启自动 提交,恢复默认状态


视   图   :

  为什么需要视图 ?

1. 不同的人员关注不同的数据

2.  保证信息的安全性

 什么是视图  ?

视图是一张虚拟表

    a.表示一张表的部分数据或多张表的综合数据

    b.其结构和数据是建立在对表的查询基础上

视图中不存放数据

    a.数据存放在视图所引用的原始表中

一个原始表,根据不同用户的不同需求,可以创建不同的视图

视图的用途  :

       a. 筛选表中的行

       b. 防止未经许可的用户访问敏感数据

        c. 降低数据库的复杂程度

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

使用SQL语句创建视图

  语法   :   CREATE VIEW    视图名字   AS  <SELECT 语句>;

使用SQL语句删除视图

   语法  :   DROP VIEW [IF EXISTS] 视图名 ;      #  [IF EXISTS]    删除前判断视图是否存在   可以不写

使用SQL语句查看视图 

   语法 :   SELECT 字段1, 字段2, …… FROM  视图名 ;

CREATE VIEW view_studebt    #创建视图
AS 
SELECT `studentName`,sub.`subjectName`,AVG(`studentResult`)
FROM `student` AS s
INNER JOIN `result` AS r ON r.`studentNo` = s.`studentNo`
INNER JOIN `subject` AS sub ON sub.`subjectNo` = r.`subjectNo`
GROUP BY `studentName`,`subjectName`;

SELECT * FROM view_studebt;   #对视图进行查询

DROP VIEW `view_namesdss`;   #对视图进行删除

使用视图注意事项  : 

        a . 视图中可以使用多个表
        b . 一个视图可以嵌套另一个视图 
        c . 对视图数据进行添加、更新和删除操作直接影响所引用表中的数据

        d . 当视图数据来自多个表时,不允许添加和删除数据

查看所有视图  : 


输出结果  :  

注 :   使用视图修改数据会有许多限制,一般在实际开发中视图仅用作查询 !!!


  索   引

什么是索引 : 

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

作 用
       大大提高数据库的检索速度
       改善数据库性能

MySQL索引按存储类型分类
        B-树索引:InnoDB、MyISAM均支持
        哈希索引

常 用 索 引 类 型 


创 建 索 引 

语法:   CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name    index_name  创建的索引名字

                        #unique 表示 唯一索引    fulltext 全文索引   spatial 空间索引   不添加也可以默认普通索引

           ON table_name (column_name[length]…);    

                 #   table_name   表示表名     (column_name[length]…)  字段

 例:  在student表的studentName列创建普通索引 

USE myschool;   #先打开数据库
CREATE  INDEX `index_student_studentName`      #创建的普通索引
   ON `student`(`studentName`);  

删 除 索 引 

语法:     DROP  INDEX index_name ON table_name;

          # index_name   索引名字    table_name   表名字

               注:  删除表时,该表的所有索引同时会被删除 


查 看 索 引

语法 :   SHOW INDEX FROM table_name;    # 后面接表名


表中个开头单词所代表的的意思 : 


数 据 库 备 份

        为什么进行数据库备份  

              1,防止突然断电
                2.防止病毒入侵
                 3.防止误操作导致数据丢失

                    4............(还有许多...)

使 用 mysqldump 命令备份数据库

mysqldump命令——MySQL一个常用的备份工具

        将CREATE和INSERT INTO语句保存到文本文件

        属于DOS命令



                      #mysqldump 命令   用户名  密码    数据库    表                     地址



使用mysqldump命令备份数据库常用参数选项


备份文件包含的主要信息  : 

    备份后文件包含信息MySQL及mysqldump工具版本号

    备份账户的名称

    主机信息

    备份的数据库名称

    SQL语句注释和服务器相关注释

    CREATE和INSERT语句


恢 复 数 据 库 

是一种 : 




第二种 :    使用source命令恢复数据库

        语法  :   source filename;   #后面接的是备份地址

注  :  登录MySQL服务后使用

        执行该命令前,先创建并选择恢复后的目标数据库



表数据导出到文本文件

            导出数据——可实现数据库服务器间移动数据

语法:   SELECT  FROM tablename 
          [WHERE contion]

         INTO OUTFILE 'filename' [OPTION]


            导入数据——可实现数据库服务器间移动数据    

语法:   LOAD DATA INFILE filename INTO TABLE tablename [OPTION]




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值