Skip to content

视图

视图是一个虚拟表,其内容由查询定义,与真实的表一样,视图包含列,其数据来自对应的真实表(基表)

视图的基本原理:

image-20250503204432956

视图的基本使用:

  • 创建视图:create view 视图名 as select语句

    sql
    CREATE VIEW emp_view AS SELECT empno, ename, job, deptno FROM emp;

    empno, ename, job, deptno为获取基表中对应的字段

    使用多张表来创建一个视图:

    sql
    -- 先使用三表联合查询,得到结果
    -- 再将得到的结果,构建视图
    CREATE VIEW emp_view AS
    	SELECT empno, ename, dname, grade FROM emp, dept, salgrade
    	WHERE emp.deptno = dept.deptno 
    	AND (sal BETWEEN losal AND hisal)
  • 修改视图:alter view 视图名 as select语句

  • 查看视图的结构:DESC 视图名

  • 查看视图的内容:SELECT * FROM 视图名

  • 显示使用哪个指令来创建视图的:show create view 视图名

  • 删除视图:drop view 视图名

注意事项:

  • 创建视图后,到数据库中查看,对应视图只有一个视图结构的文件(形式:视图名.frm)
  • 视图的数据变化会影响到基表,同理,基表的数据变化也会影响到视图
  • 视图中可以在使用视图,数据仍然来自基表

视图的最佳实践:

  • 安全:一些数据表有着重要的信息,有些字段是保密的,不能让用户直接看到,这时可以创建一个视图,在视图中只保留一部分的字段。这样,用户就可以查询到自己需要的字段,同时,不能看到保密的字段
  • 性能:关系数据库的数据常常会分表存储,使用外键建立这些表的连接,这时数据库查询通常会用到JOIN连接。这样做不但麻烦,效率也相对低,如果建立一个视图,将相关的表和字段组合在一起,可以避免使用JOIN查询数据
  • 灵活:如果系统中有一种旧表,这张表由于设计的问题,即将被废弃。然而,很多应用都是基于这张表,不易修改。这时可以建立一张视图,视图中的数据直接映射到这张新建的表,这样,就可以少做很多改动,也达到了升级数据表的目的

Released under the MIT License.