MySQL数据库的视图的操作

时间:2022-11-04 08:33:06

1.为什么使用视图:

    所谓视图就是一种虚拟表

    不在数据库中以存储的数据值形式

    在具体引用视图时动态生成

    程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,提高了数据库中数据的安全性

    1.1视图特点:

        视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系

        视图是由基本表(实表)产生的表(虚表)

        视图的建立和删除不影响基本表

        对视图内容的更新(添加、删除和修改)直接影响基本表

        当视图来自多个基本表时,不允许添加和删除数据

2.创建视图:

    在创建视图时,首先要确保拥有CREATE VIEW的权限,并且同时确保对创建视图所引用的表也具有相应的权限

    2.1创建视图的语法形式:

        create view view_name

            AS 查询语句;

        例如:

        CREATE VIEW view_selectproduct

            AS

                SELECT id,name

                     FROM t_product;

        2.2使用视图:

            SELECT * FROM view_selectproduct;

        2.3创建各种视图:

            2.3.1常量视图:

                CREATE VIEW view_test1

                    AS

                SELECT 3.1415926;

            2.3.2实现聚合函数:

                CREATE VIEW view_test2

                    AS

                SELECT COUNT(name) FROM t_student;

            2.3.3实现排序功能:

                CREATE VIEW view_test3

                    AS

                SELECT name FROM t_student ORDER BY id DESC;

            2.3.4实现表内连接查询语句:

                CREATE VIEW view_test4

                    AS

                SELECT s.name FROM t_student as s, t_group as g WHERE s.group_id=g.id AND g.id=2;

            2.3.5实现表外连接:

                CREATE VIEW view_test5

                    AS

                SELECT s.name FROM t_student as s LEFT JOIN t_group as g ON s.group_id=g.id WHERE g.id=2;

            2.3.6实现子查询相关查询语句:

                CREATE VIEW view_test6

                    AS

                SELECT s.name FROM t_student AS s WHERE s.group_id IN (SELECT id FROM t_group);

            2.3.7实现记录联合:

                CREATE VIEW view_test7

                    AS

                SELECT id,name FROM t_student UNION ALL SELECT id,name FROM t_group;

3.查看视图:

    3.1SHOW TABLES语句查看视图名:

        SHOW TABLES;

    3.2SHOW TABLE STATUS语句查看视图详细信息:

        SHOW TABLE STATUS [FROM db_NAME] [LIKE 'pattern'];

    3.3SHOW CREATE VIEW语句查看视图定义信息:

        SHOW CREATE VIEW viewname;

    3.4DESCRIBE|DESC语句查看视图设计信息:

        DESCRIBE|DESC viewname;

    3.5通过系统表查看视图信息:

        当MySQL数据库安装成功后,会自动创建系统数据库information_schema。在该数据库中存在一个包含视图信息的表格views,可以通过查看表格view来查看所有视图的信息

        USE information_schema;

        SELECT * FROM views WHERE table_name='view_selectproduct' \G

4.删除视图:

    DROP VIEW view_name [,view_name]... ...

5.修改视图:

    5.1CREATE OR REPLACE VIEW语句修改视图:

        CREATE OR REPLACE VIEW view_selectproduct as 查询语句;

    5.2ALTER语句修改视图:

        ALTER VIEW viewname as 查询语句;

6.利用视图操作基本表:

    视图来自多个基本表时,不允许添加和删除数据

    视图view_product查询所有字段

    6.1添加数据:

        INSERT INTO view_product (id,name,price,order_id) VALUES (11,'PEAR4',12.3,2);

    6.2删除数据:

        DELETE FROM view_product WHERE name='apple1';

    6.3更新数据:

        UPDATE view_product SET price=3.5 WHERE name='pear1';