视图解释

因为数据库设计的时候,不会把所有信息都集中到一张表里。所以会设计很多张物理源表,不同表之间通过外键等关键信息进行关联。
而当我们需要查询数据的时候,通常都会跨表查询,就会用到多表关联查询。而这些查询代码通常会高频使用,并且每次都要多表查询比较麻烦,所以我们会把这些高频查询的多张表结合的结果表进行缓存,以备后期高频查询时使用。这个缓存表就是「视图」。

作用:

减少sql语句,方便查询。
减少sql语句也可以减少网络传输(在node中操作sql时,sql越少,传输的内容越少)

操作视图:DDL 数据对象定义语言

一个视图就是一个对象

新建视图:

image.png
新建的视图中,就写「高频使用的」查询语句
image.png
执行sql没问题后,可以预览SQL。可以看到创建视图的DDL语言如下:

  1. CREATE VIEW 数据库名.视图名 AS 「要查询时执行的SQL语句」

image.png
保存并命名后,可以选中左侧的视图看效果。其实他就是上图中sql执行的一张结果表
image.png

使用视图

原来sql语句中写表名的地方,改成写视图名就行了

  1. SELECT *
  2. --- xxx其他语句
  3. FROM 「视图名」
  4. --- xxx其他语句

视图数据存储位置

视图表的数据不在硬盘上,在内存里,被缓存起来了。

视图的其他点

修改视图

自己看相关文档吧,navicat可以直接操作

向视图中增删内容

视图中,可以自定义增删数据,但是通常不要这么做。只把视图当做一个数据结果缓存表使用。别污染他的数据。

视图案例

  1. select e.*,
  2. d.name as 'departmentName',
  3. d.buildDate,
  4. d.companyId,
  5. c.name as 'companyName',
  6. c.buildDate as companyBuildDate,
  7. c.location as companyLocation
  8. from employee as e
  9. inner join department as d on d.id = e.deptId
  10. inner join company as c on c.id = d.companyId
  11. order by e.id