什么是视图视图,它真的存在吗?个人理解:view视图只是一个你看得见的抽象层,它并不真正存在,而是在一个真实的一个或多个表之上的一层封装,用于select查询语句的预封装。它不涉及数据存储。这样一层封装有很多好处。简化复杂的查询操作语句---方便后续使用。安全性,我们在使用视图的时候,一般不会轻易通过视图修改底层数据。并且可以通过权限进行限制,获得更高的安全性。官方定义:视图(view)是一个虚拟表,是一个逻辑表(不涉及实际存储),本身不包含数据。其内容由查询定义。基表:用于创建视图的表称为基表;通过视图,可以展示基表的部分数据;视图数据来自自定义视图查询时使用的表,使用视图动态生成;注意:视图的修改可以映射到基表Table,也就是说视图可以修改基表。这通常很难理解。视图只是一个虚拟表,它是通过基表生成的。为什么我们允许将这个虚拟表中数据的变化映射到基表上呢??对于从单个表映射的视图,视图的修改可以映射到基表。同样,基表数据的变化也会对视图产生影响。毕竟对视图的各种操作也是映射到基表上的。首先,视图不保存数据。如果视图修改的数据无法映射到基表,则修改后的数据无法存储。第二,我个人的理解,视图有时是由上级人员维护和创建的,对于开发人员来说,开发人员的操作应该映射到基表上。为什么开发人员只看视图而不看原始表?有些数据可能需要保密。开发者只能查看其中的一部分。测试:查看是否和基表交互。视图的修改可以映射到基表,验证如下。验证基表的修改是否会映射到视图(以及)如何创建视图?createviewview_nameas(selectstatement)select语句可以是嵌套查询,也可以是联表查询,创建如下:deleteviewdropviewview_name;查看视图。没有单独查看视图的命令,直接查看表就可以看到视图。因此,我们是否仍然可以为视图的名称给出区分视图的目的?可复用,减少重复语句编写;类似于程序中函数的功能。比如join表查询语句。组合成视图后,不宜过于简化。逻辑更清晰,屏蔽查询详情,返回数据。注意视图不能添加索引,也不能有关联的触发器或默认值来捕获视图和不存储数据,将对视图的操作映射到对基表的操作,视图可以简单理解作为基表的简化外部显示。视图操作映射到基表,基表操作也会影响视图。(关键是视图不单独存储数据)还有一种视图,叫做物化视图,它不同于普通视图。物化视图存储数据,物化视图数据的访问不是从基表,而是直接从物化视图(MaterializedViews,以下简称MV)中读取数据,是一种数据会持久变化的特殊视图。然后在查询MV时,不访问基表,而是直接从MV中读取数据。(可以理解)什么是触发器?个人理解:触发器是条件触发器,事件触发器。它有点类似于自动机和状态机。有限自动机:预先设定条件,满足条件时执行运算。后面如果满足条件,就会自动循环执行相应的操作。这是一个自动机。(其实本质上也是条件触发)触发器也是一样。它就像一个回调机制,同步运行。触发器指定在特定的sqlDML操作发生时,触发器指定的触发器操作在操作之前或之后接近同步地执行。官方定义:9Trigger(触发器)是MySQL提供给程序员和数据分析人员保证数据完整性的一种方法,是与表事件相关的特殊存储过程,它的执行不是由程序调用,也不是手动启动,但是由事件触发,比如当对表执行DML操作(插入、删除、更新)时)会激活它执行。触发重点因素:监控对象:表表监控事件类型:insertupdatedelete触发时机:beforeafter指定触发事件:insertupdatedelete如何创建触发器?createtriggertrigger_nametrigger_timemonitor_trigger_event--触发器计时,每行在table_name上监听事件--monitortablebegintrigger_body;--文本,触发事件结束
