zoukankan      html  css  js  c++  java
  • MySQL高级

    一、视图

    问题:对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦

    解决方法:定义视图

    视图:通俗的讲,视图就是一条SELECT语句执行后返回的结果集。视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据。

    定义视图:create view 视图名称(建议以v开头) as select语句;

    查看视图:show tables;

    删除视图: drop view 视图名称
    实例:
    1.将三张表拼接在一起
    select * from goods as g left join goods_cates as c on g.cate_id=c.id join goods_brands as b on g.brand_id=b.id;
    2.过滤需要信息
    select g.*,c.name as cate_name,b.name as brand_name from (goods as g left join goods_cates as c on g.cate_id=c.id join goods_brands as b on g.brand_id=b.id);
    3.创建视图
    create view v_goods_info as (select g.*,c.name as cate_name,b.name as brand_name from (goods as g left join goods_cates as c on g.cate_id=c.id join goods_brands as b on g.brand_id=b.id));

    二、事务
    1. 为什么要有事务
    例如:
    A用户和B用户是银行的储户,现在A要给B转账500元,那么需要做以下几件事:
    检查A的账户余额>500元;
    A 账户中扣除500元;
    B 账户中增加500元;
    正常的流程走下来,A账户扣了500,B账户加了500,皆大欢喜。
    那如果A账户扣了钱之后,系统出故障了呢?A白白损失了500,而B也没有收到本该属于他的500。

    以上的案例中,隐藏着一个前提条件:A扣钱和B加钱,要么同时成功,要么同时失败。事务的需求就在于此。
    所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。

    事务四大特性(简称ACID)
    原子性(Atomicity)
    一致性(Consistency)
    隔离性(Isolation)
    持久性(Durability)

    开启事务:
    begin;
    或者
    start transaction;

    提交事务:
    将缓存中的数据变更维护到物理表中
    commit;

    回滚事务:
    放弃缓存中变更的数据
    rollback;

  • 相关阅读:
    Bluetooth architecture (HCI/L2CAP)
    堆栈
    Inside the C++ Object Model 深度探索对象模型 57
    Android音乐播放器
    (一)开发板系统安装
    html5的canvas写一个简单的画板程序
    C++ 获取日历时间
    Incremental Differential vs. Incremental Cumulative Backups
    BCB安装控件出现Unresolved external '__fastcall Outline::TCustomOutline
    Windows 环境下配置 Oracle 11gR2 Data Guard 手记
  • 原文地址:https://www.cnblogs.com/zc2018/p/8891863.html
Copyright © 2011-2022 走看看