• MySQL数据库----视图


    视图

    视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。

    使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用

    -- 1.视图是一个虚拟表(非正式存在),其本质是其本质是
    -- 【根据SQL语句获取动态的数据集,并为其命名】,
    -- 用户使用时只需使用【名称】即可获取结果集,
    -- 可以将该结果集当做表来使用。
    -- 2.
    -- 有了视图以后你是不是觉得写sql语句就很简单了,但是你尽量不要这样做
    -- 因为mysql是DBA管着呢,那么你告诉DBA建一堆视图,你写程序的时候是方便了,
    -- 但是你要是修改呢,那么你就得修改视图了,你就得找到DBA修改你的视图了,
    -- 那么这样联系别人会很麻烦的。说不定人家还很忙呢。还是推荐自己去写sql语句。
    
    -- #注意:
    -- 如果是一个单表的就可以修改或者删除或者插入
    -- 如果是几个表关联的时候是不可以删除或者插入的,有的可以进行修改操作,有的不可以进行修改)

    准备表

    ========================
    创建部门表
    create table dep(
    id int primary key auto_increment,
    name char(32)
    );
    创建用户表
    create table user(
    id int primary key auto_increment,
    name char(32),
    dep_id int,
    foreign key(dep_id) references dep(id)
    );
    插数据
    insert into dep(name) values('外交部'),('销售'),('财经部');
    insert into user(name,dep_id) values ('egon',1),
                                           ('alex',2),
                                           ('haiyan',3);

    1.创建视图

    创建视图语法

    CREATE VIEW 视图名称 AS SQL语句

    create view teacher_view as select tid from teacher where tname='李平老师';

    #连表
    select * from dep left join user on dep.id = user.dep_id;
    #创建一个视图
    create view user_dep_view as select dep.id depid ,user.id uid ,user.name uname,dep.name depname from dep left join user
    on dep.id = user.dep_id;
    -- 这样创建一个视图以后就可以吧一个虚拟表保存下来,就可以查看了。
    select uname from user_dep_view where depid = 3;
    -- 我的电脑上不可以增删改,只可查看。但是有的电脑上又可以增删改,可能是跟版本有关吧
    #测试
    insert into user_dep_view VALUES (1,2,'egon','人文部'); #会报错
    DELETE from  user_dep_view where uid = 1;  #会报错
    update user_dep_view set uname = '海燕' where depid = 2; #会报错
    -- 对于单表来说是可以修改的,并且原来表的也就更改了。
    -- 但是一般还是不要这样改。视图大多数是用来查看的
    #建表
    CREATE TABLE t1(
    id int PRIMARY KEY auto_increment,
    name CHAR(10)
    );
    #插入数据
    insert into t1 VALUES (1,'egon'),
                            (2,'daa'),
                            (3,'eef');
    #创建视图
    CREATE view t1_view as select * from t1;
    #测试创建视图以后还能不能增删改查
    select * from t1_view;
    update t1_view set name = '海燕' where id = 2; #可以修改(而且原来表的记录也修改了)
    INSERT into t1_view values(4,'aaa'); #可以插入(同上)
    delete from t1_view where id=3;#同上

    2.修改视图

    语法:ALTER VIEW 视图名称 AS SQL语句

    3.删除视图

    语法:DROP VIEW 视图名称
  • 相关阅读:
    好看的WEB配色..留的美化界面用..
    为phpcms v9 后台增加按类别查找的功能,且不影响升级。
    OS开发过程中常用开源库
    stanford《Developing Apps for ios》第五课demo要点
    C语言简陋的播放mp3代码
    编译ffmpeg for iOS,并调试iFrameExtractor demo
    windows下配置nginx pathinfo模式,支持thinkphp
    初学GTK+2.0与glade的一些网络资源
    在Centos6.3中桥接方式配置vm virtualbox中的系统网络
    Foundation的基本操作—字符串、数组、字典、集合
  • 原文地址:https://www.cnblogs.com/TheLand/p/8486714.html
Copyright © 2020-2023  润新知