当前位置: 首页 > 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/290801/

相关文章:

  • 网站建设 pdfh网站模板
  • wordpress 建门户网站推销网站的方法
  • 获取网站访客qq号码程序下载广东省南粤交通投资建设有限公司网站
  • 个人如何做网站软件怎么做网络游戏
  • 在线做免费网站有哪些无锡网站制作哪里实惠
  • 网站建设的参考书籍wordpress怎么建商场
  • 建筑行业官方网站手机网站推广法
  • 如皋网站开发久久建筑网资料下载
  • 禅城区城乡建设局网站漳州手机网站建设公司
  • 电线电缆技术支持中山网站建设做跨境电商需要哪些条件
  • 贵州省清镇市建设学校网站爬虫搜索引擎
  • 便宜网站制作公司小程序游戏排行榜2023
  • 建设网站报价表手机wap网页游戏
  • 网站长期建设运营计划书做网站文字编辑好不好
  • 建筑工程类招聘网站在哪个网站上可以学做衣服
  • 安徽省建设厅焊工证查询网站正在建设中的网站可算违规
  • 电商网站设计公司排行榜厦门网站建设公司排名
  • 学做湘菜的视频网站wordpress 外部调用
  • 语言网站建设上海营销seo
  • 建筑设计网站模板南宁 网站开发
  • 上海市建设监理协会网站查询前端程序员招聘信息
  • 北京品牌网站开发怎么建设自己淘宝网站首页
  • 计算机专业设计一个网站正版win10做win7系统下载网站
  • 瓯海建设网站网站建设项目安排计划表
  • 龙岗网站建设找深一企业网络组网
  • 网站开发 动易微信小程序怎么关闭未成年模式
  • 国外企业网站模板素马网站建设费用差距
  • 泰州网站建设价位wordpress主题tiger
  • dede 手机网站wordpress 常用工具
  • 怎么做网站的seo各大设计网站