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;

  • 相关阅读:
    html的基本框架和常用标签
    防火墙
    Zenmap
    每日一招:熟练掌握变盘方向
    每日一招:赚钱最快的选股策略
    操盘策略:黄金做单时间
    每日一招:坚守六大方式选出优质股
    如何保卫你的牛市胜利果实?
    名家看后市:长阴破位不必慌
    每日一招:补仓需遵守的技巧
  • 原文地址:https://www.cnblogs.com/zc2018/p/8891863.html
Copyright © 2011-2022 走看看