数据库视图详解
程序员文章站
2022-05-12 18:59:27
...
数据库视图详解 - 定义: 视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,
数据库视图详解
- 定义:
视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化
- 视图的创建
SQL Server创建视图的语法:
CREATE VIEW
[ .] [ .]
view_name [ ( column [ ,...n ] ) ]
[ WITH [ ,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
::=
{ ENCRYPTION | SCHEMABINDING |
VIEW_METADATA }
WITH check OPTION 表示对视图进行UPDATE、INSERT、delete操作时要保证更新、删除、或插入的行满足视图定义中的谓词条件
- 例1:建立显示年龄大于20岁的学生学号、姓名、性别等信息的S_view1
create view S_view1
as
select sno,sname,sex
from s
where age>20 ;
- 例2:创建v_score1,要求基本表来源:S,C,SC;选择的字段为:S表中的sno、sname;C表中的cname及SC表中score;要求查询的数据为学号为20030001的学生的考试成绩。
create view v_score1
As
Select s.sno,s.sname,c.cname,sc.score
From s,c,sc
Where s.sno=sc.sno and c.cno=sc.cno and sno= “ 20030001” ;
- 例3:建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生
Create view IS_Student
AS
select Sno,Sname,Sage
from Student
where Sdept='IS'
with check option;
在上述视图上加了with check option子句,以后对该视图进行插入、修改和删除操作时,RDBMS都会自动加上Sdept='IS'
行列子集视图: 如果一个视图只是从单个基本表导出的,并且只是去掉了某些行列,但保留了主键,称之为行列子集视图如上面例1和例3就是一个行列子集视图
create view S_view1
as
select sno,sname,sex
from s
where age>20 ;
create view v_score1
As
Select s.sno,s.sname,c.cname,sc.score
From s,c,sc
Where s.sno=sc.sno and c.cno=sc.cno and sno= “ 20030001” ;
Create view IS_Student
AS
select Sno,Sname,Sage
from Student
where Sdept='IS'
with check option;
在上述视图上加了with check option子句,以后对该视图进行插入、修改和删除操作时,RDBMS都会自动加上Sdept='IS'
行列子集视图: 如果一个视图只是从单个基本表导出的,并且只是去掉了某些行列,但保留了主键,称之为行列子集视图如上面例1和例3就是一个行列子集视图
- 查询视图
视图定义好之后就可以像对基本表一样进行查询了
- 例 4 在信息系学生中查找年龄小于20的
select Sno,Sage
from IS_Student
where Sage20;
上一篇: 揭秘:魏则西离去真正的原因
下一篇: 阿里云ECS 下ngixn 配置详解
推荐阅读
-
js遍历详解(forEach, map, for, for...in, for...of)
-
使用网盘搭建svn服务器详解步骤
-
TypeScript类型声明书写详解
-
windows10+mysql8.0.11zip安装教程详解
-
mysql的innodb数据库引擎详解
-
Mysql注入中的outfile、dumpfile、load_file函数详解
-
对Python中TKinter模块中的Label组件实例详解
-
Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法
-
详解Python 定时框架 Apscheduler原理及安装过程
-
详解Docker基于已有的镜像制新的镜像