MySQL——视图

一、视图

1、概念

视图是由数据库中的一个表或多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。

2、视图的作用

(1)、简单性

看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。

(2)、安全性

视图的安全性可以防止未授权用户查看特定的行或列,使有权限用户只能看到表中特定行的方法,如下:

  • 在表中增加一个标志用户名的列。

  • 建立视图,使用户只能看到标有自己用户名的行。

  • 把视图授权给其他用户。

3、逻辑数据独立性

视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,程序一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立。

(1)、如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而使应用程序可以不动。

(2)、如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。

(3)、如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序可以不动。

(4)、如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而使数据库可以不动。

二、创建视图

1、查看创建视图的权限

SELECT Select_priv,Create_view_priv FROM mysql.user WHERE user="用户名";

比如查询MySQL中root用户是否具有创建视图的权限

SELECT Select_priv,Create_view_priv FROM mysql.user WHERE user="root";

2、创建视图

创建视图语法:

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT语句
[WITH [CASCADED|LOCAL] CHECK OPTION];

比如在数据表student中创建view视图,并将其命名为student_view视图,设置属性为a,b,c

CREATE VIEW
student_view(a,b,c)
AS SELECT name,age,sex
FROM student;

创建视图存在如下注意事项:

(1)、运行创建视图的语句需要用户具有创建视图(CRATE VIEW)的权限,若加了[OR REPLACE]时,还需要用户具有删除视图(DROP VIEW)的权限;  

(2)、SELECT语句不能包含FROM子句中的子查询;

(3)、SELECT语句不能引用系统或用户变量;

(4)、SELECT语句不能引用预处理语句参数;

(5)、在存储子程序内,定义不能引用子程序参数或局部变量;

(6)、在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句;

(7)、在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图;

(8)、在视图定义中命名的表必须已存在;

(9)、不能将触发程序与视图关联在一起;

(10)、在视图定义中允许使用ORDER BY,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDER BY的语句,它将被忽略。

三、查看视图

1、DESCRIBE语句

DESCRIBE view_name;

2、SHOW TABLE STATUS语句

SHOW TABLE STATUS LIKE 'view_name';

3、SHOW CREATE VIEW语句

SHOW CREATE VIEW view_name;

四、修改视图

1、CREATE OR REPLACE VIEW语句

基本语法:

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]]

修改book视图    

CREATE OR REPLACE VIEW book AS SELECT * FROM student;

2、ALTER

基本语法:

ALTER [ALGORITHM={UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS SELECT_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

修改book视图

ALTER VIEW book AS SELECT name FROM student;

五、更新视图

#更新school_view视图中,age字段对应的数据值,将字段值改为12

#先查看book视图中age字段对应的信息

select b_age from school_view;

#使用UPDATE语句,更新age字段对应的信息

UPDATE school_view SET b_age=12;

六、删除视图

DROP VIEW IF EXISTS view_name;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL视图是一种虚拟表,它有结构(有行和列),但没有实际存储数据。创建视图可以通过CREATE VIEW语句来实现。例如,使用SELECT语句来定义视图的查询结果。通过创建视图,我们可以简化复杂的查询,提高查询效率,并且可以直接使用视图来查询数据,而不必每次都编写复杂的查询语句。 在MySQL中,使用CREATE VIEW语句创建视图,语法如下: CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; 其中,view_name是视图的名称,column1, column2等是要选择的列,table_name是要查询的表,condition是可选的筛选条件。 通过创建视图,我们可以使用视图的名称来查询数据,就好像查询表一样。视图的查询结果是根据视图定义的SELECT语句生成的。 总结起来,MySQL视图是一种虚拟表,可以通过CREATE VIEW语句创建,将复杂的查询结果保存为视图,方便后续查询操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span> #### 引用[.reference_title] - *1* *2* *4* [MySQL——视图查询](https://blog.csdn.net/qq_67308046/article/details/124413261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [MySQL视图](https://download.csdn.net/download/weixin_38550834/13685354)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DF10F-0001A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值