我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL中数据视图操作详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL中数据视图操作详解

1.视图概述

视图是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。

视图一经定义,就可以像表一样被查询、修改、删除和更新。使用视图有下列优点:

1、为用户集中数据,简化用户的数据查询和处理。有时用户所需要的数据分散在多个表中,定义视图可将它们集中在一起,从而方便用户的数据查询和处理。

2、屏蔽数据库的复杂性。用户不必了解复杂的数据库中的表结构,并且数据库表的更改也不影响用户对数据库的使用。

3、简化用户权限的管理。只须授予用户使用视图的权限,而不必指定用户只能使用表的特定列,也增加了安全性。

4、便于数据共享。各用户不必都定义和存储自己所需的数据,可共享数据库的数据,这样同样的数据只需存储一次。

5、可以重新组织数据以便输出到其他应用程序中。

使用视图时,要注意下列事项:

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

2、视图的命名必须遵循标志符命名规则,不能与表同名,且对每个用户视图名必须是唯一的,即对不同用户,即使是定义相同的视图,也必须使用不同的名字。

3、不能把规则、默认值或触发器与视图相关联

4、不能在视图上建立任何索引,包括全文索引

5、视图中使用SELECT语句有以下的限制:

5.1、定义视图的用户必须对所参照的表或视图有查询(即可执行SELECT语句)的权限,在定义中引用的表或视图必须存在

5.2、不能包含FROM子句中的子查询,不能引用系统或用户变量,不能引用预处理语句参数

5.3、在视图定义中允许使用ORDER BY子句,但是,如果从特定视图进行了选择,而该视图使用了具有自己ORDER BY的语句,则视图定义中的ORDER BY将被忽略。

1.1创建视图

视图的创建语法格式:

CREATE [ OR REPLACE ] VIEW 视图名 [ ( 列名列表 ) ]
AS SELECT 语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

例:创建Bookstore数据库上的jsj_sell视图,包括计算机类图书销售的订单号、图书编号、书名等情况。其中要保证对该视图的订单修改都要符合计算机类这个条件 

CREATE OR REPLACE VIEW jsj_sell
AS
SELECT 订单号,Sell.图书编号,书名
FROM Book,Sell
WHERE Book.图书编号=Sell.图书编号
AND Book.图书类别='计算机'
WITH CHECK OPTION;

例:创建Bookstore数据库中计算机类图书销售视图sale_avg,包括书名(在视图中列名为name)和该图书的平均订购册数(在视图中列名为sale_avg) 

CREATE VIEW sale_avg(name,sale_avg)
AS 
SELECT 书名,avg(订购册数)
FROM jsj_sell
GROUP BY 书名;

上面创建了计算机类图书销售视图jsj_sell,可以直接从jsj_sell视图中查询信息生成新视图。

1.2视图的查询

视图定义后,就可以像查询基本表那样对视图进行查询

例:在视图jsj_sell中查找计算机类图书的订单号和订购册数

SELECT 订单号,订购册数
FROM jsj_sell;

例:查找平均订购册数大于5本的订购客户的身份证号和平均订购册数

1、创建客户平均订购视图kh_avg,包括客户身份证号和平均订购册数

CREATE VIEW kh_avg(sfz,order_avg)
AS
SELECT 身份证号,AVG(订购册数)
FROM Sell
GROUP BY 身份证号;

2、对kh_avg视图进行查询

SELECT *
FROM kh_avg
WHERE order_avg>5;

注意:使用视图查询时,若其关联的基本表中添加了新字段,则该视图将不包含新字段。如果与视图相关联的表或视图被删除,则该视图将不能再使用。

2.操作视图

2.1通过视图操作数据

2.1.1可更新视图

要通过视图更新基本表数据,必须保证视图是可更新视图,即可以在INSET、UPDATE或DELETE等语句中使用它们。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。有一些特定的其他结构,这类结构会使得视图不可更新。若视图包含以下结构中的任何一种,其就是不可更新的:

1、聚合函数

2、DISTINCT关键字

3、GROUP BY子句

4、ORDER BY子句

5、HAVING子句

6、UNION运算符

7、位于选择列表中的子查询

8、FROM子句中包含多个表

9、SELECT语句中引用了不可更新视图

10、WHERE子句中的子查询,引用FROM子句中的表

MySQL在多表上创建视图方法

2.1.2插入数据

当使用视图插入数据时,如果在创建视图时加上WITH CHECK OPTION子句,WITH CHECK OPTION子句会在更新数据时检查新数据是否符合视图定义中WHERE子句的条件。

WITH CHECK OPTION子句只能和可更新视图一起使用。

例:创建视图jsj_book,视图中包含计算机类图书的信息,并向jsj_book视图中插入一条记录:('IS-01','计算机','计算机基础')

1、创建视图jsj_book 

CREATE OR REPLACE VIEW jsj_book
AS
SELECT *
FROM Book
WHERE 图书类别='计算机'
WITH CHECK OPTION;

2、插入记录 

INSERT INTO jsj_book
VALUES('IS-01','计算机','计算机基础');

当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这将会影响多个基本表。

对INSERT语句还有一个限制:SELECT语句中必须包含FROM子句中指定表的所有不能为空的列。例如,若jsj_book视图定义时不加上“书名”字段,则插入数据时会出错。

2.1.3修改数据

使用UPDATE语句可以实现通过视图修改基本表数据。

例:将jsj_sell视图中的图书编号为IS-01的书名改为“MySQL基础”

UPDATE jsj_sell
SET 书名='MySQL基础'
WHERE 图书编号='IS-01';

2.1.4删除数据

如果视图来源于单个基本表,可以使用DELETE语句通过视图来删除基本表数据,对于依赖多个基本表的视图,不能使用DELETE语句。

例:删除jsj_book中“中国青年出版社”的记录

DELETE FROM jsj_book
WHERE 出版社='中国青年出版社';

2.2修改视图定义

可以使用ALTER VIEW语句对已有视图的定义进行修改

语法格式:

ALTER VIEW 视图名[ ( 列名列表 ) ]
AS select语句
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]

例:将jsj_book视图修改为只包含计算机类图书的图书编号、书名和单价

ALTER VIEW jsj_book
AS
SELECT 图书编号,书名,单价
FROM Book
WHERE 图书类别='计算机';

2.3删除视图

语法格式:DROP VIEW [ IF EXISTS ] 视图名1 [, 视图名2 ]...

若声明了IF EXISTS,则视图不存在的话也不会报错。使用DROP VIEW 一次可以删除多个视图。例:一次性删除jsj_book和jsj_sell

DROP VIEW jsj_book,jsj_sell;

到此这篇关于MySQL中数据视图操作详解的文章就介绍到这了,更多相关MySQL数据视图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL中数据视图操作详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中数据视图操作详解

视图是从一个或多个表(或视图)导出的表。视图一经定义,就可以像表一样被查询、修改、删除和更新。本文就来和大家讲讲MySQL数据视图的一些基本操作,需要的可以参考一下
2022-11-13

MySQL视图的概念和操作函数详解

对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理,下面这篇文章主要给大家介绍了关于MySQL数据库基本SQL语句教程之高级操作中视图的相关资料,需要的朋友可以参考下
2023-03-03

MySQL数据库中表的操作详解

目录1.mysql中的数据类型2.创建数据表3.删除表4.插入数据5.更新数据6.删除数据7.快速复制表8.快速删除表数据1.Mysql中的数据类型varchar 动态字符串类型(最长255位),可以根据实际长度来动态分配空间,例如:va
2022-08-18

【大数据】Hive DDL 操作与视图讲解

Hive中的DDL操作和视图操作可以帮助用户定义和管理表、视图等数据结构,从而更加灵活和高效地管理和查询数据。用户可以根据实际需求选择使用哪种操作方式,以达到更好的数据管理和操作效果。​

MySQL数据库数据删除操作详解

目录DELETE 语句DELETE 语句练习①DELETE 语句练习②DELETE 语句的表连接(内连接)DELETE 语句的表连接练习①DELETE 语句的表连接练习②DELETE 语句的表连接练习③DELETE 语句的表连接(外连接)D
2022-08-10

mysql操作数据库基础详解

这篇文章主要介绍了mysql操作数据库基础详解,MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性
2022-11-13

python中的mysql数据库LIKE操作符详解

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE patternpattern这里就是放指定模板的
2022-05-21

node操作mysql数据库实例详解

本文实例讲述了node操作mysql数据库的方法。分享给大家供大家参考,具体如下: 1、建立数据库连接:createConnection(Object)方法 该方法接受一个对象作为参数,该对象有四个常用的属性host,user,passwo
2022-06-04

MySQL学习之数据更新操作详解

目录UPDATE 语句UPDATE 语句练习①UPDATE 语句练习②UPDATE 语句练习③UPDATE 语句的表连接UPDATE 语句练习④UPDATE 语句UPDATE 语句用于修改表的记录,语法如下UPDATE IGNORE 表
2022-08-08

MySql常用数据类型与操作详解

目录常用数据类型数据库基本操作约束类型常用数据类型1、int:整形2、double(m,d)decimal(m,d):浮点数类型 (m指定长度,d表示小数点位数)3、varchar(size):字符串类型4、timestamp:日
2022-07-28

MySQL数据库学习之查询操作详解

目录1.示例表内容2.简单查询3.给列起别名4.列运算5.条件查询1.示例表内容dept表:+--------+------------+----------+| DEPTNO | DNAME | LOC |+-
2022-07-24

MySQL数据库入门之备份数据库操作详解

本文实例讲述了MySQL数据库入门之备份数据库操作。分享给大家供大家参考,具体如下: 接上一次:MySQL数据库入门多实例配置 一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作
2022-05-16

Python中对数据库的操作详解

今天简单说说MySQL,我们存储数据,直接用本地文件即可,但是,本地文件不利于存放海量数据,也不利于用程序对文件的数据进行查询与管理,我们可以使用数据库
2023-02-20

编程热搜

目录