MySQL事务、索引、 数据恢复和备份

MySQL的事务处理

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

事务的特性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

MySQL的事务实现方法
SET AUTOCOMMIT

  • 使用SET语句来改变自动提交模式
  • SET AUTOCOMMIT = 0; # 关闭自动提交模式 SET AUTOCOMMIT = 1; # 开启自动提交模式
  • MySQL中默认是自动提交
  • 使用事务时应先关闭自动提交

注意

开启事务
SHOW VARIABLES LIKE 'event_scheduler';
设置数据库支持事务
SET GLOBAL  event_scheduler=ON;

MySQL的事务实现方法
START TRANSACTION
开始一个事务,标记事务的起始点
COMMIT
提交一个事务给数据库
ROLLBACK
将事务回滚,数据回到本次事务的初始状态
SET AUTOCOMMIT = 1;
开启MySQL数据库的自动提交

MySQL事务处理步骤
在这里插入图片描述

数据库索引

作用

  1. 提高查询速度 确保数据的唯一性
  2. 可以加速表和表之间的连接,实现表与表之间的参照完整性
  3. 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
  4. 全文检索字段进行搜索优化

分类

  • 主键索引(PRIMARY KEY)
  • 唯一索引(UNIQUE)
  • 常规索引(INDEX)
  • 全文索引(FULLTEXT

主键索引
某一个属性或属性的组合能唯一标识一条记录
如:学生表(学号,姓名,班级,性别等) ,学号就是唯一标识的,可作为主键
特点

  • 最常见的索引类型
  • 确保数据记录的唯一性
  • 确定特定数据记录在数据库中的位置

唯一索引(UNIQUE)
作用
避免同一个表中某数据列中的值重复
与主键索引的区别
主键索引只能有一个
唯一索引可有多个

常规索引(INDEX)
作用:快速定位特定数据
注意
index和key关键字都可设置常规索引
应加在查找条件的字段
不宜添加太多常规索引,影响数据的插入、删除和修改操作

全文索引(FULLTEXT)
作用:快速定位特定数据
注意
只能用于MyISAM类型的数据表
只能用于 CHAR 、 VARCHAR、TEXT数据列类型
适合大型数据集

管理索引
创建索引

  • 创建表时添加
  • 建表后追加
ALERT TABLE 表名 ADD  索引类型(数据列名)

删除索引

DROP  INDEX 索引名 ON    表名
ALTER TABLE 表名   DROP  INDEX  索引名
ALTER TABLE 表名   DROP  PRIMARY KEY

查看索引

SHOW  INDEX(或KEYS) FROM 表名

索引准则

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表建议不要加索引
  • 索引一般应加在查找条件的字段

MySQL的备份

数据库备份必要性
保证重要数据不丢失
数据转移

MySQL数据库备份方法
mysqldump备份工具
数据库管理工具,如SQLyog
直接拷贝数据库文件和相关配置文件

mysqldump数据库备份
作用
转储数据库
搜集数据库进行备份
将数据转移到另一个SQL服务器(不一定是MySQL服务

mysqldump  -h 主机名 –u 用户名 –p   [options]   数据库名  
[ table1 table2 table3 ]   > path/filename.sql
 # 备份myschool数据库如: 
 > mysqldump -u root -p  myschool > d:/myschool.sql
  EnterPassword: *****

mysqldump常用选项
在这里插入图片描述
在这里插入图片描述
MySQL数据库的恢复
方法一
用 SOURCE 语法

SOURCE     /path/db_name.sql;

/path/是一个绝对路径,并且必须是mysql 运行用户有权限读取的文件
SOURCE 在MySQL命令行里执行

方法二
用 mysql 客户端

mysql –u root –p  dbname  <  /path/db_name.sql;

利用SQL语句导出、导入数据

导出

SELECT   *   INTO   OUTFILE   'file_name'  
    FROM   tbl_name

导入

LOAD   DATA   INFILE   'file_name '   
    INTO   TABLE   tbl_name[FIELDS]

猜你喜欢

转载自blog.csdn.net/zmzdmx/article/details/108084262