• MySQL(10)视图


    1.常见的数据库对象

    在这里插入图片描述

    2.视图的理解

    视图是一种虚拟表 ,本身是不具有数据 的,占用很少的内存空间,它是 SQL 中的一个重要概念。
    视图的创建和删除只影响视图本身,不影响对应的基表。但是当对视图中的数据进行增加、删除和修改操作时,数据表中的数据会相应地发生变化,反之亦然。
    视图不会保存数据,数据真正保存在数据表中。当对视图中的数据进行增加、删除和修改操作时,数据表中的数据会相应地发生变化;反之亦然。
    在这里插入图片描述

    3.创建视图

    语法:

    CREATE [OR REPLACE] 
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] 
    VIEW 视图名称 [(字段列表)] 
    AS 查询语句 
    [WITH [CASCADED|LOCAL] CHECK OPTION]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    或者

    CREATE VIEW 视图名称 AS 查询语句
    
    • 1

    3.1 创建单表视图

    CREATE VIEW empvu80 
    AS
    SELECT department_id,employee_id, last_name, salary 
    FROM employees 
    WHERE department_id = 80;
    
    SELECT * FROM empvu80;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    3.2 基于视图创建视图

    当我们创建好一张视图之后,还可以在它的基础上继续创建视图。

    CREATE VIEW emp_dept_ysalary 
    AS
    SELECT emp_dept.ename,dname,year_salary 
    FROM emp_dept INNER JOIN emp_year_salary 
    ON emp_dept.ename = emp_year_salary.ename;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.查看视图

    语法1:查看数据库的表对象、视图对象

    SHOW TABLES;
    
    • 1

    在这里插入图片描述

    语法2:查看视图的结构

    DESC / DESCRIBE 视图名称;
    
    • 1

    语法3:查看视图的属性信息

    SHOW TABLE STATUS LIKE '视图名称'\G
    
    • 1

    语法4:查看视图的详细定义信息

    SHOW CREATE VIEW 视图名称;
    
    • 1

    5.更新视图的数据

    5.1 一般情况

    MySQL支持使用INSERT、UPDATE和DELETE语句对视图中的数据进行插入、更新和删除操作。当视图中的数据发生变化时,数据表中的数据也会发生变化,反之亦然。
    举例:UPDATE操作

    SELECT * FROM vu_emp1;
    
    
    • 1
    • 2

    在这里插入图片描述

    UPDATE vu_emp1
    SET salary=20000
    WHERE employee_id =101
    
    SELECT * FROM vu_emp1;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    举例:DELETE操作

    SELECT last_name,tel FROM vu_emp1 WHERE last_name= 'King';
    DELETE FROM vu_emp1 WHERE last_name= 'King';
    
    • 1
    • 2

    5.2不可更新的视图

    要使视图可更新,视图中的行和底层基本表中的行之间必须存在 一对一 的关系。另外当视图定义出现如下情况时,视图不支持更新操作:
    在这里插入图片描述

    6.修改删除视图

    6.1 修改视图

    方式1:使用CREATE OR REPLACE VIEW 子句修改视图

    CREATE OR REPLACE VIEW empvu80 
    (id_number, name, sal, department_id) 
    AS
    SELECT employee_id, first_name || ' ' || last_name, salary, department_id 
    FROM employees 
    WHERE department_id = 80;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    方式2:ALTER VIEW

    ALTER VIEW 视图名称 AS查询语句
    
    • 1

    6.2 删除视图

    • 删除视图只是删除视图的定义,并不会删除基表的数据。
    • 删除视图的语法是:
    DROP VIEW IF EXISTS 视图名称;
    
    DROP VIEW IF EXISTS 视图名称1,视图名称2,视图名称3,...;
    
    • 1
    • 2
    • 3

    举例:

    DROP VIEW vu_emp1;
    
    • 1
  • 相关阅读:
    【MySQL】 MySQL索引事务
    链表及其基本操作
    【Qt之布局】QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout介绍及使用
    基于C语言的查找算法汇编
    C语言、C++操作符优先级
    C++ —— 模拟实现list
    vue3 watch的各种使用情景
    python自动化测试
    将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent
    Python-loguru-跨进程的日志服务器-django
  • 原文地址:https://blog.csdn.net/m0_62497122/article/details/126693359