首页 > 数据库 >SQL基础总结(十一):视图

SQL基础总结(十一):视图

时间:2023-09-14 14:02:10浏览次数:36  
标签:语句 十一 DBMS 联结 视图 SQL VIEW


 

 

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)

--------------------------------

除了ORDER BY子句通常是被禁止的,几乎所有有效的SELECT语句都可以定义视图。

可以嵌套视图,视图的SELECT语句可以从其他视图中检索数据。

将包含大量运算的查询存储为视图,就可以通过查询视图重复这些运算。

视图不能引用自身。

有别于基础表,视图不支持约束。有些DBMS允许对视图建立索引。

因为视图不存储数据,DBMS必须在每次引用时执行它们。尤其是嵌套视图,可能严重的降低效率。

CREATE VIEW view AS select_statement;

视图存在于SQL语句的生存期,临时表存在于进程的生存期。

标准SQL没有ALTER VIEW语句,如果在建立视图之后,基础表或视图发生了变化,就要删除并重建这个视图。然而,大多数DBMS都支持非标准的ALTER VIEW语句。

 

通过视图修改数据:

可修改视图:指可以使用插入、更新和删除操作来改变基础表中数据的视图。对可修改视图做的任何变化都将明确地传递到基础表。

不可修改(只读)视图:不支持插入、修改和删除操作的视图,因为对数据的改动可能是含糊不清的,要改变出现在只读视图的数据,必须直接修改基础表(或通过其它可修改视图)。

 

单一表视图总是可更新的。

DBMS检查基础表的联结和多表视图的引用完整性约束来决定视图是否可更新。以下这些类型的查询可以定义为可更新得视图:

一对一内联结。

一对一外联结。

一对多内联结。

一对多外联结。

多对多联结。

UNION和EXCEPT查询。

 

可更新视图必须包含基本表的键来保证每个视图指向基本表的一行。

可更新视图不包含的列必须可以为空或在基础表有一个默认值,以便DBMS能够在插入时构建整行。

更新值必须符合基础表列的限制,如数据类型、可否为空及其它约束。

 

删除视图:DROP VIEW view;

DROP VIEW显示删除视图。

标签:语句,十一,DBMS,联结,视图,SQL,VIEW
From: https://blog.51cto.com/u_6978506/7469766

相关文章

  • SQL基础总结(九):插入更新删除行及创建更新删除表
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------插入更新删除行 使用INSERT插入行INSERTINTOtableVALUES(value1,value2,value3…);INSERTINTOtable(col......
  • SQL基础总结(八):集合操作
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------使用UNION合并行UNION操作将两个查询返回的结果合并成一个结果。UNION从结果中去掉重复的行,UNIONALL不去掉重......
  • SQL基础总结(十):索引
      本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------对于以下列创建索引是恰当的,这些列经常被:查询、排序、分组、联结、用来计算顺序统计(MIN、MAX或中值)。对于......
  • MySQL篇:bug2_ Navicate无法添加或更新子行-外键约束失败
    问题产生原因Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构。解决办法解决方法是在Mysql中取消外键约束:SETFOREIGN_KEY_CHECKS=0;再添加值,然后再设置外键约束:SETFOREIGN_KEY_CHECKS=1;查看当前FOREIGN_KEY_CHECKS的值可用如下命令:SELECT@@FOR......
  • N天爆肝数据库——MySQL(2)
    (N天爆肝数据库——MySQL(2))链接:link这是csdn专栏链接,大家可以看一看,提提意见本篇文章,主要对DMLDQL进行知识总结和学习。期待和大家一起学习进步。DML-介绍DML(数据库操作语言),用来对数据库中表的数据记录进行增删改操作。添加数据(INSERT)修改数据(UPDATE)删除数据(DELET......
  • Citrix SQL数据库查询和替换修改字段
    1如下图,右键指定库新建查询即可2粘贴底部代码后,如下,点击执行查询即可--查看Citrix站点数据库如下表内容字段select*fromchb_config.Controllers;select*fromADIdentitySchema.Services;select*fromHostingUnitServiceSchema.Services;select*fromAppLibrarySchem......
  • SQL Server关于AlwaysOn的理解-读写分离的误区(一)
    前言很多人认为AlwaysOn在同步提交模式下数据是实时同步的,也就是说在主副本写入数据后可以在辅助副本立即查询到。因此期望实现一个彻底的读写分离策略,即所有的写语句在主副本上,所有的只读语句分离到辅助副本上。这是一个认知误区,本文通过原理和测试进行解释。实现原理从下图......
  • oracle 分页 sql
    select*from(select*from(selectt.*,rownumlinenumfromgal_messagest)rwherer.linenum<200)awherea.linenum>100Note:一定要给rownum一个别名linenum,否则r.rownum或a.rownum会出错.OracleConnectBy用法参照:[url]http://www.cublog.cn/u1/54706/showart......
  • mysql 的用法
    MySQL是一个由瑞典MySQLAB公司开发的关系型数据库管理系统,属于Oracle旗下产品。它是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL......
  • MySQL 和 Python:无缝结合的数据库应用
    MySQL和Python都是广泛应用于软件开发的重要工具。MySQL是一种强大的关系型数据库管理系统,而Python则是一种灵活的高级编程语言。它们之间的紧密集成为开发人员提供了强大的数据存储和操作能力。本文将探讨MySQL和Python之间的关系,并提供一些示例代码来演示如何在Python......