事务 索引 备份 恢复

1、执行顺序

  1. select 4.对分组后的记录进⾏统计计算。
  2. from 1. 从指定的表中取出所有的记录。
  3. where 2. 根据条件进⾏筛选记录。
  4. group by 3. 根据指定的字段进⾏分组。
  5. having 5. 对统计后的结果再次进⾏筛选。
  6. order by 6. 根据指定的字段进⾏排序。
  7. limit 7. 取出指定的偏移量和⾏数的部分记录。

2、事务

  1. 什么是事务:是数据库操作的最基本的单元,在逻辑上是⼀组操作,要么都成功,如果其中有⼀条失败,就都失败。
  2. 例子:银行转账
  3. 事务的特性
    1. 原⼦性: 有多个操作,要么都成功,如果有⼀个失败,就所有的都失败。
    2. ⼀致性: 操作之前和操作之后的总量不变。
    3. 隔离性: 在并发操作中,多事务操作,多事务之间不互相影响。
    4. 持久性: 当事务操作完成之后,进⾏事务的提交,数据库才真正发⽣变化。
  4. mysql的事务处理 只⽀持InnoDb 和 BDB 数据表类型
    1. 表类型                  优点                        缺点
    2. MyISAM      快速度,占⽤空间⼩       不⽀持事务和外键
    3. InnoDB        ⽀持事务和外键            速度慢,占⽤空间⼤
    4. BDB            ⽀持事务 ,不⽀持外键      速度慢,占⽤空间⼤
  5. ⾃动提交模式
    1. 使⽤set autocommit 来改变⾃动提交的模式。
    2. set autocommit =0 #关闭⾃动提交。
    3. set autocommit =1 #开启 ⾃动提交。
    4. mysql中默认的是⾃动提交。
    5. select @@autocomiit; #查看⾃动提交的模式。
  6. 事务的实现⽅法
    1. start transaction(begin) 开启⼀个事务,标记事务的⼀个起点。
    2. start transaction(begin) 开启⼀个事务,标记事务的⼀个起点。
    3. rollback 将事务回滚,数据回到本次事务初始的状态。
  7. 事务的处理步骤
    1. 关闭⾃动提交。
    2. 开启⼀个事务。
    3. commit 或 rollback
    4. 开启⾃动提交
    5. 例子
      select @@autocommint; #查询当前的自动模式是否开启 1开启 0关闭
      
      create table account(
      id int(3) primary key auto_increment,
      name varchar(10),
      money decimal(9,2)
      );
      insert into account (name,money) values ("A",2000.0);
      insert into account (name,money) values ("B",2000.0);
      -- 用事务 A给B转账500
      -- 1、关闭自动提交
      set autocommit=0;
      -- 2、开启一个事务
      start transaction;
      -- 3、具体操作
      update account set money=money-500 where name="A";
      update account set money=money+500 where name="B";
      -- 4、提交
      commit;
      -- 回滚
      rollback;
      -- 5、开启自动提交
      set autocommit=1;

3、索引

  1. 索引的作⽤
    1. 提⾼查询的速度
    2. 确保数据的唯一性
    3. 可以加速表和表之间的连接,实现表与表之间参照完整性。
    4. 使用分组和排序子句进行检索时,可以显著减少分组和排序的时间。
  2. 索引的分类
    1. 主键索引(primary key):学⽣表中的学号,就是⼀个唯⼀标识,可以作为主键
    2. 唯⼀索引( unique key)
      1. 避免在同⼀个表中,某列数据的值重复。
      2. 与主键的区别
        1. 主键索引只能有⼀个
        2. 唯⼀索引可以有多个
        3. -- 主键索引   唯一索引
          create table student2(
          id int primary key auto_increment, #主键索引
          name varchar(20) unique key  #唯一索引
          );
          insert into student2(name) values ("张三") ;
    3. 常规索引( index | key)
      1. 作⽤: 快速定位特定数据
      2. index和key都可以设置常规索引,主要⽤于查找条件字段
      3. 不宜添加太多常规索引, 影响数据的插⼊和删除和修改的速度。
      4. -- 常规索引
        create table student3(
        id int primary key auto_increment,
        name varchar(20),
        key(name)
        );
        insert into student3(name) values ("张三") ;
    4. -- 练习:给myschool库中的student表添加索引
      -- 学号为主键索引,身份证号为唯一索引 姓名为常规索引
      -- 表存在的情况下,添加索引
      alter table student add primary key(StudentNo);
      alter table student add unique key(IdentityCard);
      alter table student add key(StudentName);
      -- create 索引类型 索引名 on 表名(字段名);
      create index stu_gradeId on student(GradeId);
    5. 索引准则
      1. 索引不是越多越好。
      2. 小数据量的表建议不要加索引。
      3. 索引⼀般⽤在查找条件的字段上,如 where order by 后边的列名。
      4. 字段的值是多个的不适合做索引。
      5. 字段内容不是经常变化的,适合做索引,如果给经常变化的字段添加索引反⽽会降低性能。
      6. 不宜添加过多索引,每添加⼀条索引都会占⽤磁盘空间。
    6. 查看表的索引和删除索引
      -- 查看表的索引
      -- show 索引类型 from 表名
      -- 查看学生表中的索引
      show index from student;
      show keys from student;
      -- 删除索引
      -- drop index 索引名 on 表名
      drop index IdentityCard_2 on student;
      -- alter table 表名 drop index 索引名
      alter table student drop index IdentityCard;

4、备份

  1. 数据库的备份⾮常有必要。
  2. 数据转移。
  3. 备份⽅法
    1. 数据库的管理 ⼯具 sqlyog navicate
    2. mysqldump 备份⼯具
      1. 格式: mysqldump -h主机名 -u⽤户名 -p密码 数据库名[table1 table] >路径⽂件.sql
      2. mysqldump -uroot -p123456 myschool >C:\Users\hsk\Desktop\sql_dump\myschool_back.sql  #把mysql数据库全部备份到文件
        
        mysqldump -uroot -p123456 myschool student >C:\Users\hsk\Desktop\sql_dump\myschool_back.sql  #把mysql数据库student表备份到文件
      3. -t 只有数据没有表结构
      4. -d 只有表结构没有数据
    3. 恢复数据库
      1. mysql -u⽤户名 -p密码 数据库名< 备份的⽂件.sql
        1. 要先有这个数据库
        2. mysql -uroot -p12345678 myschool3 <C:\Users\hsk\Desktop\sql_dump\myschool_student_back.sql
      2. ⽤source语句
        1. 先进⼊mysql客户端 mysql -uroot -p密码
        2. source ***.sql
        3. mysql -uroot -p123456
          use myschool;
          Database changed
          source C:\Users\hsk\Desktop\sql_dump\myschool_result_back.sql;
      3. 使⽤sql语句导⼊和导出数据
        1. 如果命令不能⽤查 https://baijiahao.baidu.com/s?
          id=1731318787265238561&wfr=spider&for=pc
        2. select * into outfile "路径⽂件名" from 表名 #输⼊的⽂件名不能先存在
        3. load data infile "⽂件名" into table 表名
posted @ 2023-10-26 18:50  韩世康  阅读(5)  评论(0编辑  收藏  举报