前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql视图

Mysql视图

作者头像
海盗船长
发布2021-12-07 16:07:31
2.4K0
发布2021-12-07 16:07:31
举报
文章被收录于专栏:基础知识文章基础知识文章

1.初识视图

1.视图的概念和作用

什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表表的结构和数据都依赖于基本表

作用:

简化查询语句:简化用户的查询操作,使查询更加快捷。 安全性:更方便的进行权限控制。 逻辑数据独立性:屏蔽真实表结构变化带来的影响。

2.创建视图语法
代码语言:javascript
复制
CREATE[OR REPLACE][ALGORITHM = {UNDEFINED |MERGE│TEMPTABLE]
[DEFINER= { user | CURRENT_USER]
[SQL SECURITY { DEFINER | INVOKER}]
VIEW view_name [(column_list)]
AS select_statement
[WITH[CASCADED|LOCAL]CHECK OPTION]
  • CREATE:表示创建视图的关键字。
  • OR REPLACE:可选,表示替换已有视图。
  • ALGORITHM:可选,表示视图算法,会影响查询语句的解析方式。

ALGORITHM取值有如下3个: UNDEFINED:默认,由MySQL自动选择算法。 MERGE:将select_statement和查询视图时的SELECT语句合并起来 查询。 TEMPTABLE:先将select_statement的查询结果存入临时表,然后用 临时表进行查询。

  • DEFINER:可选,表示定义视图的用户,与安全控制有关,默认为当前用户。
  • SQL SECURITY:可选,用于视图的安全控制。

SQL SECURITY取值有如下2个: DEFINER:默认,由定义者指定的用户的权限来执行。 INVOKER:由调用视图的用户的权限来执行。

  • view_name:表示要创建的视图名称。
  • column_list:可选,用于指定视图中的各个列的名称。(默认与SELECT语句查询的列相同)
  • AS:表示视图要执行的操作。
  • select_statement:一个完整的查询语句,表示从某些表或视图中查出某些满足条件的记录,将这些记录导入视图中。
  • WITH CHECK OPTION:可选,用于视图数据操作时的检查条件。若省略此子句,则不进行检查。

取值: CASCADED:默认,操作数据时要满足所有相关视图和表定义的条件。例如,当在一个视图的基础上创建另一个视图时,进行级联检查。 LOCAL:操作数据时满足该视图本身定义的条件即可。

2.视图管理

1.创建视图

在多表上创建视图

代码语言:javascript
复制
#创建视图
mysql> CREATE VIEW view_goods_cate As
->SELECT g.id,g.name,c.name category_name FROM sh_goods
->LEFT JOIN sh_goods_category c
-> ON g.category_id = c.id;
Query OK,0 rows affected (o.01 sec)
#查询视图
mysql> SELECT *  FROM view_goods_cate LIMIT 3;
十————十————————十——————————十
| id l namel category_namel
十————十————————十——————————十
| 1    |  2B铅笔|    文具	|
| 2    |   钢笔 |    文具    |
| 3    |  碳素笔|    文具    |
十————十————————十——————————十
3 rows in set (o.00 sec)

自定义列名称

代码语言:javascript
复制
#创建视图
mysq1> CREATE VIEW view_ goods_ promo (sn, title, promotion_ _price) AS
-> SELECT id, name, price*0.8 FROM sh_ goods;
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#②查询视图
mysq1> SELECT * FROM view goods_ promo WHERE sn <= 3;
在这里插入图片描述
在这里插入图片描述

在创建视图时,自定义列名称的顺序与AS后SELECT字段列表的顺序一-致。 自定义列名称的数量必须与SELECT字段列表的数量- -致。

2.查看视图
1.查看视图字段信息
代码语言:javascript
复制
mysq1> DESC view_ goods_ cate;
在这里插入图片描述
在这里插入图片描述
2.查看视图状态信息
代码语言:javascript
复制
mysq1> SHOW TABLE STATUS LIKE 'view_ goods_ cate' \G
在这里插入图片描述
在这里插入图片描述
3.查看创建视图的语句
代码语言:javascript
复制
mysql> SHOW CREATE VIEW view_ goods_ cate \G .
在这里插入图片描述
在这里插入图片描述
3.修改视图

修改视图:修改数据库中存在的视图的定义。 例如,当基本表中的某些字段发生变化时,视图必须修改才能正常使用。

1.替换已有的视图
代码语言:javascript
复制
#创建视图
mysql> CREATE VIEW view_ goods AS
-> SELECT id, name, price FROM sh_ goods;
Query OK, 0 rows affected (0.01 sec)
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#修改已有视图
mysql> CREATE OR REPLACE VIEW view_ goods AS
-> SELECT id, name FROM sh_ goods;
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#查看修改结果
mysql> DESC view_ goods; 
修改完毕之后的视图
修改完毕之后的视图
修改视图语法
代码语言:javascript
复制
ALTER [AL GORITHM = {UNDEFINED | MERGE| TEMPTABLE}]
[DEFINER = { user | CURRENT_ _USER }]
[SQL SECURITY { DEFINER |INVOKER }]
VIEW view_ name [(column_ list)]
AS SELECT_ statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

使用方法如下所示:

代码语言:javascript
复制
#修改视图
mysql> ALTER VIEW view_ goods AS SELECT id FROM sh_ goods;
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
#查看修改结果
mysql> DESC view_ goods;
在这里插入图片描述
在这里插入图片描述
4.修改视图
代码语言:javascript
复制
DROP VIEW [IF EXISTS] view_ name [,view_ name1]...

使用方法如下图所示:

代码语言:javascript
复制
#删除视图
mysql> DROP VIEW view_goods;
Query OK, 0 rows affected (0.00 sec)
#检查视图是否已被删除
mysql> SELECT * FROM view_goods;
ERROR 1146 (42S02) : Table 'shop. view_ goods' doesn't exist

3.视图数据操作

1.添加数据

使用INSERT语句通过视图向基本表添加数据

代码语言:javascript
复制
#创建视图
mysql> CREATE VIEW view_ category AS
-> SELECT id, name FROM sh_goods_category;
Query OK, 0 rows affected (0.01 sec)
#添加数据
mysql> INSERT INTO view_ category VALUES (17, '图书') ;
Query OK,1 row affected (0.00 sec)
#查询添加后的数据
mysql> SELECT id, name FROM sh_ goods_ category WHERE id = 17;
在这里插入图片描述
在这里插入图片描述
2.修改数据

使用UPDATE语句通过视图修改基本表中的数据

代码语言:javascript
复制
#修改数据
mysql> UPDATE view_category SET name = '家电' WHERE id = 17;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
#查询修改后的数据
mysql> SELECT id, name FROM sh_ goods_ category WHERE id = 17;
在这里插入图片描述
在这里插入图片描述
3.修改数据

使用DELETE语句通过视图删除基本表中的数据

代码语言:javascript
复制
#删除数据
mysql> DELETE FROM view_category WHERE id = 17;
Query OK, 1 row affected (0.00 sec)
#查询数据是否已经删除
mysql> SELECT id, name FROM sh_goods_category WHERE id = 17;
Empty set (0.00 sec)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.初识视图
    • 1.视图的概念和作用
      • 2.创建视图语法
      • 2.视图管理
        • 1.创建视图
          • 2.查看视图
            • 3.修改视图
              • 4.修改视图
              • 3.视图数据操作
                • 1.添加数据
                  • 2.修改数据
                    • 3.修改数据
                    相关产品与服务
                    图数据库 KonisGraph
                    图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档