资讯专栏INFORMATION COLUMN

SQL干货篇三

Enlightenment / 1232人阅读

摘要:干货篇三创建视图视图名列名列名子查询子查询可以是语句或者包含子句,具体情况而定,视图名是一定要有的,列名可以省略,如果省略的话则是由子查询中的目标列的相关字段组成,当然也可以自己指定,表示如果视图或者参照表执行时,那么视图或者参照表会随着变

SQL干货篇三 创建视图

create view <视图名>[(列名),(列名)...] as <子查询> [with check option]

子查询可以是select语句或者包含order by子句,具体情况而定,视图名是一定要有的,列名可以省略,如果省略的话则是由子查询中的目标列的相关字段组成,当然也可以自己指定,with check option表示如果视图或者参照表执行insert,update,delete时,那么视图或者参照表会随着变化,也就是两个绑定在一起的意思,当然也可以选择不用,那么视图的增删改就和参照表没有关系了

实例

建立在一个表上

create view IS_student as select Sno,Sname,Sage where Sdept="IS"
with check option ;   /*将所有的IS系的学生学号建立一个视图IS_student,其中的列名是Sno,Sname,Sage*/

建立在多个表上

create view IS_Grade(Sno,Sname,Grade) 
as select student.Sno,Sname,Grade from student,SC
where Sdept="IS" and student.Sno=SC.Sno;           /*建立在两个表上的视图,可以看出这里已经指出指定的列名,但是这个列名并不是固定的,可以根据具体的含义来指定*/

定义一个带有表达式的视图

create view BT_S(Sno,Sname,Sbirth) 
as select Sno,Sname,2014-Sage from student    /*这里的2014-Sage是用来计算出生日期的*/
with check option;

聚集函数的视图

create view BT(Sno,Gavg) 
as select Sno,AVG(Grade) from SC Group by Sno;  /*这里的AVG(Grade)是用来计算平均成绩的,Group by是用来根据学号分组,这里就是求同一个人的多门学科的平均成绩*/
删除视图

Drop view <视图名>,这里的CASCADE表示如果还导出了其他的视图,那么加上CASCADE就会全部删除

实例

Drop view IS_Sdept; 删除视图

Drop view IS_Sdept CASCADE; 删除视图和其导出视图

查询视图

查询视图和查询表是一样的,请参照我前两章讲的SQL语法

更新视图

视图的更新包括insert,delete,update,这个和基本表的操作是一样的

注意:


并不是所有的视图都可以更新的,比如上面根据学生多科平均成绩建立的视图,这里如果将视图中的平均成绩更新了,那么参照表的数据就不能对应的更新了,这就会不允许更新,当然这是在添加了with check option语句的情况下

如果添加了with check option语句,那么对视图的更新就会对应转换成对基本表的更新

各个系统对视图的更新还有进一步的规定,比如DB2规定:

如果视图是由两个以上的基本表导出,那么就不可以更新

如果视图来自字段或者表达式,那么就不允许对此视图执行insert,update,但是可以执行delete

如果定义中有order by子句,那么不可以更新视图

更多的文章请看本人的博客

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32134.html

相关文章

  • SQL干货篇三

    摘要:干货篇三创建视图视图名列名列名子查询子查询可以是语句或者包含子句,具体情况而定,视图名是一定要有的,列名可以省略,如果省略的话则是由子查询中的目标列的相关字段组成,当然也可以自己指定,表示如果视图或者参照表执行时,那么视图或者参照表会随着变 SQL干货篇三 创建视图 create view [(列名),(列名)...] as [with check option] 子查询可以是se...

    ivan_qhz 评论0 收藏0
  • 关于PHP加解密之终扯到ECDH了(API安全加强篇三

    摘要:很明显,非对称加密的极大的消耗成了一种瓶颈。其中,利用非对称加密的方案大概就是我前面说的那样,伪代码已经展示过了。 其实,前面两篇翻来覆去只为叨逼叨叨逼叨两件事情: 对称加解密,典型算法有AES、DES、3DES等等 非对称加解密,典型的算法有RSA、DSA、ECDH等等 但是,我知道大家最讨厌在看这种文章的时候冒出来的一坨椭圆曲线、素数、质数等等这样的玩意,反正看也看不懂,理解也...

    lcodecorex 评论0 收藏0
  • 并发编程中级篇三----并行设计模式----生产者-消费者模式

    摘要:生产者消费者模式是一个经典的多线程设计模式,它为多线程的协作提供了良好的解决方案。生产者消费者模式中的内存缓冲区的主要功能是数据在多线程间的共享。 生产者-消费者模式是一个经典的多线程设计模式,它为多线程的协作提供了良好的解决方案。在生产者-消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程负责提交用户请求,消费者线程负责处理用户请求。生产者和消费者之间通过...

    Aldous 评论0 收藏0
  • 进击webpack4 (基础篇三:配置 二)

    摘要:多页面配置进击基础篇一进击基础篇二配置多页面配置多页面配置即是多入口需要写成对象形式,注意数组形式会变成多入口单页面,因为打包之后的会合并成一个入口文件出口不能写同一个文件用代替以上配置并不能多页面,还需要个模板,并且指明各自的代码块去生成 多页面配置 进击webpack 4 (基础篇一) 进击webpack4 (基础篇二:配置) ## 多页面配置 ## 多页面配置即是多入口 entr...

    sourcenode 评论0 收藏0
  • JDBC干货篇一

    摘要:干货篇一基础的全称是,即数据库连接,它是一种可以执行语句的。将光标移动到上一行,如果超过结果集的范围则返回。列索引从开始,意味着行中的第一列是,第二列是,以此类推。 JDBC干货篇一 JDBC基础 JDBC的全称是Java Database Connectivity,即Java数据库连接,它是一种可以执行SQL语句的Java API。程序可通过JDBC API连接到关系数据库,并使用...

    hiyang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<