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

MySQL操作之视图

作者头像
ha_lydms
发布2023-08-09 21:45:36
2240
发布2023-08-09 21:45:36
举报
文章被收录于专栏:学习内容学习内容

序号

类型

地址

1

MySQL

MySQL操作之概念、SQL约束(一)

2

MySQL

MySQL操作之数据定义语言(DDL)(二)

3

MySQL

MySQL操作之数据操作语言(DML)(三)

4

MySQL

MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)

5

MySQL

MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)

6

MySQL

MySQL操作之数据控制语言:(DC)(五)

7

MySQL

MySQL操作之数据库函数

8

MySQL

MySQL管理之数据类型

9

MySQL

MySQL管理之索引

10

MySQL

MySQL管理之事务管理

11

MySQL

MySQL管理之存储过程

12

MySQL

MySQL管理之视图

13

MySQL

MySQL管理之数据备份与还原

14

MySQL

Linux(centos 7.5)服务器安装MySQL

15

MyBatis

MyBatis从入门到多表关联

16

MyBatis

MyBatis常用方法

17

MyBatis

Mybatis逆向工程的使用(附文件地址)

18

MyBatis

spring boot连接Mybatis数据库的配置文件(MySql、SQLserver、Oracle)

19

MyBatis-Plus

Mybatis-Plus使用案例(包括初始化以及常用插件)

20

MyBatis-Plus

Mybatis-Plus(Service CRUD 接口)

21

MyBatis-Plus

Mybatis-plus 4种条件构造器方式

22

MyBatis-Plus

Mybatis-Plus 执行自定义SQL

23

MyBatis-Plus

MyBatis-plus配置自定义SQL(执行用户传入SQL)

24

MyBatis-Plus

Mybatis-Plus(连接Hive)

25

MyBatis-Plus

Mybatis-Plus 代码生成器

一、概念

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

视图的优点:

  • 简化查询语句

视图不仅可以简化用户对数据的理解,还可以简化对数据的操作。

日常可以将经常使用的查询定义为视图,从而使用户避免大量重复的操作。

  • 安全性

通过视图用户只能查询和修改他们所能见到的数据,数据库中的其它数据既看不到也取不到。

  • 逻辑数据独立性

视图可以帮助用户屏蔽真实表结构变化带来的影响。

二、视图管理

2.1、创建视图语法格式

视图的创建基于SELECT语句和已经存在的数据表。视图可以建立在一张表上,也可以是多张表上。

代码语言:javascript
复制
CREATE [OR REPLACE][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE }]
	VIEW view_table_name [column_list]
	AS select_statement
	[WITH [CASCADED | LOCAL] CHECK OPTION]
  • CREATE:表示创建视图的关键字。
  • OR REPLACE:表示该语句能够替换已有视图。
  • ALGORITHM:可选。表示视图选择的算法。
    1. UNDEFINED:表示MySQL将字段选择所要使用的算法。
    2. MERGE:表示将使用视图的语句与视图定义合并起来,使视图定义的某一部分取代语句的对应部分。
    3. TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句。
  • view_name:表示要创建的视图名称。
  • column_list:可选,表示属性清单。指定了视图中各个属性的名。默认情况下:与SELECT语句中查询的属性相同。
  • AS:表示指定视图要执行的操作。
  • select_statement:是一个完整的查询语句,表示从某个表或者视图中查出某些满足条件的数据,将这些数据存入视图中。
  • WITH CHECK OPTION:可选。表示创建视图时要保证在该视图的权限范围内。
    1. CASCADED:可选。表示创建视图时,要满足跟该视图有关的所有相关视图和表的条件。(该参数为默认值)
    2. LOCAL:可选。表示创建视图时,只要满足该视图本身定义的条件既可。

2.2 创建视图

使用源表列名

代码语言:javascript
复制
CREATE VIEW view_stu 
	AS SELECT math,chinese,math + chinese FROM student;

结果:

math

chinese

math+chinese

80

78

158

指定视图字段名称

代码语言:javascript
复制
CREATE VIEW view_stu2(math,chin,sum)
	AS SELECT math,chinese,math + chinese FROM student;

结果:

math

chin

sum

80

78

158

多表创建视图

代码语言:javascript
复制
CREATE VIEW stu_class(id,name,glass)
	AS 
	SELECT student.id, student.name, stu_info.class 
		FROM student, stu_info 
		WHERE student.id = stu_info.id;

2.3 查看视图

有三种方式查看创建的视图:

  • 使用DESCRIBE
  • 使用SHOW TABLE STATUS
  • 使用SHOW CREATE VIEW

1. 使用DESCRIBE

代码语言:javascript
复制
DESCRIBE 视图名;
DESC 视图名;

语句

代码语言:javascript
复制
DESCRIBE stu_class;
在这里插入图片描述
在这里插入图片描述

2. 使用SHOW TABLE STATUS

代码语言:javascript
复制
SHOW TABLE STATUS '视图名';
代码语言:javascript
复制
SHOW TABLE STATUS 'stu_class';

视图中多列值为null。(存储引擎,数据长度)

基本表:

在这里插入图片描述
在这里插入图片描述

视图表:

在这里插入图片描述
在这里插入图片描述

3. 使用SHOW CREATE VIEW

代码语言:javascript
复制
SHOW CREATE VIEW 视图名;
代码语言:javascript
复制
SHOW CREATE VIEW my_student;
在这里插入图片描述
在这里插入图片描述

2.4 修改视图

修改数据库中存在的视图的定义。当基本表中的某些字段发生改变时,修改视图保持视图与基本表的一致性。

  • 使用CREATE OR REPLACE VIEW
  • 使用ALTER

1. 使用CREATE OR REPLACE VIEW

代码语言:javascript
复制
CREATE OR REPLACE VIEW view_stu AS SELECT * FROM student;
  • view_stu:表示要修改的视图的名称。
  • *:通配符表示表中更新表中所有的字段。
  • student:表示基本表的表名。

2. 使用ALTER

代码语言:javascript
复制
ALTER VIEW view_stu SELECT chinese FROM student;
  • view_stu:表示要修改的视图的名称。
  • chinese:表示基本表中chinese,要更新的字段名。
  • student:表示基本表的表名。

2.5 更新视图

  • 更新视图是指通过视图来更新、插入、删除基本表中的数据。
  • 当更新视图或者基本表,对应的视图、基本表都会更新。除了4. 特殊情况不更新视图中一些不能在视图中更新内容。

1. 更新视图中字段值:

代码语言:javascript
复制
UPDATE view_stu SET chinese = 100;

结果:

  • 视图中的,基本表student、与student关联的视图表,chinese 字段都更新。
在这里插入图片描述
在这里插入图片描述

2. 使用INSERT 更新视图:

向基本表中插入数据

代码语言:javascript
复制
INSERT INTO student VALUES( 4, 'lisi', 100, 100 );
在这里插入图片描述
在这里插入图片描述

3. 使用DELECT 更新视图:

  • 删除数据是通过基本表进行删除的。
代码语言:javascript
复制
DELETE FROM view_stu2 WHERE math = 70;

4. 特殊情况不更新视图

  • 视图中包含基本表中定义为非空的列。
  • 在定义视图的SELECT语句后的字段列表中使用了数学表达式。
  • 在定义视图的SELECT语句后的字段列表中使用了聚合函数。
  • 在定义视图的SELECT语句后的字段列表中使用了DISTINCTUNIONTOPGROUP BYHAVING语句。

2.6 删除视图

语法:

代码语言:javascript
复制
DROP VIEW[IF EXISTS]
	view_naem [,view_name1]...
	[RESTRICT|CASCADE]

删除视图view_stu2

代码语言:javascript
复制
DROP VIEW IF EXISTS view_stu2;
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、视图管理
    • 2.1、创建视图语法格式
      • 2.2 创建视图
        • 2.3 查看视图
          • 2.4 修改视图
            • 2.5 更新视图
              • 2.6 删除视图
              相关产品与服务
              云数据库 MySQL
              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
              http://www.vxiaotou.com