数据库视图的使用

1.视图的概念

  从一个或多个表导出的虚拟的表,内容由具体的查询内容定义。

  从用户视角看,一个视图是从一个特定的角度来查看数据库中的数据;从数据库内部看,一个视图是由SELECT语句组成的查询定义的虚拟表。视图和普通表的结构相同,但不实现数据的存储,仅可以查,不能增删改。
  一般出于以下角度使用视图:
  a.简化操作:将常用的聚合函数或多表查询这些查询语句放到视图中,简化了操作,每次只要select * from view就可以了;
  b.安全性:只让用户查看部分数据,同时,用户无法对视图进行随意的修改和删除,增加了安全性。

2.创建语法

   CREATE VIEW 'new_view' AS (select语句) ;

3.常见视图场景

1) 多表查询(同一个库下)

如果日常工作经常会用到多表查询,可以针对该多表查询的select的语句,专门创建一个视图。例如,现有

  表student:id, Sname, Sage, Sheight, Saddresss

  表course:id, Cname

  表grade:id, S_id, C_id, score

日常查询中,经常需要多表查询,以展示学生姓名、课程名称、成绩字段,可以创建如下视图:

  CREATE VIEW 'student_score' AS

    SELECT Sname, Cname, score FROM student

    JOIN grade on student.id = grade.S_id

    JOIN course on course.id = grade.C_id;

  以后每次使用,直接进入左侧的views中即可查看。

2) 分表存储时的查询(同一个库下)

  如果开发过程中采用了分表存储,比如公司现有的项目为了提升性能,对订单order表采用了分表存储,通过雪花算法后随机存储在64个表之中的1个表中。为了方便平时的查询,可以新建一个视图。假设order表中有以下字段:

  id, order_no, driver_id,  status, created_at

  创建视图的语句如下:

  CREATE VIEW `order_view` AS 

  select * from order_1

  union all (select * from order_2)

  union all (select * from order_3)

3) 跨库查询

  CREATE VIEW 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2);

4) 跨服务器查询

  待补充。

参考:https://www.cnblogs.com/sening/p/4526163.html

原文地址:https://www.cnblogs.com/May-study/p/12653352.html