最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL悬系之事务与视图介绍

来源:懂视网 责编:小采 时间:2020-11-09 08:54:13
文档

MySQL悬系之事务与视图介绍

MySQL悬系之事务与视图介绍:一、事务1、提交2、回滚3、ACID特性二、视图1、创建视图2、删除视图3、更新视图4、使用视图三、子查询1、 使用子查询2、 标量子查询3、 关联子查询一、事务在 RDBMS 中,事务是对表中数据进行更新的单位。简单来讲,事务就是需要在同一个处理单元中执行的一系
推荐度:
导读MySQL悬系之事务与视图介绍:一、事务1、提交2、回滚3、ACID特性二、视图1、创建视图2、删除视图3、更新视图4、使用视图三、子查询1、 使用子查询2、 标量子查询3、 关联子查询一、事务在 RDBMS 中,事务是对表中数据进行更新的单位。简单来讲,事务就是需要在同一个处理单元中执行的一系

  • 一、事务

  • 1、提交

  • 2、回滚

  • 3、ACID特性

  • 二、视图

  • 1、创建视图

  • 2、删除视图

  • 3、更新视图

  • 4、使用视图

  • 三、子查询

  • 1、 使用子查询

  • 2、 标量子查询

  • 3、 关联子查询

  • 一、事务

    在 RDBMS 中,事务是对表中数据进行更新的单位。简单来讲,事务就是需要在同一个处理单元中执行的一系列更新处理的集合。

    事务开始语句START TRANSACTION;
    
     DML语句①;
     DML语句②;
     DML语句③;
     .
     .
     .
    事务结束语句(COMMIT或者ROLLBACK);

    1、提交

    COMMIT 是提交事务包含的全部更新处理的结束指令,相当于文件处理中的覆盖保存。一旦提交,就无法恢复到事务开始前的状态了。

    2、回滚

    ROLLBACK 是取消事务包含的全部更新处理的结束指令,相当于文件处理中的放弃保存。一旦回滚,数据库就会恢复到事务开始之前的状态。

    3、ACID特性

    DBMS 的事务都遵循四种特性,将这四种特性的首字母结合起来统称为 ACID 特性。

  • 原子性(Atomicity) 原子性是指在事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行。

  • 一致性(Consistency) 一致性指的是事务中包含的处理要满足数据库提前设置的约束,如主键约束或者 NOT NULL 约束等。例如,设置了 NOT NULL 约束的列是不能更新为 NULL 的,试图插入违反主键约束的记录就会出错,无法执行。对事务来说,这些不合法的 SQL 会被回滚。

  • 隔离性(Isolation) 隔离性指的是保证不同事务之间互不干扰的特性。该特性保证了事务之间不会互相嵌套。此外,在某个事务中进行的更改,在该事务结束之前,对其他事务而言是不可见的。因此,即使某个事务向表中添加了记录,在没有提交之前,其他事务也是看不到新添加的记录的。

  • 持久性(Durability) 持久性指的是在事务(不论是提交还是回滚)结束后,DBMS 能够保证该时间点的数据状态会被保存的特性。即使由于系统故障导致数据丢失,数据库也一定能通过某种手段进行恢复。

  • 二、视图

    视图和表的本质不同在于“是否保存了实际的数据”。

    表中存储的是实际数据,而视图中保存的是从表中取出数据所使用的SELECT语句。

    我们应该将经常使用的SELECT语句做成视图。

    1、创建视图

    --格式:CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……) AS <SELECT语句>
    
    CREATE VIEW v1 (product_name, name_cnt)
    AS 
    SELECT product_name, count(*)
    FROM
     表名/视图名
    GROUP BY product_name

    注意:

  • 避免在视图的基础上创建视图。对多数 DBMS 来说,多重视图会降低 SQL 的性能。

  • 定义视图时不能使用 ORDER BY子句

  • 2、删除视图

    --格式:DROP VIEW 视图名称
    
    DROP VIEW v1

    3、更新视图

    -- 格式:ALTER VIEW 视图名称 AS <SELECT语句>
    
    -- 格式:INSERT INTO 视图名称 VALUES(...)

    注意:

  • 视图和表需要同时进行更新,因此通过汇总(聚合结合连表)得到的视图无法进行更新INSERT。

  • 记住,对视图的更新归根结底是对视图所对应的表进行更新。

    4、使用视图

    使用视图时,将其当作表进行操作即可,由于视图是虚拟表,所以无法使用其对真实表进行创建、更新和删除操作,仅能做查询用。

    select * from v1

    三、子查询

    1、 使用子查询

    子查询就是一次性视图(SELECT语句)。与视图不同,子查询在SELECT语句执行完毕之后就会消失。

    -- 根据商品种类统计商品数量的视图
    CREATE VIEW ProductSum (product_type, cnt_product)
    AS
    SELECT product_type, COUNT(*)
     FROM Product
     GROUP BY product_type;
     
     -- 确认创建好的视图
    SELECT product_type, cnt_product
     FROM ProductSum;
     
    --子查询
    SELECT product_type, cnt_product
     FROM (SELECT product_type, COUNT(*)
     FROM Product
     GROUP BY product_type)AS ProductSum;

    2、 标量子查询

    标量子查询则有一个特殊的限制,那就是必须而且只能返回 1 行 1 列的结果,也就是返回表中某一行的某一列的值。

    SELECT product_id, product_name, sale_price
     FROM Product
     WHERE sale_price > (SELECT AVG(sale_price)
     FROM Product);

    3、 关联子查询

    在细分的组内进行比较时,需要使用关联子查询。

    --子查询中添加的 WHERE 子句的条件
    --该条件的意思是,在同一商品种类中对各商品的销售单价和平均单价进行比较。
    SELECT product_id, product_name, sale_price
     FROM Product AS P1
     WHERE sale_price > (SELECT AVG(sale_price)
     FROM Product AS P2
     WHERE P1.product_type = P2.product_type
     GROUP BY product_type);

    文档

    MySQL悬系之事务与视图介绍

    MySQL悬系之事务与视图介绍:一、事务1、提交2、回滚3、ACID特性二、视图1、创建视图2、删除视图3、更新视图4、使用视图三、子查询1、 使用子查询2、 标量子查询3、 关联子查询一、事务在 RDBMS 中,事务是对表中数据进行更新的单位。简单来讲,事务就是需要在同一个处理单元中执行的一系
    推荐度:
    标签: mysql 事务 视图
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top