首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >mysql视图

mysql视图

作者头像
别团等shy哥发育
发布于 2023-02-25 17:21:42
发布于 2023-02-25 17:21:42
4.2K0
举报
一、视图概念

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

二、在单表上建立视图

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

代码语言:javascript
复制
create table t(
quantity int,
price int
);
insert into t values(3,50);

2、创建视图:

代码语言:javascript
复制
create view view_t as select quantity,price,quantity*price from t;
代码语言:javascript
复制
create view view_t2(qty,price,total) as select quantity,price,quantity*price from t;

3、查看视图中的数据

代码语言:javascript
复制
select * from view_t;
代码语言:javascript
复制
select * from view_t2;
三、在多表上创建视图

1、先创建表和插入数据

代码语言:javascript
复制
create table student(
s_id int,
name varchar(40)
);

create table stu_info(
s_id int,
glass varchar(40),
addr varchar(90)
);
代码语言:javascript
复制
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

代码语言:javascript
复制
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查看修改之前的视图,方便比较

代码语言:javascript
复制
create or replace view view_t as select * from t;

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

代码语言:javascript
复制
alter view view_t as select quantity from t;
六、更新视图

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

代码语言:javascript
复制
update view_t set quantity=5;

更新之前先查看基本表和视图的信息

执行更新并查看视图和基本表的内容

  对视图view_t更新后,基本表t的内容也更新了。同样,当对基本表t更新后,另一个视图view_t2的内容也会更新。 2、向视图插入数据

代码语言:javascript
复制
insert into  t values(3,5);

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

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

删除stu_glass视图

代码语言:javascript
复制
drop view if exists stu_glass;

可以看到,stu_glass视图已经不存在,删除成功。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 一、视图概念
  • 二、在单表上建立视图
  • 三、在多表上创建视图
  • 四、 查看视图
  • 五、修改视图
  • 六、更新视图
  • 七、删除视图
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档