zoukankan      html  css  js  c++  java
  • 事务、视图、触发器、存储引擎、备份

    一、事务

    1. 什么事务

    • 事务是并发控制单位,指一组操作,要么都执行成功,要么都执行失败。

    2. 事务有什么用

    • 保证数据库数据的完整。

    3. 使用方法

    • 语法:

      start transaction;
      	sql语句
      commit/rollback;
      # commit 的意思是上面的处理都正确,现在提交,修改本地数据
      # rollback 的意思是上面的处理有错误或者问题,取消上面所有的操作,回到start transaction 之前的状态
      
      

    4. 事务的特性(ACID)

    (1)原子性( Atomicity )

    • 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做

    (2)一致性(Consistency)

    • 指事务发生前和发生后,数据的总额依然匹配

    (3)隔离性( Isolation)

    • 一个事务的执行不能干扰其它事务。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰

    (4)持久性(Durability)

    • 指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的

    二、MySQL存储引擎

    1. InnoDB

    • 高性能,支持事务,支持行锁,也支持表锁
    • 是MySQL5.0版本及以上的默认存储引擎

    2. MyIsam

    • 低性能,不支持事务,支持表锁
    • 现在亦逐渐被淘汰

    3. 更多InnoDB和MyIsam的区别

    三、视图

    1. 什么是视图

    • 视图是一个虚拟表(非真实存在),是根据SQL语句获取动态的数据集,并为其命名。之后使用名称就可以获取结果集,并可以把结果集当做表来使用

    • 但是,视图会加大数据库系统的负担,现在已基本没人使用。

    2. 视图的使用

    • #增加视图:
      			create view 视图名 as SQL语句;
          
      #删除:	
      			drop view v1;
       
      #查看视图:
      			select * from 视图名;
      

    四、触发器

    1. 什么是触发器

    • 触发器是一种语法。它的功能是把多条SQL语句关联起来,当我们执行指定的SQL语句时,就会同时执行其他SQL语句。

    2. 触发器的使用

    • 两张表:
      			订单表     库存表
      			
      		场景:
      			当我下一个订单的时候, 订单表中需要增加一个记录, 同时库存表中需要减1
      			这两个操作是同时发生的,  并且前一个操作出发后一个操作
                  
      # 使用方法:
      			# 例子:当向tb1表中添加一条数据的同时, 向tb2表添加一条数据
      			增加:
      				delimiter //
      				
      				CREATE TRIGGER 触发器名
                      BEFORE INSERT ON t2 FOR EACH ROW #触发条件
      				BEGIN
      					INSERT INTO t3 (NAME) VALUES ('aa'); # 触发后执行的sql语句
      				END //
      				
      				delimiter ;  
                      
      #删除:
      drop trigger 触发器名;    
      
      # 查看
      
      show triggersG
      

    五、存储过程

    1. 什么是存储过程

    • 就是类似python里的函数,存储过程就是数据库系统的函数,把一堆SQL语句丢进一个存储过程里,再通过这个存储过程名来调用,执行器内部的SQL语句。

    2. 存储过程的使用

    • #创建:
      			
      			delimiter //
      		
      			create procedure 存储过程名()
      			BEGIN
      				select * from user where id=2; # SQL语句
      			END //
      			
      			delimiter ;
                  
      # 调用存储过程:
      			call 存储过程名();
          
      # 删除:    
      			drop procedure 存储过程名;
      

    六、内置函数(常用)

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

    七、数据库的备份

    1. 为什么要对数据进行备份

    • 一些数据的价值很大,为了意外的事故导致这些数据的丢失,所以要对其进行备份

    2. 如何备份

    用法:
    				#语法:
    				# mysqldump -h 服务器 -u用户名 -p密码 数据库名 表名,  表名,.... > 备份文件的路径(如:aaa.sql  , 这个是相对路径,也可以填绝对路径,都要以 .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;
    
    
  • 相关阅读:
    20150316--TP-01
    20150314--TP-02
    20150314--TP-01
    20150313+微信-全
    表单/iframe与video标签
    图像/超链接标签
    HTML列表与表格
    JAVA新的一天
    MySQL常用函数
    php基础--来自网页转载
  • 原文地址:https://www.cnblogs.com/Mcoming/p/11788384.html
Copyright © 2011-2022 走看看