MySQL从入门到精通_5视图的操作

  • 1 为什么使用视图
数据库中关于数据的查询有时候非常复杂,例如表连接、子查询等,这种查询会让程序员感到非常痛苦,应为它逻辑太复杂、编写语句比较多。当这种查询需要重复使用时,则不会次次都能编写正确,从而降低了数据库的实用性。在具体操作表之前,有时候要求只能操作部分字段,而不是全部字段。例如
在公司员工的工资一般是保密的,如果因为程序员一时疏忽向查询中写入了关于“工资”的字符按,则会让员工的“工资”显示给所有能够查看该查询的人,这是就需要限制程序员操作的字段。

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

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

视图的特点如下

  • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系
  • 视图是由基本表(实表)产生的表(虚表)
  • 视图的建立和删除不影响基本表
  • 对视图内容的更新(添加、删除和修改)直接影响基本表
  • 当视图来自多个基表时,不允许添加和删除数据
  • 2 创建视图
2.1 创建视图的语法形式
这里写图片描述

和创建表一样,视图名不能和表名,也不能和其他的视图名重名。根据上述语法可以发现,视图的功能实际上就是封装了复杂的查询语句。

注意:在SQL语句命名规范中,视图一般以view_xxx或者v_xxx的样式来命名

2.2 创建各种视图

idnamesexgroup_id
1cjgong1M1
2cjgong2M1
3cjgong3M2
4cjgong4W2
5cjgong5W2
6cjgong6W2
7cjgong7M3
8cjgong8W3
9cjgong9W4
学生表信息(t_student)
idname
1group_1
2group_2
3group_3
4group_4
5group_5
组表信息
CREATE VIEW view_test1
    AS
        SELECT 3.1415926

这里写图片描述


CREATE VIEW view_test2
    AS
        SELECT COUNT(name)
            FROM t_student;

这里写图片描述


CREATE VIEW view_test3
    AS
        SELECT name
            FROM t_student
                ORDER BY id DESC;

这里写图片描述


CREATE VIEW view_test4
    AS
        SELECT s.name
            FROM t_student AS s, t_gruop AS g
                WHERE s.group_id = g.id AND g.id = 2;

这里写图片描述


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;

这里写图片描述


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

这里写图片描述


CREATE VIEW view_test7
    AS
        SELECT id,name FROM t_student
        UNION ALL
        SELECT id,name FROM t_group;

这里写图片描述

  • 3 查看视图
3.1 SHOW TABLES 语句查看视图名

3.2 SHOW TABLE STATUS [FROM] [LIKE] 语句查看视图详细信息
这里写图片描述

3.3 SHOW CREATE VIEW 语句查看实体定义信息

3.4 DESCRIBE | DESC| 语句查看实体设计信息

  • 4删除视图
4.1 删除视图的语句形式
这里写图片描述

在上述语句中,view_name参数表示所要删除视图的名称

  • 5修改视图
对于已经创建好的表,尤其是已经有大量数据的表,通过先删除,然后再按照新的表定义重建表的方式来修改表时,需要做许多额外的工作,例如数据的重载等。可以对于视图来说,由于其实“虚表”,并没有存储数据,所以完全可以通过该方式来修改视图。

5.1如果每次修改视图,都是先删除视图,然后再次创建一个同名的视图,则显得非常麻烦。于是,MySQL为了便于用户修改视图,提供了可以实现替换的创建视图语法。
这里写图片描述

5.2 ALTER语句修改视图
这里写图片描述

  • 6利用视图操作基本表
在MySQL中可以通过视图检索基本表数据,这是视图最进本的应用,除此之外还可以视图修改基本表中的数据。

6.1 检索(查询)数据
通过视图查询数据,与通过表进行查询完全相同,只不过通过视图查询比表更安全、更简单、使用。只要把表名换成视图名即可

6.2 利用视图操作基本表数据
我们不仅可以对视图进查询数据,而且还可以对视图进行更新(增加、删除和更新)数据操作,由于视图时“虚表”,所以对视图数据进行更新操作,实际上是对基本表表数据进行更新操作。在具体更新视图数据时,需要注意一下两点

  • 对视图数据进行添加,删除和更新操作直接影响基本表。
  • 视图来自多个基本表时,不允许添加和删除数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值