zoukankan      html  css  js  c++  java
  • 博客整理day37

    python day 37

    一 事务

    ​ mysql事务 : 主要用于处理操作量大,复杂度高的数据.比如,在人员管理系统中,删除一个人员,既需要删除人员的基本资料,也要删除和该人员相关的所有信息,这些数据库操作语句就构成一个事务

    #语法
    #开启事务
    start transaction;
    
    #提交
    commit;
    
    #回滚
    rollblack;
    

    事务必须满足四个条件:

    原子性 (Atomicity) : 原子意为最小的粒子,即不能再分的事务,要么全部执行,要么全部取消

    一致性(Consistency) : 指事务发生前和发生后,数据的总额依然匹配

    隔离性(Isolation) :简单来说,某个事务的操作对其他事务不可见

    持久性(Durability) : 当事务完成后,其影响应该保留下来,不能撤销,只能通过'补偿性事务'来抵消之前的错误

    存储引擎

    1. Innodb 性能高
    2. MyISAM
    

    两个引擎的区别:

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

    视图

    视图是一个虚拟表(非真实存在),其本质是[根据省钱啦语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用

    #添加视图语法
    create view 视图名 as SQL语句
    
    create view teacher_view as select tid from teacher where tname='momo';
    
    select * from teacher_view;  #查询视图数据
    
    update teacher_view set tname = 'momo2'; #修改视图中的数据
    
    insert into teacher_view values ('momo3'); #往视图中添加数据
    
    #修改视图
    ALTER VIEW 视图名 AS SQL语句
    
    alter view teacher_view as select * from teacher where tname='momo2';
    
    #删除视图
    DROP VIEW 视图名;
    
    drop view teacher_view;
    

    触发器

    使用触发器可以定制用户对表进行[增,删,改]操作时前后的行为

    触发器没有查询

    #创建触发器
    delimiter//
    
    create trigger tri_befor_insert_tb1 befor insert on t2 for each row
    begin
    	insert into t3(name) values('aa');
    end//
    
    delimiter;
    
    # new表示即将插入的数据行
    # old表示即将删除的数据行
    
    #删除触发器
    drop trigger 触发器名;
    

    存储过程

    存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的sql

    使用存储过程的优点:

    1. 用于替代sql语句,实现程序与sql解耦
    2. 基于网络传输,传别名的数据量小,而直接传sql数据量大
    

    缺点:

    程序员扩展功能不方便

    #创建存储过程
    delimiter//
    
    create procedure p1()
    begin
    select * from user where id = 2;
    end//
    
    delimiter;
    
    #使用存储过程
    call p1();
    
    #删除存储过程
    drop procedere p1;
    
    #创建存储过程(有参)
    #in 仅用于传入参数用
    #out 仅用于返回值用
    #inout 既可以传入又可以当做返回值
    

    函数

    #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.10000'
        
    #instr(str,substr)
    返回字符串str中子字符串的第一个出现位置
    
    #left(str,len)
    返回字符串str从开始的len位置的子序列字符
    
    #lower(str)
    转换为小写
    
    #upper(str)
    转换为大写
    
    #ltrim(str)
    返回字符串str,其引导空格字符被删除
    
    #substring(str,pos,len)
    获取字符串zixulie
    
    #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实现逻辑备份
    #语法
    mysqldump -h服务器 -u用户名 -p密码 数据库名 >备份文件.sql
    
    #示例
    #单库备份
    mysqldump -uroot -p123 db1 > db1.sql
    
    #多库备份
    mysqldump -uroot -p123 --databases 数据库名1,数据库名2 > 文件名.sql
    
    #备份所有数据库
    mysqldump -uroot -p123 --all-databases > all.sql
    
    #重新导入
    source 绝对路径;
    
  • 相关阅读:
    能直接调用析构函数,不能直接调用构造函数
    第二章、IP协议详解
    第一章、TCP协议详解
    STL
    容器
    7、jQuery选择器及绑定方法
    6、JQuery语法
    5、DOM 定时器 和 JQuery 选择器
    4、DOM之正则表达式
    3、JS函数与DOM事件
  • 原文地址:https://www.cnblogs.com/samoo/p/11787306.html
Copyright © 2011-2022 走看看