SQL中视图是什么?该如何创建和使用?
2018-01-19| 程成| 1549| 0| 其他

SQL 学习中,视图这个东西,我们也经常看到,例如 word 中就有视图,我们不难发现,视图似乎是一种显示方式,就像 word 一样,有几种显示版面,那么 SQL 中的视图又该如何定义呢?今儿我要学习一下,做个笔记。这是在继 SQL数据库高级查询 和 子查询 之后的又一个重要内容。


一、什么是视图


视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询 select 语句组成。



二、视图的特点


视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行 insert,update,delete 操作。

视图不能被修改,表修改或者删除后应该删除视图再重建。

视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。

视图可以被嵌套,一个视图中可以嵌套另一个视图。

视图不能索引,不能有相关联的触发器和默认值,sql server 不能再视图后使用 order by 排序。


举例:查询“心理学”考试成绩大于80的学生的“学号”,“姓名”,“所属院系”。

Student(学号,姓名,性别,所属院系)

Course(课号,课名,学分)

Score(学号,课号,考试成绩,平时成绩)

这需要通过联合查询来解决问题了,参数不足,只得如此,来写一句语句试试:

Select st.学号,st.姓名,st.所属院系 from student as st,,course as co,score as sc

Where co.课名='心理学' and sc.考试成绩>80 and st.学号=sc.学号 and co.课号=sc.课号

这条语句看起来很长,有一点点复杂,如果每次都要先写这条语句查询后再对查询的结果操作,就会显得复杂,创建一个视图就能解决这个问题了。


创建视图:

Create view vw1 as

Select st.学号,st.姓名,st.所属院系 from student as st,,course as co,score as sc

Where co.课名='心理学' and sc.考试成绩>80 and st.学号=sc.学号 and co.课号=sc.课号

这样就可以世界查看视图,查看数据了。



三、视图的功能


1,简化用户操作

2,能以不同的角度观察同一个数据库

3,对重构数据库提供了逻辑独立性:利用视图将需要的数据合并或者筛选,但是不影响原表的数据和结构

4,对机密数据提供安全保护:可以建立不同的视图对应不同的用户,以达到安全的目的。


视图显示如下:

image.png


建立视图的语法:

Create view 视图名称[(字段1)(字段2)(字段3)...]

AS

Select 查询语句

[with check option]

参数:[with check option] 可选项,防止用户对数据插入、删除、更新是操作了视图范围外的基本表的数据。


删除视图的语法:

Drop view 视图名称



原文地址:http://blog.csdn.net/lefter1986/article/details/10981703





×
作者:程成
QQ:492245711