IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL视图 -> 正文阅读

[大数据]SQL视图

视图

视图是一个或几个基本表(或视图)导出的表,与基本表不同,是一个虚表
数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中,一旦基本表中的数据发生变化,从视图中查询出的数据也随之改变。

定义视图

  • 创建视图
Create view zb_s
as
Select sno, sname, birth, college 
from s
where college ='植保'
  • 删除视图
    该语句从数据字典中删除指定的视图定义
    视图删除之后,由该视图导出的其他视图定义仍然在字典中,但已不能使用,必须使用语句删除。删除基本表之后,由该基本表导出的所有视图定义也都必须使用语句删除
drop view <视图名>;
  • 行列子集视图
    一个视图是从单个基本表导出,只是去掉了某些行和列,但保留了主码
  • with check option的视图
    透过该视图进行的更新操作要符合where的条件
    比如下面的例子中,如果插入一个college属性值不为‘信息’的学生,则会操作失败
    使用update语句也要在修改之后能够被该视图查出来,否则失败
    当查询语句中没有where语句时使用with check option是多余的
Create view xx_s
as
Select sno, sname, birth, college 
from s
where college ='信息'
with check option;
  • 基于视图的视图
    from子句中选择视图即可
create view sj_sc2 
as
select sno, sname, grade
from sj_sc
where grade>90;
  • 带表达式的视图
create view s_age(sno, sname, sage) 
as
select sno, sname, 2021-year(sbirth)
from s;
  • 建立分组视图
create view sc_avg_grade(sno, gavg)
as
select sno, avg(grade)
from sc
group by sno;

查询视图

视图定义以后,用户可以像对基本表一样对视图进行查询

  • 视图消解:将用户执行的对视图的查询,在DBMS内部转换成对导出视图的基本表的查询

原语句:

select sno, sbirth
from zb_s
where sbirth>str_to_date('1994-01-01', '%y-%m-%d')

视图的定义

create view xx_s
as
select sno,sname,birth,college 
from s
where college= '信息';

视图消解后

select sno, birth
from s
where college='信息' and
birth>to_date('1994/01/01', 'yyyy/mm/dd');

更新视图

通过视图对数据进行增删改,由于视图是虚表,更新最终要转换成对基本表的更新,同样也使用了视图消解的原理。
更新语句

update xx_s
set sname='张三'
where sno='04003';

视图的定义

create view xx_s
as
select sno,sname,birth,college
from s
where college='信息';

视图消解后

update s
set sname='张三'
where sno='04003' and college='信息'

并不是所有的视图都是可更新的,对有些视图的更新不能唯一地有意义地转换成相对应基本表的更新
一般行列子集视图是可更新的
比如以下案例中修改学生平均成绩,就会报错:

create view sc_avg_grade(sno, gavg)
as
select sno, avg(grade)
from sc
group by sno;

update sc_avg_grade 
set gavg=90
where sno='04001';

视图的作用

  • 简化用户的操作
  • 对重构数据库提供了一定程度的逻辑独立性
    在下图情况下,若原数据库重构,通过建立不同的视图,可以使外模式保持不变,从而对原表的查询程序不必修改
    请添加图片描述
    请添加图片描述
  • 视图能够对机密数据提供安全保护
  • 适当利用视图可以更清晰地表达查询
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-12-26 22:16:11  更:2021-12-26 22:18:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:42:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码