day 37

day 36 mysql 事务

01.事务

  1. 事务指一组操作,要么都执行成功,要么都执行失败

  2. transaction

    start transaction; # 开启一个事务
    # 对数据进行操作
    commit; # 组合操作执行成功,提交修改结果
    rollback; # 撤销本次事务操作
    
  3. 事物的特性(ACID);

    1. 原子性(Atomicity);原子意为最小的粒子,代表事务不能被分割,要么全部执行,要么全部取消(防止数据出错)
    2. 一致性(Consistency);指事物发生前后数据总额依然相同
    3. 隔离性(Isolation);再本次事务尚未提交之前,对数据的操作无法被其他操作获取到
    4. 持久性(Durability);事务操作完成后,其对数据的影响被保存下来,不能撤销,只能通过‘补偿性事务’来抵消之前的错误。
  4. 存储引擎;

    1. InnoDB;高效引擎,不写默认使用Innodb

      create table 表名(
      id int auto_increment primary key,
      字段名 类型 约束性 ,
      ......
      )engine = Innodb charset utf8; 
      
    2. MyIsam;低效引擎

    3. 区别;

      1. innodb支持事务,支持行锁,精度更高
      2. myisam不支持事务,支持表锁
  5. pass

02.了解性

  1. 视图;view

    1. 用于项目中存在大量重复性查询sql语句

    2. 视图是一个特殊的表,将该sql语句执行的结果保存到该表中

    3. 通过查看这个表来,查看该sql语句执行的结果,但非常消耗性能

      create view 视图名 as sql语句; # 创建视图
      drop view 视图名; # 删除视图
      select * from 视图名; # 查看该视图执行效果
      
  2. 触发器;trigger

    1. delimiter修改结束符

    2. 当你执行某一操作时,自动执行另一个操作

      delimiter //
      create trigger 触发器名 before 触发条件 insert on 表名 for each row
      begin
      		被触发后要执行的操作
      end //
      delimiter; # 将结束符改回来
      
  3. 存储过程;procedure

    1. 像定义一个SQL函数

    2. 创建

      delimiter //
      create procedure 名字()
      begin 
      sql语句;
      end //
      delimiter ;
      call 名字(); # 调用这个函数
      
      drop procedure 名字; # 删除该过程
      
  4. 函数

    		CHAR_LENGTH(str)
    			返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。
    			对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。
    		
    		CONCAT(str1,str2,...)
    			字符串拼接
    			如有任何一个参数为NULL ,则返回值为 NULL。
    		FORMAT(X,D)
    			将数字X 的格式写为'#,###,###.##',以四舍五入的方式保留小数点后 D 位, 并将结果以字符串的形式返回。若  D 为 0, 则返回结果不带有小数点,或不含小数部分。
    			例如:
    				SELECT FORMAT(12332.1,4); 结果为: '12,332.1000'
    		INSTR(str,substr)
    			返回字符串 str 中子字符串的第一个出现位置。
    		LEFT(str,len)
    			返回字符串str 从开始的len位置的子序列字符。
    		LOWER(str)
    			变小写
    		UPPER(str)
    			变大写
    		LTRIM(str)
    			返回字符串 str ,其引导空格字符被删除。
    		RTRIM(str)
    			返回字符串 str ,结尾空格字符被删去。
    		SUBSTRING(str,pos,len)
    			获取字符串子序列
    		LOCATE(substr,str,pos)
    			获取子序列索引位置
    		REPEAT(str,count)
    			返回一个由重复的字符串str 组成的字符串,字符串str的数目等于count 。
    			若 count <= 0,则返回一个空字符串。
    			若str 或 count 为 NULL,则返回 NULL 。
    		REPLACE(str,from_str,to_str)
    			返回字符串str 以及所有被字符串to_str替代的字符串from_str 。
    		REVERSE(str)
    			返回字符串 str ,顺序和字符顺序相反。
    		RIGHT(str,len)
    			从字符串str 开始,返回从后边开始len个字符组成的子序列
    
  5. 数据的备份

    1. 将重要的数据保存下来

      # 语法 ## 退出mysql后使用
      mysqldump -h 服务器 -u用户名 -p密码 库名 表名1,表名2,......>保存文件名.sql
      # 单库备份
      mysqldump -uroot -p123 db1 > db1.sql
      mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
      # 多库备份
      mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
      # 备份所有库
      mysqldump -uroot -p123 --all-databases > all.sql
      # 重新导入:
      mysql> source D:/test3.sql;
      
  6. pass

原文地址:https://www.cnblogs.com/luocongyu/p/11778740.html