加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Mysql_视图

发布时间:2022-11-16 16:36:24 所属栏目:MsSql教程 来源:未知
导读: 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来

视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。简单来说就是视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。

通过视图,可以展现基表的部分数据; 视图数据来自定义视图的查询中使用的表,使用视图动态生成。 基表:用来创建视图的表叫做基表

*[En]*

**

*[En]*

**

*[En]*

**

因为视图是需要基表才能构建,因此在讲解视图的时候,我们需要先创建两张数据表用于后面演示视图操作,下面是测试表和测试数据创建的SQL语句。

4.1、创建视图

书写格式:

CREATE VIEW

DROP VIEW

*[En]*

**

4.2、视图的更改

create or replace view view_name as select语句; 在视图存在的情况下可对视图进行修改,视图不在的情况下可创建视图

ps.在MySQL中视图不能重复创建,不能重名。

4.3、DML操作更新视图

因为视图本身没有数据,因此对视图进行的dml操作最终都体现在基表中,比如我们执行以下操作

1 UPDATE v_blog SET 内容 = ‘修改后的内容’ WHERE 编号 = 1;

对于可以执行DML操作的视图mssql 使用视图,定义时可以带上WITH CHECK OPTION约束 作用:对视图所做的DML操作的结果,不能违反视图的WHERE条件的限制。

1 #部分数据创建视图
2 CREATE OR REPLACE VIEW v_blog_1(编号,标题,内容,作者编号)
3 AS SELECT * FROM blog WHERE author_id=3
4 WITH CHECK OPTION;
5 #with check option:where条件约束
6 #该语句会报错违反了 WHERE author_id=3 的约束
7 INSERT INTO v_blog_1(编号,标题,内容,作者编号)VALUES(7,'123','123',4);

4.5、6.定义视图时的其他选项

ALGORITHM选项

选择在处理定义视图的select语句中使用的方法

– UNDEFINED:MySQL将自动选择所要使用的算法

– MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分

– TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句

缺省ALGORITHM选项等同于ALGORITHM = UNDEFINED

DEFINER选项 指出谁是视图的创建者或定义者

– definer= ‘用户名’@’登录主机’ – 如果不指定该选项,则创建视图的用户就是定义者,指定关键字CURRENT_USER(当前用户)和不指定该选项效果相同

SQL SECURITY选项 要查询一个视图,首先必须要具有对视图的select权限,如果同一个用户对于视图所访问的表没有select权限,那会怎么样?

SQL SECURITY选项决定执行的结果:

– SQL SECURITY DEFINER:定义(创建)视图的用户必须对视图所访问的表具有select权限,也就是说将来其他用户访问表的时候以定义者的身份,此时其他用户并没有访问权限。

– SQL SECURITY INVOKER:访问视图的用户必须对视图所访问的表具有select权限。

缺省SQL SECURITY选项等同于SQL SECURITY DEFINER

视图权限总结: 使用root用户定义一个视图(推荐使用第一种):u1、u2

1)u1作为定义者定义一个视图,u1对基表有select权限,u2对视图有访问权限:u2是以定义者的身份访问可以查询到基表的内容;

2)u1作为定义者定义一个视图,u1对基表没有select权限,u2对视图有访问权限,u2对基表有select权限:u2访问视图的时候是以调用者的身份,此时调用者是u2,可以查询到基表的内容。

Original:

Author: and脱发周大侠

Title: Mysql_视图

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!