MySQL—进阶—视图(概念、基本语法和操作)

目录

一、引言

[(0)这篇博客涉及的表 student 结构和数据](#(0)这篇博客涉及的表 student 结构和数据)

(1)介绍视图

(2)创建

(3)注意

二、实操

(1)创建视图

(2)查询视图

1、查看创建视图的语句

2、查看视图当中的数据(可以当作一张表去查询...因为视图就是一张虚拟存在的表,所以我们可以像操作表一样操作数据)

3、开始操作

(3)修改视图

1、第一种方式(发现创建视图和修改视图这个语法一样)。

[2、第二种通过 ALTER VIEW + ... 这种方式进行修改。](#2、第二种通过 ALTER VIEW + ... 这种方式进行修改。)

3、开始操作

(4)删除视图

[1、删除就一个语法:DROP VIEW +...](#1、删除就一个语法:DROP VIEW +...)

2、开始操作


一、引言

之前博客学习了多表查询。


现在这一小节博客主要讲到的是视图(还有存储过程、触发器,还有一个存储关联的存储函数)这一类都被称为MySQL数据库当中的存储对象。

接下来首先学习------视图。

(0)这篇博客涉及的表 student 结构和数据
(1)介绍视图

视图(View)是一种虚拟存在的表。视图中我们所看到的数据并不在数据库当中实际存在。我们所看到的视图中的行和列的数据,都是来自------定义视图的时候查询中所使用的表。

(我们把这个叫基表)并且视图当中的数据是我们在使用视图的过程当中是动态生成的。

简而言之,视图不保存数据。视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

(2)创建

CREATE [ OR REPLACE ] VIEW 视图名称 [ ( 列名列表 ) ] AS SELECT 语句 [ WITH

[ CASCADED | LOCAL ] CHECK OPTION ]

(3)注意

1、语法就是CREATE [ OR REPLACE ] (replace:更换) VIEW ...

(or replace 可以省略)

如果我们要去替换某一个视图,就可以加上 or replaceVIEW 后面跟上视图名称,可以自由定义。

2、AS 关键字。视图是一张虚拟表,最终的数据是来自后面的 SELECT 语句。SELECT 语句当中,我们需要指定从哪一张表当中查询数据。SELECT 语句当中所查询的表就是这个视图所关联的基表(基础表)。

这是创建时的涉及的语法和注意与补充。

下面来演示如何创建一个视图。使用工具 DataGrip进行操作。

二、实操

首先创建一个查询控制台,操作的是数据库是 itcast

(1)创建视图

1、CREATE OR REPLACE VIEW + ...

(创建或者是替换一个视图) 视图的名称可以自由定义。

2、AS + ... 后面跟的是这个视图的来源。所以跟 SELECT 语句,也就是这个视图所封装的数据是什么,也就是封装的是 SELECT查询返回的数据。

3、这里我们演示的是展示表 student 中的 name 字段和 id 字段,而字段 no不想去展示。

4、创建成功后:

sql 复制代码
CREATE OR REPLACE VIEW stu_v_1 AS SELECT id,name FROM student WHERE id<=10;

5、我们发现在数据库 itcast会有一个视图,这个视图叫 stu_v_1 ,视图有两个字段。

(2)查询视图

查询视图有两种操作方式。

1、查看创建视图的语句
2、查看视图当中的数据(可以当作一张表去查询...因为视图就是一张虚拟存在的表,所以我们可以像操作表一样操作数据)
3、开始操作

首先先查询看看之前创建视图的操作。

(这里面包含在创建视图时,有之前没有去设定的一些默认参数,查询会查出来)

sql 复制代码
SHOW CREATE VIEW stu_v_1;

再看看视图中的数据(就和操作表一样)

sql 复制代码
SELECT * FROM stu_v_1;

当然还可以加上WHERE条件

sql 复制代码
SELECT * FROM stu_v_1 WHERE id<3;
(3)修改视图

有两种方式。

1、第一种方式(发现创建视图和修改视图这个语法一样)。

但是注意:创建视图的时候 OR REPLACE 可以不加,但是修改视图主要在这。

2、第二种通过 ALTER VIEW + ... 这种方式进行修改。
3、开始操作
sql 复制代码
CREATE OR REPLACE VIEW stu_v_1 AS SELECT id,name,no FROM student WHERE id<=10;

此时也可以通过另外一种语法进行修改操作。

sql 复制代码
ALTER VIEW stu_v_1 AS SELECT id,name FROM student;
(4)删除视图
1、删除就一个语法:DROP VIEW +...

(可以跟上可选项:如果视图存在(IF EXISTS)再进行删除这个视图的操作)

2、开始操作
sql 复制代码
DROP VIEW IF EXISTS stu_v_1;

以上就是这篇博客的内容。


其中讲到了关于视图操作的四种语法:创建、查询、修改与删除。

当然我们也发现在我们创建视图或者修改视图发现后面有一些可选项:WITH CHECK OPTION,

这个的含义下一篇博客进行学习。

相关推荐
独行soc40 分钟前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain1 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship1 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站1 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
老王笔记1 小时前
GTID下复制问题和解决
mysql
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
Lojarro3 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
梦想平凡3 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO3 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong3 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存