mysql视图知识点

MySQL中的视图(View)是一个虚拟表,它不包含实际存储在数据库中的数据,而是根据查询语句动态生成的结果集。

1、mysql视图概述

        1.1、视图含义

                视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。

        1.2、视图作用

                1.2.1、简单化

                1.2.2、安全性

                1.2.3、逻辑数据独立性

2、创建视图

        视图中包含了SELECT查询结果,因此视图的创建基于SELECT语句和已存在的数据表,视图可以创建在一张表上,也可以建立在多张表上。

        格式:

CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]

VIEW view_name [(column_list)]

AS SELECT_statement

[WITH[CASCADED|LOCAL]CHECK OPTION]

        CREATE:表示创建新的视图。

        REPLACE:表示替换已经创建的视图。

        ALGORITHM:表示视图选择的算法。

        UNDEFINED:表示MYSQL将自动选择算法。

        MERGE:表示将使用的视图语句与视图定义合并起来,使得视图定义的某一部分取代语句定义的部分。

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

        view_name:为视图的名称。

        column_list:为属性列。

        SELECT_statement:表示select语句。

        WITH[CASCADED|LOCAL]CHECK OPTION:表示视图在更新时保证在视图的权限范围之内。

3、查看视图

        3.1、DESCRIBE语句查看视图基本信息:

                DESCRIBE(DESC) 视图名;

        3.2、SHOW TABLE STATUS 语句查看视图基本信息

                SHOW TABLE STATUS LIKE '视图名';

        3.3、SHOW CREATE VIEW 语句查看视图详细信息

                SHOW CREATE VIEW 视图名

        3.4、在views表中查看视图详细信息

                在MYSQL中,information_schema数据库下views表中存储了所有视图的定义

                SELECT * FROM information_schema.views;

4、修改视图

        4.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]

        4.2、ALTER 语句修改视图

                格式:

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]

VIEW view_name [(column_list)]

AS SELECT_statement

[WITH[CASCADED|LOCAL]CHECK OPTION]

5、更新视图

        5.1、INSERT语句

        5.2、UPDATE语句

                UPDATE view_name SET column_name=value;

        5.3、DELETE语句

                DELETE FROM view_name WHERE 条件;

        5.4、当视图中包含如下内容时,视图的更新操作将不能被执行:

                1)、视图中不包含基表中被定义为非空的列。

                2)、在定义视图的SELECT语句中的字段列表中使用了数学表达式。

                3)、在定义视图的SELECT语句中的字段列表中使用了聚合函数。

                4)、在定义视图的SELECT语句中使用了DISTINCT、UNION、TOP、GROUP BY或HAVING子句。

6、删除视图

DROP VIEW [IF EXISTS] view_name[,view_name]... [RESTRICT|CASCADE]

        view_name:需要删除的视图名称,可以添加多个需要删除的视图名称,使用逗号分隔。

        删除时必须拥有DROP权限。

7、权限管理   

        可以对视图设置权限,控制用户对视图的访问,而不需要直接授予对底层表的权限,增强了安全性。

8、性能影响

        视图的查询可能会引入额外的性能开销,尤其是在视图定义复杂或涉及大量数据时。
        优化视图设计和使用适当的索引可以减轻这种影响。

9、重写与替换      

        视图可以被替换(REPLACE VIEW)或修改(ALTER VIEW)其定义,以便适应数据模型或查询需求的变化。

10、事务处理        

        视图在事务处理中同样遵循事务的隔离级别规则,这可能会影响视图数据的一致性和可见性。

11、依赖关系      

        视图依赖于其引用的基本表,如果基表结构发生变化(如列名更改),可能需要相应地调整视图定义。

12、视图的优点  

        提高数据安全。
        简化复杂的查询操作。
        提供了一定程度的数据抽象和逻辑独立性。
        方便数据共享,无需暴露底层表结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值