当前位置: 首页 > news >正文

观山湖区网站建设自媒体平台注册入口账

观山湖区网站建设,自媒体平台注册入口账,海口市网站开发,网站服务器安全部署文章目录 前言1.什么是视图?2.创建视图3. 使用视图4. 修改数据4.1.注意事项 5. 删除视图6.视图的优点 前言 前面我们学习了索引,这次我们来学习视图 1.什么是视图? 视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询…

文章目录

  • 前言
  • 1.什么是视图?
  • 2.创建视图
  • 3. 使用视图
  • 4. 修改数据
    • 4.1.注意事项
  • 5. 删除视图
  • 6.视图的优点


前言

前面我们学习了索引,这次我们来学习视图


1.什么是视图?

视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询结果集。视图本身不存储数据,而是通过执行查询来动态生成数据。用户可以像操作普通表一样使用视图进行查询、更新和管理。视图本身并不占用物理存储空间,它仅仅是一个查询的逻辑表示,物理上它依赖于基础表中的数据。

2.创建视图

语法:

create view view_name [(column_list)] as select_statement

3. 使用视图

例如:查询用户的所有信息和考试成绩

select s.student_id,s.name,cls.class_id,cls.name,c.course_id,c.name,sc.score
from student s,class cls,course c,score sc
where s.class_id = cls.class_id
and sc.student_id = s.student_id
and sc.course_id = c.course_id
order by s.student_id;

在这里插入图片描述
所有有这样开发需求的程序员,都需要写这么复杂的SQL,为此我们为上面建立一个视图。

create view v_student_score as(
select s.student_id,s.name,cls.class_id,cls.name,c.course_id,c.name,sc.score
from student s,class cls,course c,score sc
where s.class_id = cls.class_id
and sc.student_id = s.student_id
and sc.course_id = c.course_id
order by s.student_id
);

在这里插入图片描述
改进的语句:

create view v_student_score as(
select 
s.student_id,
s.name as student_name,
cls.class_id,
cls.name as class_name,
c.course_id,
c.name as course_name,
sc.score
from student s,class cls,course c,score sc
where s.class_id = cls.class_id
and sc.student_id = s.student_id
and sc.course_id = c.course_id
order by s.student_id
);

使用视图

select * from v_student_score;

在这里插入图片描述
为了解决上面出现重复列的问题,也可以在视图中指定列名

create view v_student_score_v1
(id,name,class_id,class_name,course_id,course_name,score)as(
select s.student_id,s.name,cls.class_id,cls.name,c.course_id,c.name,sc.score
from student s,class cls,course c,score sc
where s.class_id = cls.class_id
and sc.student_id = s.student_id
and sc.course_id = c.course_id
);

在这里插入图片描述

4. 修改数据

  • 通过真实表修改数据,会影响视图

在这里插入图片描述
将上面的数据改为 99,并观察视图的数据

update score set score = 99 where student_id = 1 and course_id = 1;

在这里插入图片描述

select * from score;
select * from v_student_score order by id;

在这里插入图片描述

  • 通过视图修改数据会影响基表
    如果修改视图中的数据,会影响基表吗?
select * from v_student_score;

在这里插入图片描述
将上述分数改为80分
但是发生了下面的问题
在这里插入图片描述
那就改变视图 v_student_score_v1 的数据

update v_student_score_v1 set score where id = 1;

在这里插入图片描述观察视图和基础表的数据

select * from v_student_score_v1 order by id asc;

在这里插入图片描述

select * from score where student_id = 1;

在这里插入图片描述
因此,不论更新了视图还是基础表,都会相互被影响,查询出来的数据都是最新结果

4.1.注意事项

  • 修改真实表会影响视图,修改视图同样也会影响真实表
  • 以下视图不可更新
    • 创建视图时使用聚合函数的视图
    • 创建视图时使用distinct
    • 创建视图时使用GROUP BY 以及HAVING子句
    • 创建视图时使用UNIONUNION ALL
    • 查询列表中使用子查询
    • 在FROM子句中引用不可更新视图

5. 删除视图

drop view view_name;

6.视图的优点

1.简单性: 视图可以将复杂的查询封装成一个简单的查询。例如,针对一个复杂的多表连接查询,可以创建一个视图,用户只需查询视图而无需了解底层的复杂逻辑。
2. 安全性: 通过视图,可以隐藏表中的敏感数据。例如,一个系统的用户表中,可以创建一个不包含密码列视图,普通用户只能访问这个视图,而不能访问原始表。
3. 逻辑数据独立性: 视图提供了一种逻辑数据独立性,即使底层表结构发生变化,只需修改视图定义,而无需修改依赖视图的应用程序。使用到应用程序与数据库的解耦
4. 重命名列: 视图允许用户重命名列名,以增强数据的可读性


http://www.yayakq.cn/news/641998/

相关文章:

  • 河北辛集住房和城乡建设厅网站定制家具网站源代码
  • 苏州新区网站建设徐州模板建站定制网站
  • 网站即将 模板企业网站推广建设
  • 写作网站设定宝塔面板wordpress
  • 凉山建设网站建设行业
  • 讯美 深圳网站建设微信小程序开发流程图
  • 无锡网站公司电话国外做连接器平台网站
  • 无锡高端网站建设机构社区智慧警务网站如何推进警务室建设方案
  • 腾讯建设网站视频下载贷款网站怎么做的
  • 广州 Wix网站开发wordpress备份工具
  • 广西网站建设timkee佛山做网站建设价格
  • 如何提高网站的排名石碣网站仿做
  • 公司做网站的费用如何记账8x8x域名解析ip地址查询
  • 做配音的网站宁波网站制作首推蓉胜网络好
  • 申请网站做自己的产品长春公司建站模板
  • 邢台做网站服务义乌的论坛网站建设
  • wordpress更换域名首页无法访问郑州厉害的seo顾问
  • 每天一篇好文章网站网站后台无法设置
  • 建设企业网站的原因2021中国建筑企业500强排名
  • 爱站工具的功能重庆渝中区企业网站建设公司
  • h5做的网站有哪些wordpress付费主题国内优秀
  • 网站开发有哪些书籍网站服务器是什么东西
  • 电商网站的支付功能常熟建设局网站首页
  • 长沙建设网站的公司中国空间站有几个舱段
  • 自己做平台网站优质网站策划
  • 网站建设维护是做什么的济南商城网站建设
  • 信息门户网站开发合同网站设计培训学校
  • 搭建网站服务器阿里云服务器怎么部署网站
  • 三水住房和城乡建设局的网站阿里网站服务器
  • 中小学生在线做试卷的网站icp是什么意思啊