mysql审计日志的作用
MySQL数据库系统提供了多种日志,用于记录不同类型的事件和操作。这些日志可以帮助我们进行故障排除、性能优化、安全审计等任务。在MySQL中,主要的日志类型包括以下几种:1. 错误日志(Error L...
2024.11.14视图的行和列来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
创建视图
Create view 视图名字 as ( 单表 or 多表 or 视图)
Create / replace [algorithm = {undefined | merge | temptable }] view 视图名字 [(column_list)] as ( 单表 or 多表 or 视图) [with [cascaded | local ] check option ]
视图基表有多张时,注意字段名不能重复!
查看视图
Show tables ; -- 可以看到视图
Desc 视图名称; -- 可以看到视图结构(字段)
Show create table 视图名称; -- 可以查看到创建视图语句
Show create view 视图名称; -- 可以查看到创建视图语句
使用视图当做表进行查询就行了
修改视图删除视图
drop view 视图名称;
drop table 视图名称; -- 不能是table这样删除,否则报错(已测过)
视图的限制1、 Mysql的视图在from 关键字后面不能包含子查询。
解决方案:可以先将子查询的内容先定义成一个视图,然后对该视图再创建视图就可以实现类似的功能了。
2、 视图的可更新性和视图中查询的定义有关系,有以下类型的视图是不可更新的
①:包含以下关键字的sql语句:聚合函数(sum,min,max,count等等)、distinct、group by、 having、union、 或者union all 。
②:常量视图。
例如:create or replace view view_pi as select 3.1415926 as pi ;
③:select 中包含子查询
④:join
⑤:from一个不能更新的视图
⑥:where子句的子查询引用了from子句中的表。
With [cascaded | local ] check option 决定了是否允许更新数据使记录不再满足视图的条件。
Local:只要满足本视图的条件就可以更新;
Cascaded:必须满足所有针对该视图的所有视图的条件才可以更新。
没有指定的话,默认是cascaded 。
1、 Create or replace view payment_view as select payment_id , amount from payment where amount < 10 with check option ;
2、 Create or replace view payment_view2 as select payment_id , amount from payment_view where amount >5 with local check option ;
3、 Create or replace view payment_view3 as select payment_id , amount from payment_view where amount >5 with cascaded check option ;
修改视图:
4、 update payment_view2 set amount = 10 where payment_id = 3; --修改成功
5、 update payment_view3 set amount = 10 where payment_id = 3; --修改失败。
Payment_view2 是with local check option 的,所以满足本视图的条件就可以更新。
但是payment_view3 是 with cascaded check option 的,必须满足针对该视图的所有视图才可以更新,因为更新后记录不再满足payment_view 的条件,所以更新操作提示错误退出。
视图的优势简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
安全: 使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。
数据独立: 一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
视图意义视图数据操作
新增数据
删除数据
1. 多表视图不能删除(一般说的多表是连接多张表)
2. 单表视图可以删除
更改数据
多表视图和单表视图都可以修改数据,
视图本身只有结构,没有数据,但是他能够修改基表的数据。
前提是,他只能修改那些视图中出现的数据,那些基表存在,而视图中没有出现的数据,他根据猜测而想修改的是无效的,不起作用的。因为,他只能修改视图中出现的数据!!
更新限制视图算法
五子句:order by; group by; having ; where ;limit;
MySQL数据库系统提供了多种日志,用于记录不同类型的事件和操作。这些日志可以帮助我们进行故障排除、性能优化、安全审计等任务。在MySQL中,主要的日志类型包括以下几种:1. 错误日志(Error L...
2024.11.14在设计MySQL索引时,需要考虑以下八大原则:最左前缀原则:复合索引按照从左到右的顺序进行匹配,如果查询条件中包含了复合索引的最左侧的列,则该索引会被使用。选择性原则:索引的选择性越高,即不同值之间的...
2024.11.12在建表之前要对数据进行认真分析,字段名是数据的抽象名称,字段属性是数据的类型与约束。建表时要把关联度极高的数据放在一张表中,假设该表中某些字段存在大量重复的情况就应该考虑分开建表,减少冗余数据。学前准...
2024.11.06你一般怎么建索引的?下面是我在工作当中总结的一些经你们可以参考一下。(1)索引并非越多越好,大量的索引不仅占用磁盘空间,而且还会影响insert,delete,update等语句的性能(2)避免对经常...
2024.11.15点击文末“了解更多”获取dbForge Studio for MySQL安装包及更多资料本文详细概述了如何使用不同的方法和工具(包括用于MySQL的命令行,工作台和dbForge Studio)在My...
2024.11.15