mysql 视图 中文_Mysql视图-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....

本文详细介绍了MySQL中的视图概念,包括视图的作用,如简化查询、增强安全性及逻辑数据独立性。讲解了创建视图的语法,包括视图算法、定义者、安全性选项等,并提供了创建、查看、修改和删除视图的实例。此外,还阐述了如何通过视图进行数据的插入、更新和删除操作,展示了视图在数据库管理中的实用性和灵活性。
摘要由CSDN通过智能技术生成

1.初识视图 1.视图的概念和作用 什么是视图:是从一个或多个表中导出来的表,它是一种虚拟存在的表,表的结构和数据都依赖于基本表。 作用: 简化查询语句:简化用户的查询操作,使

1.初识视图

1.视图的概念和作用

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

作用:

简化查询语句:简化用户的查询操作,使查询更加快捷。

安全性:更方便的进行权限控制。

逻辑数据独立性:屏蔽真实表结构变化带来的影响。

2.创建视图语法

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.创建视图

在多表上创建视图

#创建视图

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)

自定义列名称

#创建视图

mysq1> CREATE VIEW view_ goods_ promo (sn, title, promotion_ _price) AS

-> SELECT id, name, price*0.8 FROM sh_ goods;

a30f86e9b3ff02d36e322fd3d30f38a4.png

#②查询视图

mysq1> SELECT * FROM view goods_ promo WHERE sn <= 3;

842b546a4bc6478ade2dfc002b8a30d0.png

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

自定义列名称的数量必须与SELECT字段列表的数量- -致。

2.查看视图

1.查看视图字段信息

mysq1> DESC view_ goods_ cate;

bcd4254d10cd63cf7d41574d648009d0.png

2.查看视图状态信息

mysq1> SHOW TABLE STATUS LIKE 'view_ goods_ cate' \G

tvu52glfuyb.png

3.查看创建视图的语句

mysql> SHOW CREATE VIEW view_ goods_ cate \G .

918eb3a3857c90b31a37020be960afde.png

3.修改视图

修改视图:修改数据库中存在的视图的定义。

例如,当基本表中的某些字段发生变化时,视图必须修改才能正常使用。

1.替换已有的视图

#创建视图

mysql> CREATE VIEW view_ goods AS

-> SELECT id, name, price FROM sh_ goods;

Query OK, 0 rows affected (0.01 sec)

c27fe75fedb59782bb58f7ad4e188f20.png

#修改已有视图

mysql> CREATE OR REPLACE VIEW view_ goods AS

-> SELECT id, name FROM sh_ goods;

755b00509c6fde571c6e6567c9979e91.png

#查看修改结果

mysql> DESC view_ goods;

e1c8d11bf3b0d91f6727fbdd69bddf15.png

修改视图语法

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]

使用方法如下所示:

#修改视图

mysql> ALTER VIEW view_ goods AS SELECT id FROM sh_ goods;

0bbf211d7304c26e9462789c78770b11.png

#查看修改结果

mysql> DESC view_ goods;

e909a8bf557ecdb1775a17d5b13421a6.png

4.修改视图

DROP VIEW [IF EXISTS] view_ name [,view_ name1]...

使用方法如下图所示:

#删除视图

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语句通过视图向基本表添加数据

#创建视图

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;

80f41c351430fa1e4a5b38047888f05f.png

2.修改数据

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

#修改数据

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;

a84925ddc97ca0cf6d7d62fdc961d31d.png

3.修改数据

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

#删除数据

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)

以上信息来源于网络,如有侵权,请联系站长删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值