zoukankan      html  css  js  c++  java
  • day37事务

    事务

    事务指一组操作,要么都成功,要么都失败

    事务方法

    start transaction;
    
        sql语句
    # 提交/返回
    commit;/rollback;
    

    事务的特性

    1. 原子性:原子意为最小的粒子,即不能再分的事务,要么全部执行,要么全部取消
    2. 一致性:指事务发生前和发生后,数据的总额依然匹配
    3. 隔离性:简答的说,某个事务的操作对其他事务是不可见的
    4. 持久性:当事务完成后,其影响应该保留下来,不能撤销,只能通过”补偿性事务“来抵消之前的错误

    存储引擎

    InnoDB:保时捷引擎

    Mylsam:奔奔引擎

    建表的时候

    create table user (
        id int auto_increment primary key,
        name varchar(32) not null default '',
        salary int not null default 0
    )engine=Innodb charset utf8;
    

    两个引擎的区别

    1. Innodb支持事务,MyISAM不支持
    2. InnoDB支持行锁,MyISAM支持表锁

    视图

    增加视图

    create view 视图名 as SQL语句;
    

    删除

    drop view v1;
    

    触发器

    两张表

    订单表和库存表

    场景

    当下一个订单的时候,订单表中需要增加一个记录,同时库存表中需要减1

    这两个操作是同时发生的,并且前一个操作触发后一个操作

    使用方法

    增加:

    delimiter//
    
    CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON t2 FOR EACH ROW
    BEGIN
    INSERT INTO t3 (NAME) VALUES ('aa');
    END //
    
    delimiter ;
    

    注:当向tb1表中添加一条数据的同时,向tb2表添加一条数据

    查看:

    show triggersG
    

    删除:

    drop trigger 触发器名;
    

    存储过程

    像一个SQL函数

    创建:

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

    删除:

    drop procedure p1;
    

    函数

    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 -p 服务器 -u用户名 -p密码 数据库名 表名,表名,...>aaa.sql
    

    单库备份

    mysqldump -uroot -p123 db1>db1.sql
    mysqldump -uroot -p123 db1 table1 table2 >db1-table1-table2.sql
    

    多库备份

    mysqldump -uroot -p123 --datrabases db1 db2 mysql db3>db1_db2_mysql_db3.sql
    

    备份所有库

    mysqldump -uroot -p123 --all-datrabases > all.sql
    

    重新导入

    mysql > source D:/test3.sql;
    
  • 相关阅读:
    Codeforces 1045C Hyperspace Highways (看题解) 圆方树
    Codeforces 316E3 线段树 + 斐波那切数列 (看题解)
    Codeforces 803G Periodic RMQ Problem 线段树
    Codeforces 420D Cup Trick 平衡树
    Codeforces 295E Yaroslav and Points 线段树
    Codeforces 196E Opening Portals MST (看题解)
    Codeforces 653F Paper task SA
    Codeforces 542A Place Your Ad Here
    python基础 异常与返回
    mongodb 删除
  • 原文地址:https://www.cnblogs.com/shin09/p/11799133.html
Copyright © 2011-2022 走看看