MySQL中的视图操作

在具体操作表前,有时候要求只能操作部分字段,而不是全部字段。为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。视图本质上是一种虚拟表,其内容和真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。

视图使程序员只关心感兴趣的某些特定数据和他们所负责的特定任务。这样程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高数据库中数据的安全性。

视图特点:

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

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

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

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

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

1.创建视图

CREATE VIEW view_selectproduct

      AS

            SELECT id,name

                 FROM t_product;

视图的功能实际上是封装查询语句。

(1)封装实现查询常量语句的视图,即所谓的常量视图。

CREATE VIEW view_test1

      AS

              SELECT 3.1415926

(2)封装使用聚合函数(SUM、MIN、MAX、COUNT)查询语句的视图

CREATE VIEW view_test2

     AS

             SELECT COUNT(name)

                  FROM t_student;

(3)封装实现排序功能(ORDER BY)查询语句的视图

CREATE VIEW view_test3

    AS

           SELECT name

               FROM t_student

                  ORDER BY id DESC;

(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;

(5)封装了实现表外连接(LEFT JOIN 和 RIGHT JOIN)查询语句的视图。

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;

(6)封装了实现子查询相关查询语句的视图。

CREATE VIEW view_test6

   AS

         SELECT s.name

            FROM t_student AS s

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

(7)封装了实现记录联合(UNION和UNION ALL)查询语句的视图。

CREATE VIEW view_test7

      AS

            SELECT id,name FROM t_student

            UNION ALL

            SELECT id,name FROM t_group;

 

2.查看视图

SHOW TABLES  (需要选中数据库)查看表和视图

SHOW TABLES STATUS FROM view \G    查看表和视图详细信息语句,view 在这里是数据库名字

SHOW TABLES STATUS

        FROM view

            LIKE "view_selectproduct"  \G       #从数据库view中,查看名为view_selectproduct视图的详细信息

SHOW CREATE VIEW  viewname  #查看视图viewname定义信息

DESC viewname #查看视图viewname设计信息

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

USE information_schema;

SELECT *

    FROM views

         WHERE table_name='view_selectproduct' \G

3.删除视图

DROP VIEW view_name 【,view_name】....

 

4.修改视图

CREATE OR REPLACE 语句修改视图

CREATE OR REPLACE VIEW view_selectproduct

    AS

          SELECT name

                FROM t_product;

 

ALTER语句修改视图

ALTER VIEW view_selectproduct

   AS

        SELECT name

            FROM t_product;

5.利用视图操作基本表

SELECT * FROM view_selectproduct; #检索(查询)数据

视图是“虚表”,对视图数据进行的更新操作,实际上是对其基本表数据进行更新操作。因此对视图数据进行添加、删除和删除操作直接影响数据。但是当视图来自多个基本表时,不允许添加和删除数据。

(1)添加数据操作

INSERT INTO view_product (id,name,price,order_id)

     VALUES(11,'PEAR4',12.3,2);

(2) 删除数据操作

DELETE FROM view_product

     WHERE name='apple1';

(3)更新数据操作

UPDATE view_product

    set price=3.5

       WHERE name='pear1';

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值