• MySQL——视图


    1.视图基本概念

    试图是一个虚拟表,其内容由查询定义,同真实的表一样,试图包含列,其数据来自对应的真实表。

    特点

    1. 视图是根据真实表(基表)来创建的,视图是虚拟的表。
    2. 视图也有列,数据来自基表。
    3. 通过试图可以改变基表的数据。
    4. 基表的改变也会影响视图的数据。

    2.视图的基本使用

    1. 创建视图:create view 视图名 as select语句
    2. 更新视图alter view 视图名 as select语句
    3. 查看创建视图的指令:SHOW CREATE VIEW 视图名
    4. 删除视图:drop view 视图名1,视图名2
    -- 视图的使用
    -- 创建一个视图emp_view01,只能查询emp表的(empno、ename, job 和 deptno ) 信息
    
    -- 创建视图
    CREATE VIEW emp_view01
    	AS
    	SELECT empno, ename, job, deptno FROM emp; 
    
    -- 查看视图
    DESC emp_view01
    
    SELECT * FROM emp_view01;
    SELECT empno, job  FROM emp_view01;
    
    -- 查看创建视图的指令
    SHOW CREATE VIEW emp_view01
    -- 删除视图
    DROP VIEW emp_view01;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3.视图细节

    1. 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式:视图名.frm)
    2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ]----针对前面的雇员管理系统-----
      mysql> create view myview as select empno ,ename, job, comm from emp;
      mysql> select * from myview;
      myisql> update myview set comm=200 where empno=7369;//修改视图,对基表都有变化
      mysql> update empset comm=100 where empno=7369; //修改基表,对视频也有变化
    3. 视图中可以再使用视图 【案例演示】
    -- 视图的细节
    
    -- 1. 创建视图后,到数据库去看,对应视图只有一个视图结构文件(形式: 视图名.frm) 
    -- 2. 视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ]
    
    -- 修改视图 会影响到基表
    
    UPDATE emp_view01 
    	SET job = 'MANAGER' 
    	WHERE empno = 7369
    	
    SELECT * FROM emp; -- 查询基表
    
    
    SELECT * FROM emp_view01
    
    -- 修改基本表, 会影响到视图
    
    UPDATE emp 
    	SET job = 'SALESMAN' 
    	WHERE empno = 7369
    
    -- 3. 视图中可以再使用视图 , 比如从emp_view01 视图中,选出empno,和ename做出新视图
    DESC emp_view01
    
    CREATE VIEW emp_view02
    	AS
    	SELECT empno, ename FROM emp_view01
    	
    SELECT * FROM emp_view02
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    4.视图使用

    1. 安全。一些数据表有着重要的信息。有些字段是保密的,不能让用户直接看到。这时就可以创建一个视图,在这张视图中只保留一部分字段。这样,用户就可以查询自己需要的字段,不能查看保密的字段。
    2. 性能。关系数据库的数据常常会分表存储,使用外键建立这些表的之间关系。这时,数据库查询通常会用到连接(JOIN)。这样做不但麻烦,效率相对也比较低。如果建立一个视图,将相关的表和字段组合在一起,就可以避免使用JOIN查询数据。
    3. 灵活。如果系统中有一张旧的表,这张表由于设计的问题,即将被废弃。然而,很多应用都是基于这张表,不易修改。这时就可以建立一张视图,视图中的数据直接映射到新建的表。这样,就可以少做很多改动,也达到了升级数据表的目的。
    -- 视图的课堂练习
    -- 针对 emp ,dept , 和   salgrade 张三表.创建一个视图 emp_view03,
    -- 可以显示雇员编号,雇员名,雇员部门名称和 薪水级别[即使用三张表,构建一个视图]
    
    /*
    	分析: 使用三表联合查询,得到结果
    	将得到的结果,构建成视图
    	  
    */
    CREATE VIEW emp_view03
    	AS
    	SELECT empno, ename, dname, grade
    	FROM emp, dept, salgrade
    	WHERE emp.deptno = dept.deptno AND 
    	(sal BETWEEN losal AND hisal) 
    
    DESC emp_view03
    SELECT * FROM emp_view03
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    1-D Fractional Brownian Motion Synthesis
    GStreamer概述
    零拷贝并非万能解决方案:重新定义数据传输的效率极限
    强网杯2022 web
    轻量服务器是不是vps,和vps有什么区别
    iframe之间传递数据笔记
    测试人进阶技能:单元测试报告应用指南
    LeetCode 318. 最大单词长度乘积
    LeetCode HOT 100 —— 23.合并K个升序链表
    跟着AI学AI_11 PyTorch, TensorFlow 和JAX 功能对比简介
  • 原文地址:https://blog.csdn.net/qq_59708493/article/details/126563501