码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MySQL(10)视图


    文章目录

    • 1.常见的数据库对象
    • 2.视图的理解
    • 3.创建视图
      • 3.1 创建单表视图
      • 3.2 基于视图创建视图
    • 4.查看视图
    • 5.更新视图的数据
      • 5.1 一般情况
      • 5.2不可更新的视图
    • 6.修改删除视图
      • 6.1 修改视图
      • 6.2 删除视图

    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
  • 相关阅读:
    微信小程序带来了新的创业机会?
    LeetCode·23.合并K个升序链表·递归·迭代
    1010 一元多项式求导
    PyQt5 & PyQt6 Designer 的安装
    Vue开发 提交后台,二维码,自定义
    编译LoongArch的llvm交叉工具链
    log4j日志打印导致OOM问题
    下一代协作型知识库AFFiNE
    使用 NumPy 及其相关库(如 pandas、scikit-learn 等)时,由于 NumPy 的版本不兼容或者某些依赖库与 NumPy 的版本不匹配
    11.(Python数模)(预测模型三)多元线性回归预测
  • 原文地址:https://blog.csdn.net/m0_62497122/article/details/126693359
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号