• MySQL(七)


    视图

    • 对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情
    • 解决:定义视图
    • 视图本质就是对查询的一个封装
    • 定义视图
    create view stuscore as 
    select students.*,scores.score from scores
    inner join students on scores.stuid=students.id;
    • 视图的用途就是查询
    select * from stuscore;

    事务

    • 当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回
    • 使用事务可以完成退回的功能,保证业务逻辑的正确性
    • 事务四大特性(简称ACID)
      • 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
      • 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
      • 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的
      • 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
    • 要求:表的类型必须是innodb或bdb类型,才可以对此表使用事务
    • 查看表的创建语句
    show create table students;
    
    • 修改表的类型
    alter table '表名' engine=innodb;
    
    • 事务语句
    开启begin;
    提交commit;
    回滚rollback;
    

    示例1

    • 步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表
    终端1:
    select * from students;
    ------------------------
    终端2:
    begin;
    insert into students(sname) values('张飞');
    
    • 步骤2
    终端1:
    select * from students;
    
    • 步骤3
    终端2:
    commit;
    ------------------------
    终端1:
    select * from students;
    

    示例2

    • 步骤1:打开两个终端,连接mysql,使用同一个数据库,操作同一张表
    终端1:
    select * from students;
    ------------------------
    终端2:
    begin;
    insert into students(sname) values('张飞');
    
    • 步骤2
    终端1:
    select * from students;
    
    • 步骤3
    终端2:
    rollback;
    ------------------------
    终端1:
    select * from students;
  • 相关阅读:
    cmake问题解决汇总
    windows系统安装tree命令
    gcc请求或抑制警告的选项
    React训练营:GraphQL 与CRUD的故事
    React训练营:基本元素的使用与状态管理
    React训练营:Advanced React Hooks:useContext与useReducer
    数据库上云实践:使用Ora2pg进行数据库迁移
    算法训练营:滑动窗口的解释与构造
    数据库进阶之路:常见例题
    ERROR: Could not determine java version from 'JavaVersion.VERSION_1_8'.
  • 原文地址:https://www.cnblogs.com/leecoffee/p/9038374.html
Copyright © 2020-2023  润新知