zoukankan      html  css  js  c++  java
  • 网络编程(事务)

    事务

    概念:

    通俗的说,事务指一组操作,要么都执行成功,要么都执行失败

    举例:

    银行汇款
    嘤嘤嘤卡上一千元
    嘻嘻嘻卡上也是一千元
    嘤嘤嘤给朋友转账
    如果,网断了,嘤嘤嘤钱已经扣除,而朋友的钱又没加,啷个办?
    
    代码:create table user(
        id int auto_increment primary       key,name varchar(12) not null       default '', salary int not null     default 0)charset='utf8';
    
        insert into user(name,salary)       values ('嘤嘤嘤',1000),('嘻嘻        嘻',1000)
        
    使用事务:
        start transaction;
        sql语句 commit(无异常提               交)/rollback(有异常回滚);
        
    start transaction;
    update user set salary=900 where name='嘤嘤嘤';
    select *from user;
    update user set salary=1100 where name='嘻嘻嘻';
    select *from user;
    commit;(无异常 提交)
                     
                     
    start transaction;
    update user set salary=800 where name='嘤嘤嘤';
    select *from user;
    rollback;
    select *from user;
    
    ##rollback回滚影响所有
    ##特性:
    原子性(Atomicity):原子意外最小的粒子,既不能再分的事务,要么执行全部,要么全部取消;
    一致性(Consistency):指事务发生前和发生后,数据的总额依然匹配;
    隔离性(Isolation):简单来说,某个事物的操作对其他事务不可见的;
    持久性(Durbility):当事务完成后,其影响应该保留下来,不能撤销,只能通过‘补偿性事务’来抵消之前的错误;
    
    ##存储引擎:
    InnoDB:举例,保时捷引擎
    MyIsam:举例,五菱宏光引擎
    建表时:
    creat table user(id int auto_increment primary key,name carchar(12) not null default '',salary int not null default 0)engine=Innodb charset utf8;
    mysql5.5以上默认使用InnoDB
    两个引擎区别:
    1. Innodb 支持事务,支持行锁
    2. MyISAM  不支持事务,支持表锁

    视图

    增加视图:

    create view 视图 as SQL 语句;

    删除:dorp view v1;

    触发器:两张表: 订单表 库存表 场景: 当我下一个订单的时候, 订单表中需要增加一个记录, 同时库存表中需要减1 这两个操作是同时发生的, 并且前一个操作出发后一个操作使用方法:

    增加:delimiter// ...........delimiter;

    查看:show triggersG

    删除:drop trigger 触发器名;

    存储过程:

    创建:      
    delimiter //   
    create procedure p1()   
    BEGIN      
    select * from user where id=2;   
    END //      
    delimiter ;

    函数:

    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个字符组成的子序列

    备份

    (运维方向)

    数据库的备份   
    为啥要备份?      
    将重要的数据保存下来      
    用法:      
    #语法:      
    # mysqldump -h 服务器 -u用户名 -p密码 数据库名 表名,  表名,.... > aaa.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;
    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    【Kubernetes学习之一】Kubernetes 简介
    eclipse&myeclipse 生成jar包后,spring无法扫描到bean定义
    【Docker学习之七】Docker图形化管理和监控
    【Docker学习之六】Docker容器互联
    【Docker学习之五】Docker自定义镜像示例
    【Docker学习之四】Docker自定义容器镜像
    【Docker学习之三】Docker查找拉取镜像、启动容器、容器使用
    【Docker学习之二】Docker部署安装
    Tensorflow之tf.metrics
    pytorch 实现多分类
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863924.html
Copyright © 2011-2022 走看看