• mysql-数据备份与存储过程


    修改隔离级别

    修改全局的  
     set global transaction isolation level read committed;
     或者:
     set @@tx_isolation = "asasasasas-read";
     修改局部
     set session transaction isolation level read committed;
     
    
     @@系统内置变量
     @表示用户自定义的变量
    

    存储过程

    什么是存储过程

    是任意的sql语句的组合,被放到某一个存储过程中,类似于一个函数,有一个函数名/参数/还有函数体.
    

    用来干什么

    其中可以包含任何的sql语句,逻辑处理,事务处理,所有的我们学过的sql语句都可以放到里面
    

    三种数据处理方式

    1. 应用程序只关注业务逻辑,所有与数据相关的逻辑封装到mysql中

      • 优点:应用程序要处理的事情变少了,可以减少网络传输
    2. 应用程序既要处理业务逻辑,还要编写sql语句

      • 优点:降低了沟通成本,人力成本
      • 缺点: 网络传输增加,sql语句编写非常复杂
    3. 通过ORM框架, 使用对象关系映射,自动生成sql语句并执行

      • 优点:不需要在编写sql语句,提升了开发效率
      • 缺点:不够灵活,应用程序开发者和数据库完全隔离,可能导致仅关注上层开发,而不清楚底层原理
    # 语法
    create procedure p_name(p_type p_name p_date_type)
    begin
    sql......
    end
    
    # p_type 参数的类型  in 输入   out 输出必须是一个变量,不能是值    inout 即可输出也可输入  
    # p_name 参数的名字
    # p_data_type  参数的数据类型  如  int  float
    

    案例

    delimiter |
    create procedure a1(in a int, in b int, out c int) 
    begin
    set c = a + b;
    end |
    delimiter ;
    
    # 调用
    set @res =0;
    call a1(1,1,@res);
    select * from @res;
    
    # 删除
    drop procedure 名称;
    
    # 查看
    show create procedure 名称
    
    # 查看全部  例如 db库下的所有
    select name from mysql.proc where db = 库名 and  type = "PROCEDURE";
    
    delimiter |
    create procedure transfer2(in aid int,in bid int,in m float,out res int)
    begin 
    	declare exit handler for sqlexception
    	begin
    		# 异常处理代码
    		set res = 99;
    		rollback;
    	end;
    	
    	start transaction;
    	update account set money = money - m where id = aid;
    	update account set money = moneys + m where id = bid;
    	commit;
    	set res = 1;
    end|
    delimiter ;
    

    备份与恢复

    # 备份
    mysqldump.exe   
    mysqldump -u用户名 -p密码 数据库 表名1 表名2 .... > 文件路径....
    # 注意 第一个表示数据库  后面全都是表名
    mysqldump -uroot -p day41 student  > 
    
    
    #备份多个数据库
    mysqldump -uroot -p111 --databases day41 day40  > x3x.sql
    #指定 --databases 后导出的文件包含 创建库的语句   而上面的方式不包含
    
    #备份所有数据  
    mysqldump -uroot -p111 --all-databases > all.sql
    
    
    #自动备份
    linux crontab 指令可以定时执行某一个指令
    
    
    
    # 恢复数据:
    没有登录mysql 
    mysql < 文件的路径
    
    
    已经登录了MySQL 
    source  文件路径
    
    
    注意: 如果导出的sql中没有包含选择数据库的语句 需要手动加上 
    
  • 相关阅读:
    oracle后台进程详解
    解决表格撑开浏览器问题,即自动换行问题
    文件后缀名修改或添加——字符串转换
    Struts1 action重定向跳转 带参数
    js 正则表达式
    js获取焦点
    select值的获取及修改
    iframe自适应高度,根据src中页面来得到。
    今个忽然晓得,原来radio不是普通去获取值的!
    查询时,如何保存获取相关路径url
  • 原文地址:https://www.cnblogs.com/raynduan/p/11444766.html
Copyright © 2020-2023  润新知