• 数据库-视图


    """
    视图:
    select goods.name,goods_cates.name,goods_brands.name from goods,goods_cates,goods_brands where goods.cate_id=goods_cates.id and goods_brands.id=goods.brand_id
    
    太tm的长了.
    
    视图就把这些复杂操作封装起来了,底层给我们进行三张表的合并查询操作.
    
    1.>创建视图:  create view 视图名称 as select 语句<多张表的操作>;
    
    意义:封装了对多张表的复杂操作.
    
    示例:
    create view v_goods_info as
     select goods.name gname,goods_cates.name cname,goods_brands.name bname
     from goods,goods_cates,goods_brands 
     where goods.cate_id=goods_cates.id 
     and goods_brands.id=goods.brand_id;
    
    技巧:sql语句很长的时候记得以关键字断句.
    
    注意:字段名不可以重复,有重名的情况下必须起别名
    
    查看:show tables;
    所以建议视图以v开头 区别基本表和视图
    使用:select 字段 from 视图 where ...;
    连接查询也可以,和基本表的操作完全一致
    
    视图只是一个表结构,没有保存任何基本表的表数据.只是一个虚表,不占数据库内存.
    在用户需要查询视图的时候,再去基本表中取出对应的数据
    只给用户展示指定字段,屏蔽了其他字段,从而显得更安全.
    
    2.>删除视图:
    drop view 视图名;
    不建议通过视图表去修改基本表的数据
    需要修改基本表,直接对基本表进行修改操作即可
    
    """
    # ------------------------------------创建视图:------------------------------->
    """
    # create view v_goods_info as select goods.name gname,goods_cates.name cname,goods_brands.name bname 
    from goods,goods_cates,goods_brands where goods.cate_id=goods_cates.id and goods_brands.id=goods.brand_id;
    show tables;
    +--------------+
    | Tables_in_jd |
    +--------------+
    | gongfu       |
    | goods        |
    | goods_brands |
    | goods_cates  |
    | hero         |
    | v_goods_info |
    +--------------+
    """
    
    """查询视图:
    
    select * from v_goods_info;
    +---------------------------------+---------------+-------+
    | gname                           | cname         | bname |
    +---------------------------------+---------------+-------+
    | r510vc 15.6英寸笔记本           | 笔记本        | 华硕  |
    | y400n 14.0英寸笔记本电脑        | 笔记本        | 联想  |
    | g150th 15.6英寸游戏本           | 游戏本        | 雷神  |
    | x550cc 15.6英寸笔记本           | 笔记本        | 华硕  |
    | x240 超极本                     | 超级本        | 联想  |
    | u330p 13.3英寸超极本            | 超级本        | 联想  |
    | svp13226scb 触控超极本          | 超级本        | 索尼  |
    | ipad mini 7.9英寸平板电脑       | 平板电脑      | 苹果  |
    | ipad air 9.7英寸平板电脑        | 平板电脑      | 苹果  |
    | ipad mini 配备 retina 显示屏    | 平板电脑      | 苹果  |
    | ideacentre c340 20英寸一体电脑  | 台式机        | 联想  |
    | vostro 3800-r1206 台式电脑      | 台式机        | 戴尔  |
    | imac me086ch/a 21.5英寸一体电脑 | 台式机        | 苹果  |
    | at7-7414lp 台式电脑 linux )    | 台式机        | 宏碁  |
    | z220sff f4f06pa工作站           | 服务器/工作站 | 惠普  |
    | poweredge ii服务器              | 服务器/工作站 | 戴尔  |
    | mac pro专业级台式电脑           | 服务器/工作站 | 苹果  |
    | hmz-t3w 头戴显示设备            | 笔记本配件    | 索尼  |
    | 商务双肩背包                    | 笔记本配件    | 索尼  |
    | x3250 m4机架式服务器            | 服务器/工作站 | ibm   |
    | 商务双肩背包                    | 笔记本配件    | 索尼  |
    +---------------------------------+---------------+-------+
    
    """
    """
    验证视图是否保存数据:不保存数据,只是在使用的时候直接去基本表获取数据.
    在基本表 表中修改了数据之后,在视图中可以查看到,说明视图是依赖于基本表的.
    也说明只有在使用视图的时候视图会去调用基本表的数据
    # update goods set name='LV包' where id =1;
    Query OK, 1 row affected
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from v_goods_info;
    +---------------------------------+---------------+-------+
    | gname                           | cname         | bname |
    +---------------------------------+---------------+-------+
    | LV包                            | 笔记本        | 华硕  |
    | y400n 14.0英寸笔记本电脑        | 笔记本        | 联想  |
    | g150th 15.6英寸游戏本           | 游戏本        | 雷神  |
    | x550cc 15.6英寸笔记本           | 笔记本        | 华硕  |
    | x240 超极本                     | 超级本        | 联想  |
    | u330p 13.3英寸超极本            | 超级本        | 联想  |
    | svp13226scb 触控超极本          | 超级本        | 索尼  |
    | ipad mini 7.9英寸平板电脑       | 平板电脑      | 苹果  |
    | ipad air 9.7英寸平板电脑        | 平板电脑      | 苹果  |
    | ipad mini 配备 retina 显示屏    | 平板电脑      | 苹果  |
    | ideacentre c340 20英寸一体电脑  | 台式机        | 联想  |
    | vostro 3800-r1206 台式电脑      | 台式机        | 戴尔  |
    | imac me086ch/a 21.5英寸一体电脑 | 台式机        | 苹果  |
    | at7-7414lp 台式电脑 linux )    | 台式机        | 宏碁  |
    | z220sff f4f06pa工作站           | 服务器/工作站 | 惠普  |
    | poweredge ii服务器              | 服务器/工作站 | 戴尔  |
    | mac pro专业级台式电脑           | 服务器/工作站 | 苹果  |
    | hmz-t3w 头戴显示设备            | 笔记本配件    | 索尼  |
    | 商务双肩背包                    | 笔记本配件    | 索尼  |
    | x3250 m4机架式服务器            | 服务器/工作站 | ibm   |
    | 商务双肩背包                    | 笔记本配件    | 索尼  |
    +---------------------------------+---------------+-------+
    
    """
  • 相关阅读:
    centOS 开机自启动自己的脚本
    python SMTP 发送邮件 阿里企业邮箱、163邮箱 及535错误
    memcach 命令行
    python requests上传文件 tornado 接收文件
    Python memecache
    python Redis
    Slave_SQL_Running: No mysql同步故障解决方法
    mysql 数据库的主从同步
    Centos7 安装mysql5.7.16
    centos python2.6 升级到 python2.7
  • 原文地址:https://www.cnblogs.com/huaibin/p/12100600.html
Copyright © 2020-2023  润新知