mysql的视图相关知识

视图:逻辑上表的集合,不会真实存在,虚拟表,和普通表一样使用

一、创建视图

语法:

CREATE VIEW 视图名
AS
查询语句;

二、视图的修改:

方式一:
CREATE OR REPLACE VIEW 视图名
AS
查询语句;

方式二:
ALTER	VIEW 视图名	
AS
查询语句;

三、删除视图

支持一次性删除多个视图:

DROP VIEW 视图名,视图名,....;

四、查看视图

DESC 视图名;
SHOW CREATE VIEW 视图名

五、视图的更新

指:更改试图里面的数据

insert、update、DELETE 等语句都可以对视图进行操作,但是同时会改变原基表的数据

具备以下特点的视图是不允许更新的

①创建视图时,包含以下的关键字的sql语句:
	分组函数、DISTINCTGROUP BYhavingUNION或者UNION ALL
②常量视图
	CREATE OR REPLACE VIEW myv1
	AS
	SELECT '常量' ;
③创建视图时,select	中包含子查询
④创建视图时,用到了连接语句(join)
⑤创建视图时,from后面跟了一个不能跟新的视图
⑥where子句中的子查询引用了from子句中的表
CREATE OR REPLACE VIEW myv2
AS
SELECT name,email,salary
from employees
WHERE empoyee_id IN(
			SELECT manager_id
			FROM employees
			WHERE	manager_id IS NOT NULL);

六、视图和表的对比

在这里插入图片描述

七、视图授权给某用户,及回收用户权限,查看权限

视图授权

#仅授予用户查看视图的权限
GRANT SELECT ON "库名"."视图名" TO '用户名'@'%';

取消视图授权

#取消用户对某视图的查看权限
revoke  SELECT ON "库名"."视图名" from '用户名'@'%';

查看该用户下有多少视图或表被授权

#查看该用户下有多少视图或表被授权
show grants for 用户名;

查某个用户下视图的具体数据量,或者视图名,通过information_schema.table_privileges 来查询

select count(1) from information_schema.table_privileges 
where grantee like '%用户名%' 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值