Skr-Eric的Mysql课堂(六)——Mysql的锁、存储引擎、事务、数据的导入导出及备份恢复

本文主要是介绍Skr-Eric的Mysql课堂(六)——Mysql的锁、存储引擎、事务、数据的导入导出及备份恢复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1、目的 :解决客户端并发访问的冲突问题

  2、锁分类

    1、锁类型

      1、读锁(共享锁)

        查询(select):加读锁之后,别人不能更改表记录,但可以进行查询

      2、写锁(互斥锁、排他锁)

        更新(update):加写锁之后别人不能查、不能改

    2、锁粒度

      1、行级锁 :Innodb

        select :加读锁,锁1行

         update :加写锁,锁1行

      2、表级锁 :MyISAM

        select :加读锁,锁1张表

       update :加写锁,锁1张表

 

存储引擎(engine :处理表的处理器)

  1、基本操作命令

    1、查看所有存储引擎

      show engines;

    2、查看已有表的存储引擎

      show create table 表名;

    3、创建表指定存储引擎

      create table 表名(...)engine=myisam,charset=utf8;

    4、已有表

      alter table 表名 engine=myisam;

  2、常用存储引擎的特点

    1、InnoDB特点

      1、支持事务、外键、行级锁

      2、共享表空间

        表名.frm :表结构和索引信息  

表名.ibd : 表记录

    2、MyISAM特点

      1、支持表级锁

      2、独享表空间

        表名.frm :表结构

       表名.MYD :表记录

       表名.MYI :索引信息

    3、Memory存储引擎

      1、数据存储在内存中,速度快

      2、服务器重启、MySQL服务重启后表记录消失

  3、如何决定使用哪个存储引擎

    1、查询操作多的表使用MyISAM(使用InnoDB浪费资源)

    2、写操作多的表使用InnoDB

 

事务和事务回滚应用

    1、SQL命令会 autocommit 到数据库执行

    2、事务操作

      1、开启事务

        mysql> begin;   |  start transactions;

        mysql> SQL命令 ...

  ## 此时autocommit被禁用 ##

      2、终止事务

        mysql> commit; | rollback;

    3、案例

      1、背景

        你 :建行卡

朋友 :工行卡

你在建行自动取款机 给你朋友 转5000块钱

      2、建表

        表1、CCB

          create table CCB(

  name varchar(20),

  money decimal(20,2)

  );

  insert into CCB values("有钱人",100000);

表2、ICBC

  create table ICBC(

  name varchar(20),

  money decimal(20,2)

  );

  insert into ICBC values("没钱人",0);

      3、开始转账

成功:

        mysql> begin;

mysql> update CCB set money=money-5000 where name="有钱人";

mysql> update ICBC set money=money+5000 where name="没钱人";

mysql> commit;

#####转账成功#####

 

失败 :

mysql> begin;

mysql> update CCB set money=money-5000 where name="有钱人";

mysql> update ICBC set 工行服务器故障... ;

mysql> rollback;

#####转账失败#####

 

数据导出

  1、把数据库表的记录到处到系统文件里

  2、语法格式

    select ... from 表名

    into outfile "文件名"

    fileds terminated by "分隔符"

    lines terminated by "\n";

  3、练习

    1、把MOSHOU库下的sanguo表中,英雄的姓名、攻击值和国家给导出来,sanguo.csv

      1、查看搜索路径

        show variables like "%secure%";

      2、执行数据导出语句

        select name,gongji,country from MOSHOU.sanguo

into outfile "/var/lib/mysql-files/sanguo.csv"

fields terminated by ","

lines terminated by "\n";

 

Error: ... secure_file_priv ...

    2、把 mysql 库下的user表中 user、host的值导出到系统文件 user.txt

      select user,host from mysql.user

      into outfile "/var/lib/mysql-files/user.txt"

      fields terminated by "   "

      lines terminated by "\n";

  4、查看、更改文件权限

    1、ls -l score.txt

      -  rw-  rw-  r--   tarena   tarena

      r(4) : 读           所有者   所属组

     w(2) : 写

     x(1) : 可执行

        rw- : 所有者权限

       rw- : 同组其他用户文件

        r-- : 其他组的用户权限

    2、chmod 777 score.txt

       chmod 740 score.txt

 

表的复制

  1、语法

    create table 表名 select ... from 表名 where 条件;

  2、示例

    1、复制MOSHOU.sanguo表,sanguo2

      create table MOSHOU.sanguo2 select * from MOSHOU.sanguo;

    2、复制MOSHOU.sanguo中的id、name、country的记录,sanguo3

      create table MOSHOU.sanguo3 select id,name,country from MOSHOU.sanguo;

    3、复制MOSHOU.sanguo中的name、country,每页显示2条记录,复制第3页的内容

      create table MOSHOU.sanguo4 select name,country from sanguo limit 4,2;

  3、复制表结构

    create table 表名 select ... from 表名 where false;

 

数据备份(mysqldump,在Linux终端操作)

  1、命令格式

    mysqldump -u用户名 -p 源库名 > ***.sql

  2、源库名的表示方式

    --all-databases    备份所有库

    库名               备份1个库

    -B 库1 库2 库3     备份多个库

    库名 表1 表2 表3   备份多张表

  3、练习

    1、备份所有库,放到mydata目录下 :All.sql

      mysqldump -uroot -p --all-databases > All.sql

    2、备份db4库中的 sheng、city、xian三张表,db4scx.sql

      mysqldump -uroot -p db4 sheng city xian > db4scx.sql

    3、备份MOSHOU和db4两个库,md.sql

      mysqldump -uroot -p -B db4 MOSHOU > md.sql

 

数据恢复

  1、命令格式(Linux终端)

    mysql -u用户名 -p 目标库名 < ***.sql

  2、从所有库备份All.sql中恢复某一个库

    mysql -u用户名 -p --one-database 库名 < All.sql

    mysql -uroot -p --one-database db4 < All.sql

  3、示例

    1、在db4.sheng添加一条记录

      insert into sheng values(null,300000,"黑龙江");

    2、在db4库,新建一张表t888

      create table t888(id int);

    3、从 db4.sql 恢复db4库

      mysql -uroot -p db4 < db4.sql

    注意 :

      1、恢复库时,如果恢复到原库会将表中数据覆盖,新增表不会删除

      2、恢复库时,如果库不存在,则必须先创建空库

 

 

想要看更多的课程请微信关注SkrEric的编程课堂

这篇关于Skr-Eric的Mysql课堂(六)——Mysql的锁、存储引擎、事务、数据的导入导出及备份恢复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/807025

相关文章

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

MySQL中COALESCE函数示例详解

《MySQL中COALESCE函数示例详解》COALESCE是一个功能强大且常用的SQL函数,主要用来处理NULL值和实现灵活的值选择策略,能够使查询逻辑更清晰、简洁,:本文主要介绍MySQL中C... 目录语法示例1. 替换 NULL 值2. 用于字段默认值3. 多列优先级4. 结合聚合函数注意事项总结C

通过ibd文件恢复MySql数据的操作方法

《通过ibd文件恢复MySql数据的操作方法》文章介绍通过.ibd文件恢复MySQL数据的过程,包括知道表结构和不知道表结构两种情况,对于知道表结构的情况,可以直接将.ibd文件复制到新的数据库目录并... 目录第一种情况:知道表结构第二种情况:不知道表结构总结今天干了一件大事,安装1Panel导致原来服务

Seata之分布式事务问题及解决方案

《Seata之分布式事务问题及解决方案》:本文主要介绍Seata之分布式事务问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Seata–分布式事务解决方案简介同类产品对比环境搭建1.微服务2.SQL3.seata-server4.微服务配置事务模式1