• MySQL-视图


    一、介绍

    MySQL 视图(View)可以理解为是一种虚拟存在的表,表面上看起来和真实表一样。视图是数据库对象之一。

    数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中,本质是来自于一个 select子句。

    使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。

    为什么需要视图?
    答:
    1.假设一张表中有些字段不希望某些用户看见,那么就可以使用视图进行筛选,仅展示可查看的字段,进而保护了表结构。
    2.可以使用视图返回多张表的关联查询结构,对于使用者而言他并不知道这些数据来自多张表,进而简化查询操作。

    二、创建视图

    2.1 基础操作

    创建语法:

    create [or replace] view 视图名 as select .... ;
    
    • 1

    1.准备测试数据

    DROP TABLE IF EXISTS emp;
    CREATE TABLE emp (
      id int(11) PRIMARY KEY AUTO_INCREMENT,
      age int(11) DEFAULT NULL,
      name varchar(50) DEFAULT NULL
    )DEFAULT CHARSET=utf8;
    
    INSERT INTO `emp` VALUES (1, 18, '张三');
    INSERT INTO `emp` VALUES (2, 20, '李四');
    INSERT INTO `emp` VALUES (3, 25, '王五');
    INSERT INTO `emp` VALUES (4, 22, '赵六');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.创建一个简单视图

    create view v_emp1 as select * from emp;
    
    • 1

    3.创建一个有别名的视图

    create view v_emp2 as select age+10 as my_age from emp;
    
    • 1

    2.2 视图注意事项

    视图本身不存储数据,操作视图就相当于操作视图对应的基表中的数据。

    查询:select * from v_emp1;
    删除:delete from v_emp1 where id=1;            -- 视图和原表数据都会被删除
    修改:update v_emp1 set name='wwb' where id=2;   -- 视图和原表数据都会被修改
    增加:insert into v_emp1 values (5, 11, '666'); -- 视图和原表数据都会增加(一般视图是不建议插入的,会造成原表数据污染)
    
    • 1
    • 2
    • 3
    • 4

    可以为视图加限定条件,从而约束使用者行为:with check option

    create view v_emp3 as select * from emp where age<200 with check option;
    
    • 1

    测试:

    测试插入:
    mysql> insert into v_emp3(age) values(300);
    ERROR 1369 (HY000): CHECK OPTION failed 'v_test.v_emp3'  -- 失败
    
    mysql> insert into v_emp3(age) values(100);   -- 成功
    Query OK, 1 row affected (0.08 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、查看视图

    DESC 视图名;               -- 查看视图的字段信息
    
    SHOW CREATE VIEW 视图名;   -- 查看视图的创建信息
    
    • 1
    • 2
    • 3

    四、删除视图

    DROP VIEW <视图名1> [ , <视图名2>]
    
    • 1

    五、修改视图

    ALTER VIEW <视图名> AS <SELECT语句>
    
    • 1
  • 相关阅读:
    python电影院购票系统毕业设计源码221133
    Windows OpenGL ES 波浪特效
    根据关键词搜索阿里巴巴商品数据列表接口|阿里巴巴商品列表数据接口|阿里巴巴商品API接口|阿里巴巴API接口
    【无标题】51单片机人体反应速度测试仪带万年历功能LCD1602 DS1302
    二叉树的层序遍历
    深入了解 Postman Test 校验的使用方法
    golang gin——controller 模型绑定与参数校验
    C++&QT day3
    pinia的常用知识点及搭配“script setup”的使用
    Linux系统编程·进程概念
  • 原文地址:https://blog.csdn.net/weixin_45691611/article/details/127802930