mysql视图

举报
别团等shy哥发育 发表于 2023/06/23 16:07:21 2023/06/23
【摘要】 一、视图概念  数据库中的视图是一个虚拟表。同真实的表一样,视图包含系系列带有名称的行和列数据。行和列数据来自于由定义视图查询所引用的表,并且在引用视图时动态生成。 二、在单表上建立视图1、首先创建基本表并插入数据create table t(quantity int,price int);insert into t values(3,50);2、创建视图:create view view...

一、视图概念

  数据库中的视图是一个虚拟表。同真实的表一样,视图包含系系列带有名称的行和列数据。行和列数据来自于由定义视图查询所引用的表,并且在引用视图时动态生成。

二、在单表上建立视图

1、首先创建基本表并插入数据

create table t(
quantity int,
price int
);
insert into t values(3,50);

2、创建视图:

create view view_t as select quantity,price,quantity*price from t;
create view view_t2(qty,price,total) as select quantity,price,quantity*price from t;

3、查看视图中的数据

select * from view_t;

在这里插入图片描述

select * from view_t2;

在这里插入图片描述

三、在多表上创建视图

1、先创建表和插入数据

create table student(
s_id int,
name varchar(40)
);

create table stu_info(
s_id int,
glass varchar(40),
addr varchar(90)
);
insert into student values(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');

insert into stu_info values(1,'wuban','henan'),(2,'liubab','hebei'),(3,'qiban','shandong');

2、创建视图stu_glass

create view stu_glass(id,name,glass) as select student.s_id,student.name,stu_info.glass
from student,stu_info where student.s_id=stu_info.s_id;

在这里插入图片描述

四、 查看视图

1、使用DESCRIBE语句查看视图的基本信息
语法:DESCRIBE 视图名
DESCRIBE一般情况下都简写成desc
         查看视图view_t的定义
在这里插入图片描述
2、使用SHOW TABLE STATUS语句查看视图的基本信息
语法: show table status like '视图名';
在这里插入图片描述
执行结果显示,Comment的值为VIEW,说明该表为视图;其他信息为NULL,说明这是一个虚表。用同样的语句可以查看数据表t的信息,执行结果如下:
在这里插入图片描述
从查询的结果来看,这里的信息包含存储引擎、创建时间等,Comment信息为空,这就是视图和表的区别。
3、使用SHOW CREATE VIEW语句查看视图的详细信息
语法:show create view 视图名
在这里插入图片描述
执行结果显示视图的名称、创建视图的语句等信息。

五、修改视图

  修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化的时候,可以通过修改视图保持与基本表的一致性。Mysql中通过create or replace view语句和alter语句来修改视图
1、使用create or replace view语句修改视图
首先通过desc查看修改之前的视图,方便比较

create or replace view view_t as select * from t;

在这里插入图片描述
从执行结果来看,相比原来视图view_t,新的试图少了一个字段。
2、使用alter语句修改视图view_t

alter view view_t as select quantity from t;

在这里插入图片描述

六、更新视图

  更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚拟表,所以其中没有数据。通过视图更新的时候都是转到基本表上进行更新的,对视图增加或者删除记录,实际上是对其基本表增加或者删除记录。
1、使用UPDATE语句更新视图view_t

update view_t set quantity=5;

更新之前先查看基本表和视图的信息
在这里插入图片描述
执行更新并查看视图和基本表的内容
在这里插入图片描述
在这里插入图片描述
  对视图view_t更新后,基本表t的内容也更新了。同样,当对基本表t更新后,另一个视图view_t2的内容也会更新。
2、向视图插入数据

insert into  t values(3,5);

在这里插入图片描述
在这里插入图片描述
  向表t中插入一条记录,通过select语句查看表t和视图view_t2,可以看到其中的内容也跟着更新,试图更新的不仅仅是数量和单价,总价也会更新。
3、注意
当视图中包含一下内容时,视图的更新操作将不能被执行:

  • 视图中不包含基本表中被定义为非空的列。
  • 在定义视图的select语句后的字段列表中使用了数学表达式
  • 在定义视图的select语句后的字段列表中使用了聚合函数。
  • 在定义视图的select语句中使用了DISTINCT、UNION、TOP、GROUP BY或HAVING字句。

七、删除视图

删除stu_glass视图

drop view if exists stu_glass;

在这里插入图片描述
可以看到,stu_glass视图已经不存在,删除成功。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。