MySQL创建与使用视图

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL视图运用

视图是一个从或多个表中导出来的表,它是一种虚拟存在的表,并且表的结构和数据都依赖于基本表,通过视图不仅可以看到存放在基本表中的数据,还可以像操作基本表一样,对视图中存放的数据进行查询、修改和删除。与直接操作基本表相比,视图具有以下特点:

①简单化;②安全性;③逻辑数据独立性。


【任务5.1】使用语句创建视图

1.创建视图:

      视图中包含了SELECT查询的结果,因此视图的创建基于SELECT语句和已存在的数据表。视图可以建立在一张表上,也可以建立在多张表上。在MySQL中,创建视图使用CREATE VIEW语句,其基本语法格式为:

CREATE [OR REPLACE][ALGORITHM={UNDEFINED| MERGE

TEMPTABLE} ]

VIEW view_name [ (column_list) ]

AS select_statement

[WITH [CASCADED|LOCAL]CHECK OPTION]


在上述语法格式中,每个部分的含义如下。

CREATE:表示创建视图的关键字,上述语句能创建新的视图。

OR REPLACE:如果给定了此子句,表示该语句可以替换已有视图。

ALGORITHM:可选项,表示视图选择的算法。

UNDEFINED:表示MySQL将自动选择所要使用的算法。

MERGE:表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。

TEMPTABLE:表示将视图的结果存入临时表,然后使用临时表执行语句。

view_name:表示要创建的视图名称。

column_list:可选项,表示字段名清单。指定了视图中各个字段名,默认情况下,与SELECT 语句中查询的字段名相同。

AS:表示指定视图要执行的操作。

select_statement:一个完整的查询语句,表示从某个表或视图中查出某些满足条件的记录,将这些记录导入视图中。

WITH CHECK OPTION:可选项,表示创建视图时要保证在该视图的权限范围之内。

CASCADED:可选项,表示创建视图时,需要满足与该视图有关的所有相关视图和表的条件,该参数为默认值。

LOCAL:可选项,表示创建视图时,只要满足该视图本身定义的条件即可。该语句要求具有针对视图的CREATE VIEW 权限,以及针对由SELECT语句选择的每一列上的某些权限。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限。如果还有OR REPLACE子句,必须在视图上具有DROP权限。

视图属于数据库。在默认情况下,将在当前数据库创建新视图。要想在给定数据库中明确创建视图,创建时应将名称指定为db_name.view_name。


2.视图的规则和限制:

创建视图前,应该知道它的一些限制。视图创建和使用最常见的规则和限制如下。

①与表一样,视图必须唯一命名(不能给视图取与别的视图或表相同的名称)。

②对于可以创建的视图数目没有限制。

③为了创建视图,必须具有足够的访问权限。这些限制通常由数据库管理人员授予。

④视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图。

⑤ORDER BY可以用在视图中,但如果在该视图检索数据 SELECT中也含有ORDER BY,那么该视图中的ORDER BY将被覆盖。

⑥视图不能索引,也不能有关联的触发器或默认值。

⑦视图可以和表一起使用。例如,编写一条连接表和视图的SELECT语句。


【任务5.2】使用图形管理工具创建视图

1.添加数据表:

用户在视图创建工具中新建视图,首先必须添加表到视图,从左侧数据库对象食口拖动数据表到图表设计窗口或双击相应的数据表。

2. 选择字段名:

户在视图创建工具界面的图表设计窗口中,选中相应数据表对象的字段名复选框;也可以选中对象标题的复选框,即可包含所有字段。

3. 删除对象:

从视图创建工具界面的图表设计窗口中移除对象,单击对象标题上的关闭按钮

4. 添加表别名:

在视图创建工具中添加表别名,用户只需在图表设计窗口双击表名并输人别名。

5. 设置表间关系:

通过两个字段连接数据库对象,从一个对象列表拖动一个字段到另一个对象列表一条线将出现在连接的字段之间。

删除某些对象的全部连接,单击对象别名旁的“-”按钮。

转到语法窗口改变连接的关系,单击运算符并在弹出的菜单中选择属性项目,还可以通过列表(=、<>、<、<=、>、>=)改变关系条件,最后单击“确定”按钮进行保存。除此之外,还可以改变连接的类型。

6. 设置输出字段:

在图表设计窗口选择的字段将显示在语法窗口,设置它们的显示顺序,以及使用和修改视图输出字段。

<Distinct>:相同的记录不会包含在查询结果中。

<func>:为每个栏位设置聚集函数(SUM、MAN、MIX、AVG、COUNT)。

<别名>:改变输出查询字段名。

7. 设置条件:

添加一个查询条件,在语法窗口的WHERE子句单击“<按这里添加条件>”,单击“<一一>,<一一>”中的“<一一>”从当前所建查询中添加的所有数据表的字段列表中选择一个字段。

定义条件,在“编辑”选项卡中输入值,单击“=”设置条件运算符。

8. 设置组条件:

可以从语法窗口的GROUP BY子句为组查询记录设置条件,它们以设置条件相同的方法设置,条件将会包含在当前的 HAVING 语句中。

9.设置排序准则:

可视化创建工具可以从语法窗口 ORDER BY子句设置排序的方法,单击ASC或 DESC可改变排序方向。

10. 设置限制准则:

LIMIT 子句用于在指定的范围限制查询记录,可以用它来显示前X条记录,格式为LimitX,X参数指的是返回从0条开始的X条记录行;也可以显示由X~Y之间的记录,格式为LimitX,Y,X参数指定第一个返回记录行的偏移量(第一条记录是0),Y参数指定返回记录行的最大数目(显示多少条记录)。


【任务5.3】修改视图

修改视图是指修改数据库中存在的视图,例如,当基本表的某些字段发生变化时,可以通过修改视图的方式来保持视图与基本表的一致性。在MySQL中,可以通过CREATE OR REPLACE VIEW 语句和ALTER 语句来修改视图。


1.使用 CREATE OR REPLACE VIEW 语句修改视图:

在MySQL中,使用CREATE OR REPLACE VIEW语句修改视图,其语法格式为:

CREATE [OR REPLACE] [ALGORITHM={UNDEFINEDTEMPTABLE} ]

VIEW view_name [ (column_list) ]

AS select_statement

[WITH [CASCADED|LOCAL] CHECK OPTION]


可以看到,修改视图的语句和创建视图的语句是完全一样的。如果视图已经存在,那么使用修改语句对视图进行修改;如果视图不存在,那么将创建一个新视图。


2.使用ALTER 语句修改视图:

ALTER语句是MySQL提供的另外一种修改视图的方法,其修改视图的语法格式为:

ALTER [ALGORITHM= {UNDEFINED|MERGE|TEMPTABLE} ]

VIEW view_name [ (column_list) ]

AS SELECT_statement

[WITH [CASCADED|LOCAL]CHECK OPTION]


这个语法中的关键字与前面创建视图的关键字是一样的,这里不再介绍。

【任务5.4】利用视图更新数据表

更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,其中没有数据。当通过视图更新数据时,其实是在更新基本表中的数据,如果对视图增加或删除记录,实际上是对其基本表增加或删除记录。视图更新主要有3种方法:UPDATE、INSERT和DELETE。


1.使用UPDATE 语句更新视图:

在MySQL中,可以使用UPDATE语句对视图中原有的数据进行更新。

2.使用INSERT 语句更新视图:

在MySQL中,可以使用INSERT语句对视图中的基本表插入一条记录。

3.使用DELETE 语句更新视图:

在MySQL中,可以使用DELETE语句对视图中的基本表删除部分记录。


#需要注意的是,尽管更新视图有多种方式,但并非所有情况下都能执行视图的更新操作。当视图中包含如下内容时,视图的更新操作将不能被执行。


(1)视图中不包含基本表中被定义为非空的列。

(2)在定义视图的SELECT语句后的字段列表中使用了数学表达式。

(3)在定义视图的SELECT语句后的字段列表中使用了聚合函数。

(4)在定义视图的SELECT 语句中使用了 DISTINCT、UNION、LIMIT、GROUP BY或 HAVING子句。


【任务5.5】删除视图

当视图不再需要时,可以将其删除,删除视图时,只会删除视图的定义,不会删除数据。删除一个或多个视图可以使用DROP VIEW语句,其基本语法格式为:

DROP VIEW [IF EXISTS]

view_name [,view_name]···

{RESTRICT | CASCADE}


其中,“view_name”是要删除的视图名称,可以添加多个需要删除的视图名称,各个名称之间使用逗号分隔开。删除视图必须拥有DROP权限。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(8)作者——LJS[含MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;注意点及常见报错问题所对应的解决方法]
MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;举例说明注意点及常见报错问题所对应的解决方法
|
3月前
|
SQL 存储 关系型数据库
mysql-视图的定义和简单使用
这篇文章介绍了MySQL中视图的定义和简单使用方法,包括视图的创建规则和使用限制。通过一个实际的例子,展示了如何创建视图以及如何使用视图来简化复杂的SQL查询操作。
mysql-视图的定义和简单使用
|
3月前
|
存储 缓存 关系型数据库
MySQL 视图:数据库中的灵活利器
视图是数据库中的虚拟表,由一个或多个表的数据经筛选、聚合等操作生成。它不实际存储数据,而是动态从基础表中获取。视图可简化数据访问、增强安全性、提供数据独立性、实现可重用性并提高性能,是管理数据库数据的有效工具。
|
4月前
|
存储 关系型数据库 MySQL
|
5月前
|
SQL 安全 关系型数据库
MySQL创建视图(CREATE VIEW)13
【7月更文挑战第13天】创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。
89 1
|
6月前
|
缓存 DataWorks 关系型数据库
DataWorks产品使用合集之如何抽取MySQL视图数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
102 4
|
5月前
|
存储 数据可视化 关系型数据库
深入理解 MySQL 视图
深入理解 MySQL 视图
42 2
|
6月前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
6月前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用问题之在将RDS迁移到PolarDB后,原先由root用户创建的视图、存储过程等是否可以继续使用的
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
SQL 算法 安全
心得经验总结:深入解析MySQL视图VIEW
心得经验总结:深入解析MySQL视图VIEW
53 0